diff --git a/src/parser.cpp b/src/parser.cpp index 9c783b5..19736cd 100644 --- a/src/parser.cpp +++ b/src/parser.cpp @@ -3,29 +3,14 @@ #include "ast/variable_expression_ast.h" #include "parser.h" +#include + obelisk::Parser::Parser() { - lexer_ = new obelisk::Lexer(); + lexer_ = std::unique_ptr {new obelisk::Lexer()}; } -obelisk::Parser::Parser(obelisk::Lexer* lexer) -{ - if (lexer != nullptr) - { - lexer_ = lexer; - } - else - { - Parser(); - } -} - -obelisk::Parser::~Parser() -{ - delete lexer_; -} - -obelisk::Lexer* obelisk::Parser::getLexer() +std::unique_ptr& obelisk::Parser::getLexer() { return lexer_; } @@ -91,7 +76,7 @@ std::unique_ptr obelisk::Parser::parseNumberExpression() auto result = std::make_unique( getLexer()->getNumberValue()); getNextToken(); - return std::move(result); + return result; } std::unique_ptr diff --git a/src/parser.h b/src/parser.h index 2a00bbc..d89cec8 100644 --- a/src/parser.h +++ b/src/parser.h @@ -13,7 +13,7 @@ namespace obelisk class Parser { private: - obelisk::Lexer* lexer_; + std::unique_ptr lexer_; int currentToken_; void setCurrentToken(int currentToken); @@ -35,10 +35,8 @@ namespace obelisk public: Parser(); - Parser(obelisk::Lexer* lexer); - ~Parser(); - obelisk::Lexer* getLexer(); + std::unique_ptr& getLexer(); int getCurrentToken();