From d88b3b5ba06eac711716f10b2713c515c0d62611 Mon Sep 17 00:00:00 2001 From: Florian Sattler Date: Sat, 1 Jun 2013 02:06:24 +0200 Subject: [PATCH] fix assignment and adding IfStatement --- CMakeLists.txt | 1 + inc/AST/ASTVisitor.h | 2 ++ inc/AST/IfStatement.h | 23 +++++++++++++++++++++++ src/AST/AssignmentExpression.cpp | 2 +- src/AST/IfStatement.cpp | 23 +++++++++++++++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 inc/AST/IfStatement.h create mode 100644 src/AST/IfStatement.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2414da0..e26a925 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,6 +64,7 @@ SET(SCULLY_SOURCE src/AST/BinOp.cpp src/AST/ConstantExpression.cpp src/AST/Expression.cpp + src/AST/IfStatement.cpp src/AST/ParameterList.cpp src/AST/Statement.cpp src/AST/Type.cpp diff --git a/inc/AST/ASTVisitor.h b/inc/AST/ASTVisitor.h index a90d8e4..c43ef93 100644 --- a/inc/AST/ASTVisitor.h +++ b/inc/AST/ASTVisitor.h @@ -4,6 +4,7 @@ #include "AssignmentExpression.h" #include "BinOp.h" #include "ConstantExpression.h" +#include "IfStatement.h" #include "VariableDefinition.h" #include "ParameterList.h" @@ -15,6 +16,7 @@ public: virtual void visit(AssignmentExpression* e) = 0; virtual void visit(BinOp* e) = 0; virtual void visit(ConstantExpression* e) = 0; + virtual void visit(IfStatement* e) = 0; virtual void visit(ParameterList* e) = 0; virtual void visit(VariableDefinition* e) = 0; }; diff --git a/inc/AST/IfStatement.h b/inc/AST/IfStatement.h new file mode 100644 index 0000000..d8f74b3 --- /dev/null +++ b/inc/AST/IfStatement.h @@ -0,0 +1,23 @@ +#ifndef IFSTATEMENT_H +#define IFSTATEMENT_H + +#include "AST/Expression.h" +#include "AST/Statement.h" + +class IfStatement : public Statement +{ +public: + IfStatement(Expression* cond, Statement* stmt); + virtual ~IfStatement(); + + virtual void accept(ASTVisitor *visitor); + + Expression* getCond(); + Statement* getStmt(); +private: + Expression* cond_; + Statement* stmt_; + +}; + +#endif // IFSTATEMENT_H diff --git a/src/AST/AssignmentExpression.cpp b/src/AST/AssignmentExpression.cpp index 4f5f2b8..182859a 100644 --- a/src/AST/AssignmentExpression.cpp +++ b/src/AST/AssignmentExpression.cpp @@ -1,7 +1,7 @@ #include "AST/AssignmentExpression.h" #include "AST/ASTVisitor.h" -AssignmentExpression::AssignmentExpression(std::string id, Expression *expr) +AssignmentExpression::AssignmentExpression(std::string id, Expression *expr) : id_(id),expr_(expr) { // } diff --git a/src/AST/IfStatement.cpp b/src/AST/IfStatement.cpp new file mode 100644 index 0000000..52097a0 --- /dev/null +++ b/src/AST/IfStatement.cpp @@ -0,0 +1,23 @@ +#include "AST/IfStatement.h" +#include "AST/ASTVisitor.h" + +IfStatement::IfStatement(Expression *cond, Statement *stmt) : cond_(cond),stmt_(stmt) +{ + // +} + +IfStatement::~IfStatement(){ + // +} + +void IfStatement::accept(ASTVisitor *visitor) { + visitor->visit(this); +} + +Expression* IfStatement::getCond() { + return cond_; +} + +Statement* IfStatement::getStmt() { + return stmt_; +}