From 09e128ce98de793d22669255897e4b4816d0e53e Mon Sep 17 00:00:00 2001 From: _ov4 Date: Mon, 2 Feb 2026 09:02:39 +0000 Subject: Added logical operators --- include/cps/AST.h | 10 ++++++++++ include/cps/Lexer.h | 4 ++++ include/cps/Parser.h | 1 + 3 files changed, 15 insertions(+) (limited to 'include') diff --git a/include/cps/AST.h b/include/cps/AST.h index 588f5eb..de57024 100644 --- a/include/cps/AST.h +++ b/include/cps/AST.h @@ -51,6 +51,16 @@ public: int getLine() const { return Line; } }; +class UnaryExprAST : public ExprAST { + int Op; + std::unique_ptr Operand; +public: + UnaryExprAST(int Op, std::unique_ptr Operand) + : Op(Op), Operand(std::move(Operand)) {} + int getOp() const { return Op; } + ExprAST *getOperand() const { return Operand.get(); } +}; + class BinaryExprAST : public ExprAST { int Op; std::unique_ptr LHS, RHS; diff --git a/include/cps/Lexer.h b/include/cps/Lexer.h index 15f56c4..97ccd83 100644 --- a/include/cps/Lexer.h +++ b/include/cps/Lexer.h @@ -36,6 +36,10 @@ enum Token { tok_boolean_kw = -22, tok_true = -23, tok_false = -24, + + tok_and = -25, + tok_or = -26, + tok_not = -27, tok_identifier = -100, tok_number_int = -101, diff --git a/include/cps/Parser.h b/include/cps/Parser.h index 2a9c98a..db1f243 100644 --- a/include/cps/Parser.h +++ b/include/cps/Parser.h @@ -17,6 +17,7 @@ class Parser { int GetTokPrecedence(); std::unique_ptr ParseExpression(); + std::unique_ptr ParseUnary(); std::unique_ptr ParsePrimary(); std::unique_ptr ParseBinOpRHS(int ExprPrec, std::unique_ptr LHS); -- cgit v1.3.1-4-g156e