BinOp -> BinOpExpression
This commit is contained in:
@@ -61,7 +61,7 @@ SET(SCULLY_SOURCE
|
|||||||
src/AST/ASTElement.cpp
|
src/AST/ASTElement.cpp
|
||||||
src/AST/ASTVisitor.cpp
|
src/AST/ASTVisitor.cpp
|
||||||
src/AST/AssignmentExpression.cpp
|
src/AST/AssignmentExpression.cpp
|
||||||
src/AST/BinOp.cpp
|
src/AST/BinOpExpression.cpp
|
||||||
src/AST/ConstantExpression.cpp
|
src/AST/ConstantExpression.cpp
|
||||||
src/AST/Expression.cpp
|
src/AST/Expression.cpp
|
||||||
src/AST/ExpressionStatement.cpp
|
src/AST/ExpressionStatement.cpp
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
#include "AST/ASTElement.h"
|
#include "AST/ASTElement.h"
|
||||||
#include "AST/AssignmentExpression.h"
|
#include "AST/AssignmentExpression.h"
|
||||||
#include "AST/BinOp.h"
|
#include "AST/BinOpExpression.h"
|
||||||
#include "AST/ConstantExpression.h"
|
#include "AST/ConstantExpression.h"
|
||||||
#include "AST/Expression.h"
|
#include "AST/Expression.h"
|
||||||
#include "AST/ExpressionStatement.h"
|
#include "AST/ExpressionStatement.h"
|
||||||
@@ -89,12 +89,12 @@ statements(A) ::= statements(B) statement(C). { B->addStatement(C); A = B; }
|
|||||||
|
|
||||||
%type expr {Expression*}
|
%type expr {Expression*}
|
||||||
expr(A) ::= T_IDENTIFIER(ID) T_ASSIGN expr(E). { A = new AssignmentExpression(ID->getText(), E); }
|
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_EQUALS expr(C). { A = new BinOpExpression(B, "==", C); }
|
||||||
expr(A) ::= expr(B) T_LESS expr(C). { A = new BinOp(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 BinOp(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 BinOp(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 BinOp(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 BinOp(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_CINT(I). { A = new ConstantExpression(I->getText()); }
|
||||||
expr(A) ::= T_TRUE. { A = new ConstantExpression("true"); }
|
expr(A) ::= T_TRUE. { A = new ConstantExpression("true"); }
|
||||||
expr(A) ::= T_FALSE. { A = new ConstantExpression("false"); }
|
expr(A) ::= T_FALSE. { A = new ConstantExpression("false"); }
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
#define ASTVISITOR_H
|
#define ASTVISITOR_H
|
||||||
|
|
||||||
#include "AssignmentExpression.h"
|
#include "AssignmentExpression.h"
|
||||||
#include "BinOp.h"
|
#include "BinOpExpression.h"
|
||||||
#include "ConstantExpression.h"
|
#include "ConstantExpression.h"
|
||||||
#include "ExpressionStatement.h"
|
#include "ExpressionStatement.h"
|
||||||
#include "ForStatement.h"
|
#include "ForStatement.h"
|
||||||
@@ -24,7 +24,7 @@ public:
|
|||||||
virtual ~ASTVisitor();
|
virtual ~ASTVisitor();
|
||||||
|
|
||||||
virtual void visit(AssignmentExpression* e) = 0;
|
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(ConstantExpression* e) = 0;
|
||||||
virtual void visit(ExpressionStatement* e) = 0;
|
virtual void visit(ExpressionStatement* e) = 0;
|
||||||
virtual void visit(ForStatement* e) = 0;
|
virtual void visit(ForStatement* e) = 0;
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include "AST/Expression.h"
|
#include "AST/Expression.h"
|
||||||
|
|
||||||
class BinOp : public Expression {
|
class BinOpExpression : public Expression {
|
||||||
public:
|
public:
|
||||||
BinOp(Expression* leftExp ,std::string op, Expression* rightExp);
|
BinOpExpression(Expression* leftExp ,std::string op, Expression* rightExp);
|
||||||
virtual ~BinOp();
|
virtual ~BinOpExpression();
|
||||||
|
|
||||||
std::string getOp();
|
std::string getOp();
|
||||||
Expression* getLeftExp();
|
Expression* getLeftExp();
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
26
src/AST/BinOpExpression.cpp
Normal file
26
src/AST/BinOpExpression.cpp
Normal file
@@ -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);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user