diff --git a/include/parser/Scope.h b/include/parser/Scope.h new file mode 100644 index 0000000000000000000000000000000000000000..186f2b03ce60a5c4f8fd9d4699be50f72925e6cb --- /dev/null +++ b/include/parser/Scope.h @@ -0,0 +1,4 @@ +/* +Create a Scope class with a singleton accesor. See Logger for example of singleton. +Create a global scope with HasMap, some util functions? key string value NodeValue / LiteralNode. +*/ diff --git a/source/parser/Parser.cc b/source/parser/Parser.cc index 1abb26d01128a22a16966dcccea173816f5783d7..c41db9220846074f97a00ac78a854d0c25ea02af 100644 --- a/source/parser/Parser.cc +++ b/source/parser/Parser.cc @@ -219,10 +219,10 @@ Node* Parser::parse_unary() Node* Parser::parse_factor() { LOG_DEBUG("Parse factor"); - if (match(TokenType::IDENTIFIER)) + if (check(TokenType::IDENTIFIER)) return parse_identifier(); - else if (match(TokenType::NUMB) || match(TokenType::REAL) || match(TokenType::BOOL) || match(TokenType::CHAR) || - match(TokenType::TEXT)) + else if (check(TokenType::NUMB) || check(TokenType::REAL) || check(TokenType::BOOL) || check(TokenType::CHAR) || + check(TokenType::TEXT)) { return parse_literal(); } @@ -239,7 +239,8 @@ Node* Parser::parse_factor() Node* Parser::parse_literal() { LOG_DEBUG("Parse literal"); - return new LiteralNode(peek_prev().get_location(), NodeValue(peek_prev().get_value())); + Token literal{next()}; + return new LiteralNode(literal.get_location(), NodeValue(literal.get_value())); } Node* Parser::parse_identifier()