Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members  

binaryexpression.h

Go to the documentation of this file.
00001 #ifndef BINARY_EXPRESSION_H
00002 #define BINARY_EXPRESSION_H
00003 
00004 #include <string>
00005 #include "expression.h"
00006 
00007 using namespace std;
00008 
00009 class BinaryExpression : public Expression {
00010         private:
00011                 Expression *leftExpression;
00012                 Expression *rightExpression;
00013                 string op;
00014 
00015         public:
00016                 BinaryExpression(SrcPosition *position, Expression *expression1, Expression *expression2, string op)
00017                                 : Expression(position), Ast(position), leftExpression(expression1), rightExpression(expression2), op(op) {}
00018 
00019                 BinaryExpression(const BinaryExpression& binaryExpression) : Expression(binaryExpression.position), Ast(position) {
00020                         *(this) = binaryExpression;
00021                 }
00022 
00023                 virtual ~BinaryExpression() {
00024                         delete this->leftExpression;
00025                         delete this->rightExpression;
00026                 }
00027 
00028 
00029                 Expression *getLeftExpression() {
00030                         return this->leftExpression;
00031                 }
00032 
00033                 Expression *getRightExpression() {
00034                         return this->rightExpression;
00035                 }
00036 
00037                 string getOp() const {
00038                         return this->op;
00039                 }
00040 
00041                 virtual Ast& operator = (const Ast& ast);
00042                 virtual bool operator == (const Ast& ast) const;
00043 
00044                 virtual VisitorReturn *visit(Visitor& visitor) {
00045                         return visitor.visitBinaryExpression(this);
00046                 }
00047 
00048                 virtual Ast& clone() const {
00049                         return *(new BinaryExpression(new SrcPosition(*(this->position)),
00050                                          this->leftExpression ? dynamic_cast<Expression*>(&(this->leftExpression->clone())) : 0,
00051                                          this->rightExpression ? dynamic_cast<Expression*>(&(this->rightExpression->clone())) : 0,
00052                                          this->op));
00053                 }
00054 };
00055 
00056 #endif

Generated on Mon Dec 1 17:36:37 2003 for Protomake by doxygen1.3