#pragma once #include "lexer/token.hpp" #include "parser/ast_node.hpp" #include class Parser { public: explicit Parser(const std::vector& tokens); std::unique_ptr parse(); private: std::vector tokens_; int position_; std::unique_ptr parseStatement(); std::unique_ptr parseExpression(); std::unique_ptr parseAddSub(); std::unique_ptr parseMulDiv(); std::unique_ptr parsePrimary(); std::unique_ptr parseDeclaration(); std::unique_ptr parseAssignment(); Token advance(); Token peek(); bool isAtEnd(); void error(std::string s); };