#ifndef PARSER_H #define PARSER_H #include #include #include #include "Token.h" #include "ContextManager.h" #include "AST/AllTypesOfASTNodes.h" #include "AST/AST.h" using namespace std; class Parser { public: Parser(ContextManager * context); ContextManager * context; virtual ~Parser(); void interpret(); string error_message; void add_tokens(vector tokens); string show_tokens(); AST tree; ProgramNode * program; void erase_all(); bool is_function_name(); protected: private: Token current_token; string tok_value; vector token_stream; unsigned int position_in_stream; bool in_statement; bool read_next(); bool peek(string s); bool accept(string s); bool expect(string s); bool is_type(); void error(string s); ASTStatement * statement(); ASTExpression * log_expr(); ASTExpression * mul_expr(); ASTExpression * add_expr(); ASTExpression * prim_expr(); ASTExpression * postfix_expr(); ASTExpression * rel_expr(); ASTExpression * eq_expr(); ASTExpression * expr(); }; #endif // PARSER_H