/* * ConstantExpression.h * * Created on: Dec 5, 2012 * Author: attero */ #ifndef CONSTANTEXPRESSION_H_ #define CONSTANTEXPRESSION_H_ #include "ASTExpression.h" #include #include "../Context.h" /** * ConstantExpression class is used to store complex expression, which are actually * SenchaObjects. Constant Expressions are made in parser when it encounter some of primitives * like string literal or numbers, they also can be made on already made SenchaObject. * ConstantExpression is a part of AST, so it must have parent. It's a node in which it is build. * It implements four virtual functions: debug, evaluate, execute_quietly. * It stores the value of expression. */ class ConstantExpression : public ASTExpression { public: /** * Constructor which sets value to null SenchaObject.o it * @param parent of the ConstantExpression node * @param number value will be set to SenchaObject representing this number */ ConstantExpression(ASTNode * parent); /** *Constructor which creates SenchaObject(number) and sets value to it * @param parent of the ConstantExpression node * @param number value will be set to SenchaObject representing this number */ ConstantExpression(ASTNode * parent, int number) ; /** * Constructor which creates SenchaObject(number) and sets value to it * @param parent of the ConstantExpression node * @param number value will be set to SenchaObject representing this number */ ConstantExpression(ASTNode * parent, double number) ; /** * Constructor which creates SenchaObject(text) and sets value to it * @param parent of the ConstantExpression node * @param text value will be set to SenchaObject representing this text */ ConstantExpression(ASTNode * parent, std::string text); /** * Constructor which sets value to given value * @param parent of the ConstantExpression node * @param value this->value will be set to value */ ConstantExpression(ASTNode * parent, SenchaObject value); /** Here's value of constant expression */ SenchaObject value; /** Implements visitor pattern */ virtual void accept(Visitor * visitor); virtual ~ConstantExpression(); /**Returns value set in one of constructors */ virtual SenchaObject evaluate(); /**Prints representation of value */ virtual void execute() ; /**Does nothing */ virtual void execute_quietly() ; }; #endif /* CONSTANTEXPRESSION_H_ */