/* * WhileNode.cpp * * Created on: Dec 10, 2012 * Author: attero */ #include "WhileNode.h" WhileNode::WhileNode(ASTNode * parent) { body = NULL; this->parent = parent; } WhileNode::~WhileNode() { delete body; for(auto it = children.begin(); it != children.end(); ) { delete *it; it = children.erase(it); } } void WhileNode::add_condition(ASTExpression * expression) { children.push_back(expression); } void WhileNode::add_body(ASTStatement * statement) { body = statement; } std::string WhileNode::debug() { std::string debug_note = "While"; return debug_note; } void WhileNode::execute() { while(evaluate_condition()) { body->execute(); } } bool WhileNode::evaluate_condition() { auto condition = static_cast(children[0])->evaluate(); return condition.is_true(); }