From 0f92a54ba91023e7e88d6cabc8f2f78901f62a40 Mon Sep 17 00:00:00 2001 From: ov-4 Date: Thu, 29 Jan 2026 12:19:20 +0000 Subject: Added IF statement --- include/cps/AST.h | 10 ---------- include/cps/Parser.h | 2 +- lib/Parser/Parser.cc | 8 +++++++- 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> &getElseStmts() const { return ElseStmts; } }; -class BinaryExprAST : public ExprAST { - char Op; - std::unique_ptr LHS, RHS; -public: - BinaryExprAST(char Op, std::unique_ptr LHS, std::unique_ptr 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 BinopPrecedence; + std::map 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; -- cgit v1.3.1-4-g156e