sencha-lang/Sencha-lang/AST/ConstantExpression.h

76 lines
2.0 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 number value will be set to SenchaObject representing this number
*/
ConstantExpression();
/**
*Constructor which creates SenchaObject(number) and sets value to it
* @param number value will be set to SenchaObject representing this number
*/
ConstantExpression( int number) ;
/**
* Constructor which creates SenchaObject(number) and sets value to it
* @param number value will be set to SenchaObject representing this number
*/
ConstantExpression( double number) ;
/**
* Constructor which creates SenchaObject(text) and sets value to it
* @param text value will be set to SenchaObject representing this text
*/
ConstantExpression( std::string text);
/**
* Constructor which sets value to given value
* @param value this->value will be set to value
*/
ConstantExpression(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_ */