84 lines
2.4 KiB
C++
84 lines
2.4 KiB
C++
/*
|
|
* ConstantExpression.h
|
|
*
|
|
* Created on: Dec 5, 2012
|
|
* Author: attero
|
|
*/
|
|
|
|
#ifndef CONSTANTEXPRESSION_H_
|
|
#define CONSTANTEXPRESSION_H_
|
|
#include "ASTExpression.h"
|
|
#include <iostream>
|
|
#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;
|
|
|
|
/** Provides some useful information */
|
|
std::string debug();
|
|
|
|
/** 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_ */
|