aboutsummaryrefslogtreecommitdiff
path: root/include/cps/AST.h
diff options
context:
space:
mode:
authorov-4 <hausemasterstream@gmail.com>2026-01-30 02:06:37 +0000
committerov-4 <hausemasterstream@gmail.com>2026-01-30 02:06:37 +0000
commit766a4b8e5236bffb40984439a79186c5ee823ff8 (patch)
treea4226690b4b95c916908afa0047899ff60e63c81 /include/cps/AST.h
parent943ed04b775949e8bc4948bcb8d762a32ab14f76 (diff)
Added runtime check for array index and division
Diffstat (limited to 'include/cps/AST.h')
-rw-r--r--include/cps/AST.h18
1 files changed, 12 insertions, 6 deletions
diff --git a/include/cps/AST.h b/include/cps/AST.h
index aaf81cb..a0c0ace 100644
--- a/include/cps/AST.h
+++ b/include/cps/AST.h
@@ -27,22 +27,26 @@ public:
class ArrayAccessExprAST : public ExprAST {
std::string Name;
std::vector<std::unique_ptr<ExprAST>> Indices;
+ int Line;
public:
- ArrayAccessExprAST(const std::string &Name, std::vector<std::unique_ptr<ExprAST>> Indices)
- : Name(Name), Indices(std::move(Indices)) {}
+ ArrayAccessExprAST(const std::string &Name, std::vector<std::unique_ptr<ExprAST>> Indices, int Line)
+ : Name(Name), Indices(std::move(Indices)), Line(Line) {}
const std::string &getName() const { return Name; }
const std::vector<std::unique_ptr<ExprAST>> &getIndices() const { return Indices; }
+ int getLine() const { return Line; }
};
class BinaryExprAST : public ExprAST {
int Op;
std::unique_ptr<ExprAST> LHS, RHS;
+ int Line;
public:
- BinaryExprAST(int Op, std::unique_ptr<ExprAST> LHS, std::unique_ptr<ExprAST> RHS)
- : Op(Op), LHS(std::move(LHS)), RHS(std::move(RHS)) {}
+ BinaryExprAST(int Op, std::unique_ptr<ExprAST> LHS, std::unique_ptr<ExprAST> RHS, int Line)
+ : Op(Op), LHS(std::move(LHS)), RHS(std::move(RHS)), Line(Line) {}
int getOp() const { return Op; }
ExprAST *getLHS() const { return LHS.get(); }
ExprAST *getRHS() const { return RHS.get(); }
+ int getLine() const { return Line; }
};
class StmtAST {
@@ -86,12 +90,14 @@ class ArrayAssignStmtAST : public StmtAST {
std::string Name;
std::vector<std::unique_ptr<ExprAST>> Indices;
std::unique_ptr<ExprAST> Expr;
+ int Line;
public:
- ArrayAssignStmtAST(const std::string &Name, std::vector<std::unique_ptr<ExprAST>> Indices, std::unique_ptr<ExprAST> Expr)
- : Name(Name), Indices(std::move(Indices)), Expr(std::move(Expr)) {}
+ ArrayAssignStmtAST(const std::string &Name, std::vector<std::unique_ptr<ExprAST>> Indices, std::unique_ptr<ExprAST> Expr, int Line)
+ : Name(Name), Indices(std::move(Indices)), Expr(std::move(Expr)), Line(Line) {}
const std::string &getName() const { return Name; }
const std::vector<std::unique_ptr<ExprAST>> &getIndices() const { return Indices; }
ExprAST *getExpr() const { return Expr.get(); }
+ int getLine() const { return Line; }
};
class InputStmtAST : public StmtAST {