diff --git a/CMakeLists.txt b/CMakeLists.txt index d7b52dd..1947852 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/ExpressionStatement.cpp src/AST/ParameterList.cpp src/AST/Scope.cpp src/AST/Statement.cpp diff --git a/inc/AST/ASTVisitor.h b/inc/AST/ASTVisitor.h index a085c49..839c867 100644 --- a/inc/AST/ASTVisitor.h +++ b/inc/AST/ASTVisitor.h @@ -10,6 +10,7 @@ #include "StatementList.h" #include "ValueList.h" #include "VariableDefinition.h" +#include "ExpressionStatement.h" class ASTVisitor { public: @@ -19,6 +20,7 @@ public: virtual void visit(AssignmentExpression* e) = 0; virtual void visit(BinOp* e) = 0; virtual void visit(ConstantExpression* e) = 0; + virtual void visit(ExpressionStatement* e) = 0; virtual void visit(IfStatement* e) = 0; virtual void visit(ParameterList* e) = 0; virtual void visit(Scope* e) = 0; diff --git a/inc/AST/ExpressionStatement.h b/inc/AST/ExpressionStatement.h new file mode 100644 index 0000000..b80c501 --- /dev/null +++ b/inc/AST/ExpressionStatement.h @@ -0,0 +1,20 @@ +#ifndef EXPRESSIONSTATEMENT_H +#define EXPRESSIONSTATEMENT_H + +#include "AST/Expression.h" +#include "AST/Statement.h" + +class ExpressionStatement : public Statement +{ +public: + ExpressionStatement(Expression* expr); + virtual ~ExpressionStatement(); + + virtual void accept(ASTVisitor* visitor); + + Expression* getExpr(); +private: + Expression* expr_; +}; + +#endif // EXPRESSIONSTATEMENT_H diff --git a/src/AST/ExpressionStatement.cpp b/src/AST/ExpressionStatement.cpp new file mode 100644 index 0000000..5399885 --- /dev/null +++ b/src/AST/ExpressionStatement.cpp @@ -0,0 +1,19 @@ +#include "AST/ExpressionStatement.h" +#include "AST/ASTVisitor.h" + +ExpressionStatement::ExpressionStatement(Expression *expr) : expr_(expr) +{ + // +} + +ExpressionStatement::~ExpressionStatement() { + +} + +void ExpressionStatement::accept(ASTVisitor *visitor) { + visitor->visit(this); +} + +Expression* ExpressionStatement::getExpr() { + return expr_; +}