aboutsummaryrefslogtreecommitdiff
path: root/include/cps/Parser.h
diff options
context:
space:
mode:
authorov-4 <hausemasterstream@gmail.com>2026-01-29 10:41:27 +0000
committerov-4 <hausemasterstream@gmail.com>2026-01-29 10:41:27 +0000
commitf1fedc36ec54578be4983d2fc6abee999dbc51c2 (patch)
tree959fae06a583e96a219527b7032609f435f9108b /include/cps/Parser.h
parentc2a3cecc1ab2d3f27dcea40a6f0f353b0306d66a (diff)
Added binary operations +-*/
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();
};