diff --git a/CMakeLists.txt b/CMakeLists.txt index ff89305..dea848c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,7 +61,7 @@ SET(SCULLY_SOURCE src/AST/ASTElement.cpp src/AST/ASTVisitor.cpp src/AST/AssignmentExpression.cpp - src/AST/BinOp.cpp + src/AST/BinOpExpression.cpp src/AST/ConstantExpression.cpp src/AST/Expression.cpp src/AST/ExpressionStatement.cpp diff --git a/grammar/grammar.y b/grammar/grammar.y index 260d825..030645f 100644 --- a/grammar/grammar.y +++ b/grammar/grammar.y @@ -9,7 +9,7 @@ #include "AST/ASTElement.h" #include "AST/AssignmentExpression.h" -#include "AST/BinOp.h" +#include "AST/BinOpExpression.h" #include "AST/ConstantExpression.h" #include "AST/Expression.h" #include "AST/ExpressionStatement.h" @@ -89,12 +89,12 @@ statements(A) ::= statements(B) statement(C). { B->addStatement(C); A = B; } %type expr {Expression*} expr(A) ::= T_IDENTIFIER(ID) T_ASSIGN expr(E). { A = new AssignmentExpression(ID->getText(), E); } -expr(A) ::= expr(B) T_EQUALS expr(C). { A = new BinOp(B, "==", C); } -expr(A) ::= expr(B) T_LESS expr(C). { A = new BinOp(B, "<", C); } -expr(A) ::= expr(B) T_PLUS expr(C). { A = new BinOp(B, "+", C); } -expr(A) ::= expr(B) T_MINUS expr(C). { A = new BinOp(B, "-", C); } -expr(A) ::= expr(B) T_TIMES expr(C). { A = new BinOp(B, "*", C); } -expr(A) ::= expr(B) T_DIV expr(C). { A = new BinOp(B, "/", C); } +expr(A) ::= expr(B) T_EQUALS expr(C). { A = new BinOpExpression(B, "==", C); } +expr(A) ::= expr(B) T_LESS expr(C). { A = new BinOpExpression(B, "<", C); } +expr(A) ::= expr(B) T_PLUS expr(C). { A = new BinOpExpression(B, "+", C); } +expr(A) ::= expr(B) T_MINUS expr(C). { A = new BinOpExpression(B, "-", C); } +expr(A) ::= expr(B) T_TIMES expr(C). { A = new BinOpExpression(B, "*", C); } +expr(A) ::= expr(B) T_DIV expr(C). { A = new BinOpExpression(B, "/", C); } expr(A) ::= T_CINT(I). { A = new ConstantExpression(I->getText()); } expr(A) ::= T_TRUE. { A = new ConstantExpression("true"); } expr(A) ::= T_FALSE. { A = new ConstantExpression("false"); } diff --git a/inc/AST/ASTVisitor.h b/inc/AST/ASTVisitor.h index 6ec5d93..770d50a 100644 --- a/inc/AST/ASTVisitor.h +++ b/inc/AST/ASTVisitor.h @@ -2,7 +2,7 @@ #define ASTVISITOR_H #include "AssignmentExpression.h" -#include "BinOp.h" +#include "BinOpExpression.h" #include "ConstantExpression.h" #include "ExpressionStatement.h" #include "ForStatement.h" @@ -24,7 +24,7 @@ public: virtual ~ASTVisitor(); virtual void visit(AssignmentExpression* e) = 0; - virtual void visit(BinOp* e) = 0; + virtual void visit(BinOpExpression* e) = 0; virtual void visit(ConstantExpression* e) = 0; virtual void visit(ExpressionStatement* e) = 0; virtual void visit(ForStatement* e) = 0; diff --git a/inc/AST/BinOp.h b/inc/AST/BinOpExpression.h similarity index 67% rename from inc/AST/BinOp.h rename to inc/AST/BinOpExpression.h index 1283898..a9ed052 100644 --- a/inc/AST/BinOp.h +++ b/inc/AST/BinOpExpression.h @@ -4,10 +4,10 @@ #include #include "AST/Expression.h" -class BinOp : public Expression { +class BinOpExpression : public Expression { public: - BinOp(Expression* leftExp ,std::string op, Expression* rightExp); - virtual ~BinOp(); + BinOpExpression(Expression* leftExp ,std::string op, Expression* rightExp); + virtual ~BinOpExpression(); std::string getOp(); Expression* getLeftExp(); diff --git a/src/AST/BinOp.cpp b/src/AST/BinOp.cpp deleted file mode 100644 index 3b3a905..0000000 --- a/src/AST/BinOp.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "AST/BinOp.h" -#include "AST/ASTVisitor.h" - -BinOp::BinOp(Expression *leftExp, std::string op, Expression *rightExp) : - leftExp_(leftExp), op_(op), rightExp_(rightExp) { -} - -BinOp::~BinOp() { - // -} - -std::string BinOp::getOp() { - return op_; -} - -Expression* BinOp::getLeftExp() { - return leftExp_; -} - -Expression* BinOp::getRightExp() { - return rightExp_; -} - -void BinOp::accept(ASTVisitor* visitor) { - visitor->visit(this); -} diff --git a/src/AST/BinOpExpression.cpp b/src/AST/BinOpExpression.cpp new file mode 100644 index 0000000..e2ea9c8 --- /dev/null +++ b/src/AST/BinOpExpression.cpp @@ -0,0 +1,26 @@ +#include "AST/BinOpExpression.h" +#include "AST/ASTVisitor.h" + +BinOpExpression::BinOpExpression(Expression *leftExp, std::string op, Expression *rightExp) : + leftExp_(leftExp), op_(op), rightExp_(rightExp) { +} + +BinOpExpression::~BinOpExpression() { + // +} + +std::string BinOpExpression::getOp() { + return op_; +} + +Expression* BinOpExpression::getLeftExp() { + return leftExp_; +} + +Expression* BinOpExpression::getRightExp() { + return rightExp_; +} + +void BinOpExpression::accept(ASTVisitor* visitor) { + visitor->visit(this); +}