#ifndef PARSER_HPP #define PARSER_HPP #include #include #include "token.hpp" #include "ast.hpp" class Parser { std::vector tokens; size_t position; bool error_flag; std::unordered_map> defs; public: Parser(std::vector); const std::unordered_map>& definitions() const; const Token& peek() const; const Token& get(); bool accept(TokenType t); void expect(TokenType t); bool tryParseDefinition(); std::unique_ptr parseSimple(); std::unique_ptr parseApplication(); std::unique_ptr parseTerm(); std::unique_ptr parse(); std::vector> parseProgram(); }; #endif // PARSER_HPP