13 std::shared_ptr<BaseExpression const>
const& indexExpression);
23 virtual std::shared_ptr<BaseExpression const>
simplify()
const override;
27 virtual void printToStream(std::ostream& stream)
const override;
ArrayAccessExpression(ArrayAccessExpression const &other)=default
virtual void printToStream(std::ostream &stream) const override
Prints the expression to the given stream.
ArrayAccessExpression(ArrayAccessExpression &&)=default
virtual ~ArrayAccessExpression()=default
ArrayAccessExpression(ExpressionManager const &manager, Type const &type, std::shared_ptr< BaseExpression const > const &arrayExpression, std::shared_ptr< BaseExpression const > const &indexExpression)
ArrayAccessExpression & operator=(ArrayAccessExpression const &other)=delete
virtual boost::any accept(ExpressionVisitor &visitor, boost::any const &data) const override
Accepts the given visitor by calling its visit method.
virtual std::shared_ptr< BaseExpression const > simplify() const override
Simplifies the expression according to some simple rules.
ArrayAccessExpression & operator=(ArrayAccessExpression &&)=delete
BinaryExpression(ExpressionManager const &manager, Type const &type, std::shared_ptr< BaseExpression const > const &firstOperand, std::shared_ptr< BaseExpression const > const &secondOperand)
Constructs a binary expression with the given return type and operands.
This class is responsible for managing a set of typed variables and all expressions using these varia...