bl-compiler

compiler for the bl programming language.
Log | Files | Refs | README

parser.hpp (689B)


      1 #pragma once
      2 
      3 #include "lexer/token.hpp"
      4 #include "parser/ast_node.hpp"
      5 
      6 #include <vector>
      7 
      8 class Parser {
      9 public:
     10     explicit Parser(const std::vector<Token>& tokens);
     11     std::unique_ptr<Program> parse(); 
     12 
     13 private:
     14     std::vector<Token> tokens_;
     15     int position_;
     16 
     17     std::unique_ptr<ASTNode> parseStatement();
     18     std::unique_ptr<ASTNode> parseExpression();
     19     std::unique_ptr<ASTNode> parseAddSub();
     20     std::unique_ptr<ASTNode> parseMulDiv();
     21     std::unique_ptr<ASTNode> parsePrimary();
     22     std::unique_ptr<ASTNode> parseDeclaration();
     23     std::unique_ptr<ASTNode> parseAssignment();
     24     Token advance();
     25     Token peek();
     26     bool isAtEnd();
     27     void error(std::string s);
     28 };