aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorov-4 <hausemasterstream@gmail.com>2026-01-29 12:19:20 +0000
committerov-4 <hausemasterstream@gmail.com>2026-01-29 12:19:20 +0000
commit0f92a54ba91023e7e88d6cabc8f2f78901f62a40 (patch)
treefb1c669da86bb3a3ff8bfae463cabec8e7879992
parent05c19789d5e1b5edd050ee97c19a8ab86ec9e0f6 (diff)
Added IF statement
-rw-r--r--include/cps/AST.h10
-rw-r--r--include/cps/Parser.h2
-rw-r--r--lib/Parser/Parser.cc8
3 files changed, 8 insertions, 12 deletions
diff --git a/include/cps/AST.h b/include/cps/AST.h
index 7791580..3c58642 100644
--- a/include/cps/AST.h
+++ b/include/cps/AST.h
@@ -86,15 +86,5 @@ public:
const std::vector<std::unique_ptr<StmtAST>> &getElseStmts() const { return ElseStmts; }
};
-class BinaryExprAST : public ExprAST {
- char Op;
- std::unique_ptr<ExprAST> LHS, RHS;
-public:
- BinaryExprAST(char Op, std::unique_ptr<ExprAST> LHS, std::unique_ptr<ExprAST> RHS)
- : Op(Op), LHS(std::move(LHS)), RHS(std::move(RHS)) {}
- char getOp() const { return Op; }
- ExprAST *getLHS() const { return LHS.get(); }
- ExprAST *getRHS() const { return RHS.get(); }
-};
} // namespace cps
diff --git a/include/cps/Parser.h b/include/cps/Parser.h
index c5d0c97..58b6366 100644
--- a/include/cps/Parser.h
+++ b/include/cps/Parser.h
@@ -11,7 +11,7 @@ class Parser {
Lexer &Lex;
int CurTok;
- std::map<char, int> BinopPrecedence;
+ std::map<int, int> BinopPrecedence;
int getNextToken();
int GetTokPrecedence();
diff --git a/lib/Parser/Parser.cc b/lib/Parser/Parser.cc
index ee94b36..998d50b 100644
--- a/lib/Parser/Parser.cc
+++ b/lib/Parser/Parser.cc
@@ -9,12 +9,18 @@ Parser::Parser(Lexer &L) : Lex(L) {
BinopPrecedence[tok_ne] = 10;
BinopPrecedence[tok_le] = 10;
BinopPrecedence[tok_ge] = 10;
+
BinopPrecedence['<'] = 10;
BinopPrecedence['>'] = 10;
+
+ BinopPrecedence['+'] = 20;
+ BinopPrecedence['-'] = 20;
+ BinopPrecedence['*'] = 40;
+ BinopPrecedence['/'] = 40;
}
int Parser::GetTokPrecedence() {
- if (!isascii(CurTok)) return -1;
+ if (BinopPrecedence.find(CurTok) == BinopPrecedence.end()) return -1;
int TokPrec = BinopPrecedence[CurTok];
if (TokPrec <= 0) return -1;
return TokPrec;