/*
 * ASTProgram.h
 *
 *  Created on: Nov 5, 2012
 *      Author: attero
 */

#ifndef PROGRAMNODE_H_
#define PROGRAMNODE_H_
#include <iostream>
#include "ASTNode.h"
#include "ASTStatement.h"

/**
 * ProgramNode is always first node. It stores all statements.
 */
class ProgramNode : public ASTNode {
public:
	ProgramNode();
	void add_statement(ASTStatement * statement);
	virtual ~ProgramNode();
	virtual SenchaObject execute();
	virtual SenchaObject execute_last();
	virtual SenchaObject evaluate() { return evaluate_last(); }
	SenchaObject evaluate_last();
	virtual void accept(Visitor * visitor);
};

#endif /* PROGRAMNODE_H_ */
