aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
author_ov4 <hausemasterstream@gmail.com>2026-02-02 09:02:39 +0000
committer_ov4 <hausemasterstream@gmail.com>2026-02-02 09:02:39 +0000
commit09e128ce98de793d22669255897e4b4816d0e53e (patch)
tree7afcbeb1e245641b60cfa68dcf0915e019975d24 /include
parent419420770c4545ea4010047ef2153004d4700eed (diff)
Added logical operators
Diffstat (limited to 'include')
-rw-r--r--include/cps/AST.h10
-rw-r--r--include/cps/Lexer.h4
-rw-r--r--include/cps/Parser.h1
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);