#include <binaryexpression.h>
Inheritance diagram for BinaryExpression:
Public Member Functions | |
BinaryExpression (SrcPosition *position, Expression *expression1, Expression *expression2, string op) | |
BinaryExpression (const BinaryExpression &binaryExpression) | |
virtual | ~BinaryExpression () |
Expression * | getLeftExpression () |
Expression * | getRightExpression () |
string | getOp () const |
virtual Ast & | operator= (const Ast &ast) |
virtual bool | operator== (const Ast &ast) const |
virtual VisitorReturn * | visit (Visitor &visitor) |
virtual Ast & | clone () const |
Private Attributes | |
Expression * | leftExpression |
Expression * | rightExpression |
string | op |
|
Definition at line 16 of file binaryexpression.h. Referenced by clone().
00017 : Expression(position), Ast(position), leftExpression(expression1), rightExpression(expression2), op(op) {} |
|
Definition at line 19 of file binaryexpression.h. References Ast::position.
00019 : Expression(binaryExpression.position), Ast(position) { 00020 *(this) = binaryExpression; 00021 } |
|
Definition at line 23 of file binaryexpression.h.
00023 { 00024 delete this->leftExpression; 00025 delete this->rightExpression; 00026 } |
|
Implements Ast. Definition at line 48 of file binaryexpression.h. References BinaryExpression(), and Ast::clone().
00048 { 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 } |
|
Definition at line 29 of file binaryexpression.h. Referenced by TypeCheckerVisitor::visitBinaryExpression().
00029 { 00030 return this->leftExpression; 00031 } |
|
Definition at line 37 of file binaryexpression.h. Referenced by TypeCheckerVisitor::visitBinaryExpression().
00037 { 00038 return this->op; 00039 } |
|
Definition at line 33 of file binaryexpression.h. Referenced by TypeCheckerVisitor::visitBinaryExpression().
00033 { 00034 return this->rightExpression; 00035 } |
|
Reimplemented from Expression. Definition at line 5 of file binaryexpression.cpp. References Ast::clone(), leftExpression, op, Expression::operator=(), and rightExpression.
00005 { 00006 const BinaryExpression& binaryExpression = dynamic_cast<const BinaryExpression&>(ast); 00007 00008 Expression::operator=(ast); 00009 this->leftExpression = binaryExpression.leftExpression ? dynamic_cast<Expression*>(&(binaryExpression.leftExpression->clone())) : 0; 00010 this->rightExpression = binaryExpression.rightExpression ? dynamic_cast<Expression*>(&(binaryExpression.rightExpression->clone())) : 0; 00011 this->op = binaryExpression.op; 00012 00013 return *(this); 00014 } |
|
Reimplemented from Expression. Definition at line 16 of file binaryexpression.cpp. References leftExpression, op, Expression::operator==(), and rightExpression.
00016 { 00017 bool result = false; 00018 const BinaryExpression& binaryExpression = dynamic_cast<const BinaryExpression&>(ast); 00019 00020 if (typeid(ast) != typeid(BinaryExpression)) 00021 return false; 00022 00023 if (this->leftExpression && this->rightExpression) 00024 result = (*(this->leftExpression) == *(binaryExpression.leftExpression)) && 00025 (*(this->rightExpression) == *(binaryExpression.rightExpression)); 00026 00027 return result && (this->op == binaryExpression.op) && Expression::operator==(ast); 00028 } |
|
Implements Ast. Definition at line 44 of file binaryexpression.h. References Visitor::visitBinaryExpression().
00044 { 00045 return visitor.visitBinaryExpression(this); 00046 } |
|
Definition at line 11 of file binaryexpression.h. Referenced by operator=(), and operator==(). |
|
Definition at line 13 of file binaryexpression.h. Referenced by operator=(), and operator==(). |
|
Definition at line 12 of file binaryexpression.h. Referenced by operator=(), and operator==(). |