/*
 * This code is autogenerated by MakeTea. Do not edit.
 */

#ifndef _TRANSFORM_H_
#define _TRANSFORM_H_

#include "ast.h"
#include <iostream>
#include <sstream>
#include <iomanip>
#include <phc/lib/error.h>
#include <phc/lib/Object.h>
#include <phc/lib/List.h>
#include <phc/lib/String.h>
#include <phc/lib/Boolean.h>
#include <phc/lib/Integer.h>
#include <phc/lib/AttrMap.h>

class Tree_transform
{
public:

public:
	virtual ~Tree_transform();
	virtual AST_identifier* pre_identifier(AST_identifier* in);
	virtual AST_identifier* post_identifier(AST_identifier* in);
	virtual AST_commented_node* pre_commented_node(AST_commented_node* in);
	virtual AST_commented_node* post_commented_node(AST_commented_node* in);
	virtual AST_node* pre_node(AST_node* in);
	virtual AST_node* post_node(AST_node* in);
	virtual AST_class_name* pre_class_name(AST_class_name* in);
	virtual AST_class_name* post_class_name(AST_class_name* in);
	virtual AST_method_name* pre_method_name(AST_method_name* in);
	virtual AST_method_name* post_method_name(AST_method_name* in);
	virtual AST_target* pre_target(AST_target* in);
	virtual AST_target* post_target(AST_target* in);
	virtual AST_variable_name* pre_variable_name(AST_variable_name* in);
	virtual AST_variable_name* post_variable_name(AST_variable_name* in);
	virtual AST_list_element* pre_list_element(AST_list_element* in);
	virtual AST_list_element* post_list_element(AST_list_element* in);
	virtual AST_expr* pre_literal(AST_literal* in);
	virtual AST_expr* post_literal(AST_literal* in);
	virtual AST_expr* pre_expr(AST_expr* in);
	virtual AST_expr* post_expr(AST_expr* in);
	virtual void pre_statement(AST_statement* in, AST_statement_list* out);
	virtual void post_statement(AST_statement* in, AST_statement_list* out);
	virtual void pre_member(AST_member* in, AST_member_list* out);
	virtual void post_member(AST_member* in, AST_member_list* out);
	virtual AST_php_script* pre_php_script(AST_php_script* in);
	virtual AST_php_script* post_php_script(AST_php_script* in);
	virtual void pre_actual_parameter(AST_actual_parameter* in, AST_actual_parameter_list* out);
	virtual void post_actual_parameter(AST_actual_parameter* in, AST_actual_parameter_list* out);
	virtual AST_expr* pre_array(AST_array* in);
	virtual AST_expr* post_array(AST_array* in);
	virtual void pre_array_elem(AST_array_elem* in, AST_array_elem_list* out);
	virtual void post_array_elem(AST_array_elem* in, AST_array_elem_list* out);
	virtual AST_expr* pre_assignment(AST_assignment* in);
	virtual AST_expr* post_assignment(AST_assignment* in);
	virtual AST_attr_mod* pre_attr_mod(AST_attr_mod* in);
	virtual AST_attr_mod* post_attr_mod(AST_attr_mod* in);
	virtual void pre_attribute(AST_attribute* in, AST_member_list* out);
	virtual void post_attribute(AST_attribute* in, AST_member_list* out);
	virtual AST_expr* pre_bin_op(AST_bin_op* in);
	virtual AST_expr* post_bin_op(AST_bin_op* in);
	virtual void pre_break(AST_break* in, AST_statement_list* out);
	virtual void post_break(AST_break* in, AST_statement_list* out);
	virtual AST_expr* pre_cast(AST_cast* in);
	virtual AST_expr* post_cast(AST_cast* in);
	virtual void pre_catch(AST_catch* in, AST_catch_list* out);
	virtual void post_catch(AST_catch* in, AST_catch_list* out);
	virtual void pre_class_def(AST_class_def* in, AST_class_def_list* out);
	virtual void post_class_def(AST_class_def* in, AST_class_def_list* out);
	virtual AST_class_mod* pre_class_mod(AST_class_mod* in);
	virtual AST_class_mod* post_class_mod(AST_class_mod* in);
	virtual AST_expr* pre_clone(AST_clone* in);
	virtual AST_expr* post_clone(AST_clone* in);
	virtual AST_expr* pre_conditional_expr(AST_conditional_expr* in);
	virtual AST_expr* post_conditional_expr(AST_conditional_expr* in);
	virtual AST_expr* pre_constant(AST_constant* in);
	virtual AST_expr* post_constant(AST_constant* in);
	virtual void pre_continue(AST_continue* in, AST_statement_list* out);
	virtual void post_continue(AST_continue* in, AST_statement_list* out);
	virtual void pre_declare(AST_declare* in, AST_statement_list* out);
	virtual void post_declare(AST_declare* in, AST_statement_list* out);
	virtual void pre_directive(AST_directive* in, AST_directive_list* out);
	virtual void post_directive(AST_directive* in, AST_directive_list* out);
	virtual void pre_do(AST_do* in, AST_statement_list* out);
	virtual void post_do(AST_do* in, AST_statement_list* out);
	virtual void pre_eval_expr(AST_eval_expr* in, AST_statement_list* out);
	virtual void post_eval_expr(AST_eval_expr* in, AST_statement_list* out);
	virtual void pre_for(AST_for* in, AST_statement_list* out);
	virtual void post_for(AST_for* in, AST_statement_list* out);
	virtual void pre_foreach(AST_foreach* in, AST_statement_list* out);
	virtual void post_foreach(AST_foreach* in, AST_statement_list* out);
	virtual void pre_formal_parameter(AST_formal_parameter* in, AST_formal_parameter_list* out);
	virtual void post_formal_parameter(AST_formal_parameter* in, AST_formal_parameter_list* out);
	virtual void pre_if(AST_if* in, AST_statement_list* out);
	virtual void post_if(AST_if* in, AST_statement_list* out);
	virtual AST_expr* pre_ignore_errors(AST_ignore_errors* in);
	virtual AST_expr* post_ignore_errors(AST_ignore_errors* in);
	virtual AST_expr* pre_instanceof(AST_instanceof* in);
	virtual AST_expr* post_instanceof(AST_instanceof* in);
	virtual void pre_interface_def(AST_interface_def* in, AST_interface_def_list* out);
	virtual void post_interface_def(AST_interface_def* in, AST_interface_def_list* out);
	virtual AST_expr* pre_list_assignment(AST_list_assignment* in);
	virtual AST_expr* post_list_assignment(AST_list_assignment* in);
	virtual AST_list_elements* pre_list_elements(AST_list_elements* in);
	virtual AST_list_elements* post_list_elements(AST_list_elements* in);
	virtual void pre_method(AST_method* in, AST_member_list* out);
	virtual void post_method(AST_method* in, AST_member_list* out);
	virtual AST_expr* pre_method_invocation(AST_method_invocation* in);
	virtual AST_expr* post_method_invocation(AST_method_invocation* in);
	virtual AST_method_mod* pre_method_mod(AST_method_mod* in);
	virtual AST_method_mod* post_method_mod(AST_method_mod* in);
	virtual AST_expr* pre_new(AST_new* in);
	virtual AST_expr* post_new(AST_new* in);
	virtual AST_expr* pre_post_op(AST_post_op* in);
	virtual AST_expr* post_post_op(AST_post_op* in);
	virtual AST_expr* pre_pre_op(AST_pre_op* in);
	virtual AST_expr* post_pre_op(AST_pre_op* in);
	virtual AST_reflection* pre_reflection(AST_reflection* in);
	virtual AST_reflection* post_reflection(AST_reflection* in);
	virtual void pre_return(AST_return* in, AST_statement_list* out);
	virtual void post_return(AST_return* in, AST_statement_list* out);
	virtual AST_signature* pre_signature(AST_signature* in);
	virtual AST_signature* post_signature(AST_signature* in);
	virtual void pre_static_declaration(AST_static_declaration* in, AST_statement_list* out);
	virtual void post_static_declaration(AST_static_declaration* in, AST_statement_list* out);
	virtual void pre_switch(AST_switch* in, AST_statement_list* out);
	virtual void post_switch(AST_switch* in, AST_statement_list* out);
	virtual void pre_switch_case(AST_switch_case* in, AST_switch_case_list* out);
	virtual void post_switch_case(AST_switch_case* in, AST_switch_case_list* out);
	virtual void pre_throw(AST_throw* in, AST_statement_list* out);
	virtual void post_throw(AST_throw* in, AST_statement_list* out);
	virtual void pre_try(AST_try* in, AST_statement_list* out);
	virtual void post_try(AST_try* in, AST_statement_list* out);
	virtual AST_type* pre_type(AST_type* in);
	virtual AST_type* post_type(AST_type* in);
	virtual AST_expr* pre_unary_op(AST_unary_op* in);
	virtual AST_expr* post_unary_op(AST_unary_op* in);
	virtual void pre_unset(AST_unset* in, AST_statement_list* out);
	virtual void post_unset(AST_unset* in, AST_statement_list* out);
	virtual AST_variable* pre_variable(AST_variable* in);
	virtual AST_variable* post_variable(AST_variable* in);
	virtual void pre_while(AST_while* in, AST_statement_list* out);
	virtual void post_while(AST_while* in, AST_statement_list* out);
	virtual AST_expr* pre_bool(Token_bool* in);
	virtual AST_expr* post_bool(Token_bool* in);
	virtual Token_cast* pre_cast(Token_cast* in);
	virtual Token_cast* post_cast(Token_cast* in);
	virtual Token_class_name* pre_class_name(Token_class_name* in);
	virtual Token_class_name* post_class_name(Token_class_name* in);
	virtual Token_constant_name* pre_constant_name(Token_constant_name* in);
	virtual Token_constant_name* post_constant_name(Token_constant_name* in);
	virtual Token_directive_name* pre_directive_name(Token_directive_name* in);
	virtual Token_directive_name* post_directive_name(Token_directive_name* in);
	virtual AST_expr* pre_int(Token_int* in);
	virtual AST_expr* post_int(Token_int* in);
	virtual Token_interface_name* pre_interface_name(Token_interface_name* in);
	virtual Token_interface_name* post_interface_name(Token_interface_name* in);
	virtual Token_method_name* pre_method_name(Token_method_name* in);
	virtual Token_method_name* post_method_name(Token_method_name* in);
	virtual AST_expr* pre_null(Token_null* in);
	virtual AST_expr* post_null(Token_null* in);
	virtual Token_op* pre_op(Token_op* in);
	virtual Token_op* post_op(Token_op* in);
	virtual AST_expr* pre_real(Token_real* in);
	virtual AST_expr* post_real(Token_real* in);
	virtual AST_expr* pre_string(Token_string* in);
	virtual AST_expr* post_string(Token_string* in);
	virtual Token_variable_name* pre_variable_name(Token_variable_name* in);
	virtual Token_variable_name* post_variable_name(Token_variable_name* in);
	virtual void children_php_script(AST_php_script* in);
	virtual void children_interface_def(AST_interface_def* in);
	virtual void children_class_def(AST_class_def* in);
	virtual void children_class_mod(AST_class_mod* in);
	virtual void children_method(AST_method* in);
	virtual void children_signature(AST_signature* in);
	virtual void children_method_mod(AST_method_mod* in);
	virtual void children_formal_parameter(AST_formal_parameter* in);
	virtual void children_type(AST_type* in);
	virtual void children_attribute(AST_attribute* in);
	virtual void children_attr_mod(AST_attr_mod* in);
	virtual void children_if(AST_if* in);
	virtual void children_while(AST_while* in);
	virtual void children_do(AST_do* in);
	virtual void children_for(AST_for* in);
	virtual void children_foreach(AST_foreach* in);
	virtual void children_switch(AST_switch* in);
	virtual void children_switch_case(AST_switch_case* in);
	virtual void children_break(AST_break* in);
	virtual void children_continue(AST_continue* in);
	virtual void children_return(AST_return* in);
	virtual void children_static_declaration(AST_static_declaration* in);
	virtual void children_unset(AST_unset* in);
	virtual void children_declare(AST_declare* in);
	virtual void children_directive(AST_directive* in);
	virtual void children_try(AST_try* in);
	virtual void children_catch(AST_catch* in);
	virtual void children_throw(AST_throw* in);
	virtual void children_eval_expr(AST_eval_expr* in);
	virtual void children_assignment(AST_assignment* in);
	virtual void children_list_assignment(AST_list_assignment* in);
	virtual void children_list_elements(AST_list_elements* in);
	virtual void children_cast(AST_cast* in);
	virtual void children_unary_op(AST_unary_op* in);
	virtual void children_bin_op(AST_bin_op* in);
	virtual void children_conditional_expr(AST_conditional_expr* in);
	virtual void children_ignore_errors(AST_ignore_errors* in);
	virtual void children_constant(AST_constant* in);
	virtual void children_instanceof(AST_instanceof* in);
	virtual void children_variable(AST_variable* in);
	virtual void children_reflection(AST_reflection* in);
	virtual void children_pre_op(AST_pre_op* in);
	virtual void children_post_op(AST_post_op* in);
	virtual void children_array(AST_array* in);
	virtual void children_array_elem(AST_array_elem* in);
	virtual void children_method_invocation(AST_method_invocation* in);
	virtual void children_actual_parameter(AST_actual_parameter* in);
	virtual void children_new(AST_new* in);
	virtual void children_clone(AST_clone* in);
	virtual void children_interface_name(Token_interface_name* in);
	virtual void children_class_name(Token_class_name* in);
	virtual void children_method_name(Token_method_name* in);
	virtual void children_variable_name(Token_variable_name* in);
	virtual void children_directive_name(Token_directive_name* in);
	virtual void children_int(Token_int* in);
	virtual void children_real(Token_real* in);
	virtual void children_string(Token_string* in);
	virtual void children_bool(Token_bool* in);
	virtual void children_null(Token_null* in);
	virtual void children_cast(Token_cast* in);
	virtual void children_op(Token_op* in);
	virtual void children_constant_name(Token_constant_name* in);
	virtual AST_interface_def_list* pre_interface_def_list(AST_interface_def_list* in);
	virtual void children_interface_def_list(AST_interface_def_list* in);
	virtual AST_interface_def_list* post_interface_def_list(AST_interface_def_list* in);
	virtual AST_class_def_list* pre_class_def_list(AST_class_def_list* in);
	virtual void children_class_def_list(AST_class_def_list* in);
	virtual AST_class_def_list* post_class_def_list(AST_class_def_list* in);
	virtual Token_interface_name_list* pre_interface_name_list(Token_interface_name_list* in);
	virtual void children_interface_name_list(Token_interface_name_list* in);
	virtual Token_interface_name_list* post_interface_name_list(Token_interface_name_list* in);
	virtual AST_member_list* pre_member_list(AST_member_list* in);
	virtual void children_member_list(AST_member_list* in);
	virtual AST_member_list* post_member_list(AST_member_list* in);
	virtual AST_statement_list* pre_statement_list(AST_statement_list* in);
	virtual void children_statement_list(AST_statement_list* in);
	virtual AST_statement_list* post_statement_list(AST_statement_list* in);
	virtual AST_formal_parameter_list* pre_formal_parameter_list(AST_formal_parameter_list* in);
	virtual void children_formal_parameter_list(AST_formal_parameter_list* in);
	virtual AST_formal_parameter_list* post_formal_parameter_list(AST_formal_parameter_list* in);
	virtual AST_switch_case_list* pre_switch_case_list(AST_switch_case_list* in);
	virtual void children_switch_case_list(AST_switch_case_list* in);
	virtual AST_switch_case_list* post_switch_case_list(AST_switch_case_list* in);
	virtual AST_directive_list* pre_directive_list(AST_directive_list* in);
	virtual void children_directive_list(AST_directive_list* in);
	virtual AST_directive_list* post_directive_list(AST_directive_list* in);
	virtual AST_catch_list* pre_catch_list(AST_catch_list* in);
	virtual void children_catch_list(AST_catch_list* in);
	virtual AST_catch_list* post_catch_list(AST_catch_list* in);
	virtual AST_list_element_list* pre_list_element_list(AST_list_element_list* in);
	virtual void children_list_element_list(AST_list_element_list* in);
	virtual AST_list_element_list* post_list_element_list(AST_list_element_list* in);
	virtual AST_expr_list* pre_expr_list(AST_expr_list* in);
	virtual void children_expr_list(AST_expr_list* in);
	virtual AST_expr_list* post_expr_list(AST_expr_list* in);
	virtual AST_array_elem_list* pre_array_elem_list(AST_array_elem_list* in);
	virtual void children_array_elem_list(AST_array_elem_list* in);
	virtual AST_array_elem_list* post_array_elem_list(AST_array_elem_list* in);
	virtual AST_actual_parameter_list* pre_actual_parameter_list(AST_actual_parameter_list* in);
	virtual void children_actual_parameter_list(AST_actual_parameter_list* in);
	virtual AST_actual_parameter_list* post_actual_parameter_list(AST_actual_parameter_list* in);
};

#endif // _TRANSFORM_H_
