diff options
Diffstat (limited to 'include/cps/Parser.h')
| -rw-r--r-- | include/cps/Parser.h | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/include/cps/Parser.h b/include/cps/Parser.h index c24184f..1b27a22 100644 --- a/include/cps/Parser.h +++ b/include/cps/Parser.h @@ -3,22 +3,29 @@ #include "cps/AST.h" #include <vector> #include <memory> +#include <map> namespace cps { class Parser { Lexer &Lex; int CurTok; + + std::map<char, int> BinopPrecedence; int getNextToken(); + int GetTokPrecedence(); + std::unique_ptr<ExprAST> ParseExpression(); + std::unique_ptr<ExprAST> ParsePrimary(); + std::unique_ptr<ExprAST> ParseBinOpRHS(int ExprPrec, std::unique_ptr<ExprAST> LHS); + std::unique_ptr<ExprAST> ParseNumberExpr(); - std::unique_ptr<ExprAST> ParseParenExpr(); // 预留 std::unique_ptr<ExprAST> ParseIdentifierExpr(); + std::unique_ptr<ExprAST> ParseParenExpr(); public: - Parser(Lexer &L) : Lex(L) { getNextToken(); } - + Parser(Lexer &L); std::vector<std::unique_ptr<StmtAST>> Parse(); }; |
