sencha-lang/Sencha-lang/AST/Assignment.cpp

57 lines
1.2 KiB
C++

/*
* Assignment.cpp
*
* Created on: Dec 7, 2012
* Author: attero
*/
#include "Assignment.h"
SenchaObject Assignment::evaluate()
{
return static_cast<ASTExpression *>(children[1])->evaluate();
}
void Assignment::execute()
{
auto left_value = static_cast<ASTExpression *>(children[0])->evaluate();
auto right_value = static_cast<ASTExpression *>(children[1])->evaluate();
static_cast<ASTExpression *>(children[1])->execute_quietly();
if(name != "")
{
context->set(name, right_value);
}
}
void Assignment::execute_quietly()
{
auto left_value = static_cast<ASTExpression *>(children[0])->evaluate();
auto right_value = static_cast<ASTExpression *>(children[1])->evaluate();
static_cast<ASTExpression *>(children[1])->execute_quietly();
if(left_value.name != "")
{
context->set(left_value.name, right_value);
}
}
Assignment::Assignment(ContextManager * context, std::string name, ASTExpression * left, ASTExpression * right)
{
this->context = context;
this->type = "Assignment";
this->children.push_back(left);
this->children.push_back(right);
this->name = name;
}
Assignment::~Assignment() {
for(auto it = children.begin(); it != children.end(); )
{
delete *it;
it = children.erase(it);
}
}