aboutsummaryrefslogtreecommitdiff
path: root/include/cps/Parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/cps/Parser.h')
-rw-r--r--include/cps/Parser.h13
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();
};