diff options
-rw-r--r-- | CMakeLists.txt | 35 | ||||
-rw-r--r-- | clc.cc | 2 | ||||
-rw-r--r-- | src/tree.cc | 29 |
3 files changed, 37 insertions, 29 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 763be29..fbbb8fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,41 +3,50 @@ project(SimpleParser) set( CMAKE_CXX_FLAGS - "-std=c++14 -W -Wall -Wextra -Winline -pedantic" + "${CMAKE_CXX_FLAGS} -std=c++17 -W -Wall -Wextra -Winline -pedantic" ) add_library( SimpleParser SHARED - src/nodes.cc - src/tree.cc - src/utils.cc - src/parser.cc + src/nodes.cc + src/tree.cc + src/utils.cc + src/parser.cc ) add_executable( tests - test.cc + test.cc ) add_executable( clc - clc.cc + clc.cc ) target_link_libraries( tests - SimpleParser - gtest + SimpleParser + gtest ) target_link_libraries( clc - SimpleParser - boost_program_options + SimpleParser + boost_program_options +) + +install( + TARGETS + clc + DESTINATION + bin ) add_custom_command( - TARGET tests - POST_BUILD COMMAND ./tests + TARGET + tests + POST_BUILD COMMAND + ./tests ) @@ -119,4 +119,4 @@ int main(int argc, char** argv) { } else { return 1; } -} +}
\ No newline at end of file diff --git a/src/tree.cc b/src/tree.cc index 8e29255..23294da 100644 --- a/src/tree.cc +++ b/src/tree.cc @@ -1,8 +1,7 @@ #include "tree.h" #include "exceptions.h" -#include <boost/optional.hpp> - +#include <optional> #include <sstream> #include <limits> #include <stack> @@ -12,18 +11,18 @@ namespace { using SimpleParser::Node; - boost::optional<Node*> top(const std::stack<Node*> stack) { + std::optional<Node*> top(const std::stack<Node*> stack) { if ( !stack.empty() ) { - return boost::make_optional<Node*>( + return std::make_optional<Node*>( stack.top() ); } else { - return boost::optional<Node*>(); + return std::optional<Node*>(); } } - boost::optional<Node*> pop(std::stack<Node*>& stack) { - if ( boost::optional<Node*> node{ top(stack) } ) { + std::optional<Node*> pop(std::stack<Node*>& stack) { + if ( std::optional<Node*> node{ top(stack) } ) { stack.pop(); return node; @@ -130,7 +129,7 @@ Node* Tree::buildTree(const std::string& term) { this->addNode<OperatorNode>(elementToken) ); } else { - if ( boost::optional<Node*> lastNode{ top(operators) } ) { + if ( std::optional<Node*> lastNode{ top(operators) } ) { OperatorNode*const lastOperator{ static_cast<OperatorNode*const>(*lastNode) }; @@ -141,9 +140,9 @@ Node* Tree::buildTree(const std::string& term) { this->addNode<OperatorNode>(elementToken) ); } else { - boost::optional<Node*> currentOperator{ pop(operators) }; - boost::optional<Node*> rightChild { pop(operands) }; - boost::optional<Node*> leftChild { pop(operands) }; + std::optional<Node*> currentOperator{ pop(operators) }; + std::optional<Node*> rightChild { pop(operands) }; + std::optional<Node*> leftChild { pop(operands) }; if ( currentOperator && rightChild && leftChild ) { static_cast<OperatorNode*const>( @@ -204,9 +203,9 @@ Node* Tree::buildTree(const std::string& term) { } while ( !operators.empty() ) { - boost::optional<Node*> currentOperator{ pop(operators) }; - boost::optional<Node*> rightChild { pop(operands) }; - boost::optional<Node*> leftChild { pop(operands) }; + std::optional<Node*> currentOperator{ pop(operators) }; + std::optional<Node*> rightChild { pop(operands) }; + std::optional<Node*> leftChild { pop(operands) }; if ( currentOperator && rightChild && leftChild ) { static_cast<OperatorNode*const>( @@ -222,7 +221,7 @@ Node* Tree::buildTree(const std::string& term) { } } - if ( boost::optional<Node*> rootNode{ pop(operands) } ) { + if ( std::optional<Node*> rootNode{ pop(operands) } ) { return *rootNode; } else { throw operator_exception(); |