diff options
| author | _ov4 <hausemasterstream@gmail.com> | 2026-02-02 09:02:39 +0000 |
|---|---|---|
| committer | _ov4 <hausemasterstream@gmail.com> | 2026-02-02 09:02:39 +0000 |
| commit | 09e128ce98de793d22669255897e4b4816d0e53e (patch) | |
| tree | 7afcbeb1e245641b60cfa68dcf0915e019975d24 /include | |
| parent | 419420770c4545ea4010047ef2153004d4700eed (diff) | |
Added logical operators
Diffstat (limited to 'include')
| -rw-r--r-- | include/cps/AST.h | 10 | ||||
| -rw-r--r-- | include/cps/Lexer.h | 4 | ||||
| -rw-r--r-- | include/cps/Parser.h | 1 |
3 files changed, 15 insertions, 0 deletions
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<ExprAST> Operand; +public: + UnaryExprAST(int Op, std::unique_ptr<ExprAST> 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<ExprAST> 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<ExprAST> ParseExpression(); + std::unique_ptr<ExprAST> ParseUnary(); std::unique_ptr<ExprAST> ParsePrimary(); std::unique_ptr<ExprAST> ParseBinOpRHS(int ExprPrec, std::unique_ptr<ExprAST> LHS); |
