!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: nginx/1.23.4. PHP/5.6.40-65+ubuntu20.04.1+deb.sury.org+1 

uname -a: Linux foro-restaurado-2 5.15.0-1040-oracle #46-Ubuntu SMP Fri Jul 14 21:47:21 UTC 2023
aarch64
 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/home/scripts/pba/phc-read-only/src/generated/   drwxrwxr-x
Free 83.21 GB of 96.73 GB (86.02%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     AST_visitor.cpp (72.58 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#include "AST_visitor.h"

namespace AST{
Visitor::~Visitor()
{
}

/* Invoked before the children are visited */
void Visitor::pre_node(Node* in)
{
}

void Visitor::pre_php_script(PHP_script* in)
{
}

void Visitor::pre_statement(Statement* in)
{
}

void Visitor::pre_class_def(Class_def* in)
{
}

void Visitor::pre_class_mod(Class_mod* in)
{
}

void Visitor::pre_interface_def(Interface_def* in)
{
}

void Visitor::pre_member(Member* in)
{
}

void Visitor::pre_method(Method* in)
{
}

void Visitor::pre_signature(Signature* in)
{
}

void Visitor::pre_method_mod(Method_mod* in)
{
}

void Visitor::pre_formal_parameter(Formal_parameter* in)
{
}

void Visitor::pre_type(Type* in)
{
}

void Visitor::pre_attribute(Attribute* in)
{
}

void Visitor::pre_attr_mod(Attr_mod* in)
{
}

void Visitor::pre_name_with_default(Name_with_default* in)
{
}

void Visitor::pre_if(If* in)
{
}

void Visitor::pre_while(While* in)
{
}

void Visitor::pre_do(Do* in)
{
}

void Visitor::pre_for(For* in)
{
}

void Visitor::pre_foreach(Foreach* in)
{
}

void Visitor::pre_switch(Switch* in)
{
}

void Visitor::pre_switch_case(Switch_case* in)
{
}

void Visitor::pre_break(Break* in)
{
}

void Visitor::pre_continue(Continue* in)
{
}

void Visitor::pre_return(Return* in)
{
}

void Visitor::pre_static_declaration(Static_declaration* in)
{
}

void Visitor::pre_global(Global* in)
{
}

void Visitor::pre_declare(Declare* in)
{
}

void Visitor::pre_directive(Directive* in)
{
}

void Visitor::pre_try(Try* in)
{
}

void Visitor::pre_catch(Catch* in)
{
}

void Visitor::pre_throw(Throw* in)
{
}

void Visitor::pre_eval_expr(Eval_expr* in)
{
}

void Visitor::pre_nop(Nop* in)
{
}

void Visitor::pre_expr(Expr* in)
{
}

void Visitor::pre_literal(Literal* in)
{
}

void Visitor::pre_assignment(Assignment* in)
{
}

void Visitor::pre_op_assignment(Op_assignment* in)
{
}

void Visitor::pre_list_assignment(List_assignment* in)
{
}

void Visitor::pre_list_element(List_element* in)
{
}

void Visitor::pre_nested_list_elements(Nested_list_elements* in)
{
}

void Visitor::pre_cast(Cast* in)
{
}

void Visitor::pre_unary_op(Unary_op* in)
{
}

void Visitor::pre_bin_op(Bin_op* in)
{
}

void Visitor::pre_conditional_expr(Conditional_expr* in)
{
}

void Visitor::pre_ignore_errors(Ignore_errors* in)
{
}

void Visitor::pre_constant(Constant* in)
{
}

void Visitor::pre_instanceof(Instanceof* in)
{
}

void Visitor::pre_variable(Variable* in)
{
}

void Visitor::pre_variable_name(Variable_name* in)
{
}

void Visitor::pre_reflection(Reflection* in)
{
}

void Visitor::pre_target(Target* in)
{
}

void Visitor::pre_pre_op(Pre_op* in)
{
}

void Visitor::pre_post_op(Post_op* in)
{
}

void Visitor::pre_array(Array* in)
{
}

void Visitor::pre_array_elem(Array_elem* in)
{
}

void Visitor::pre_method_invocation(Method_invocation* in)
{
}

void Visitor::pre_method_name(Method_name* in)
{
}

void Visitor::pre_actual_parameter(Actual_parameter* in)
{
}

void Visitor::pre_new(New* in)
{
}

void Visitor::pre_class_name(Class_name* in)
{
}

void Visitor::pre_commented_node(Commented_node* in)
{
}

void Visitor::pre_identifier(Identifier* in)
{
}

void Visitor::pre_source_rep(Source_rep* in)
{
}

void Visitor::pre_foreign(FOREIGN* in)
{
}

void Visitor::pre_class_name(CLASS_NAME* in)
{
}

void Visitor::pre_interface_name(INTERFACE_NAME* in)
{
}

void Visitor::pre_method_name(METHOD_NAME* in)
{
}

void Visitor::pre_variable_name(VARIABLE_NAME* in)
{
}

void Visitor::pre_directive_name(DIRECTIVE_NAME* in)
{
}

void Visitor::pre_int(INT* in)
{
}

void Visitor::pre_real(REAL* in)
{
}

void Visitor::pre_string(STRING* in)
{
}

void Visitor::pre_bool(BOOL* in)
{
}

void Visitor::pre_nil(NIL* in)
{
}

void Visitor::pre_op(OP* in)
{
}

void Visitor::pre_cast(CAST* in)
{
}

void Visitor::pre_constant_name(CONSTANT_NAME* in)
{
}

/* Invoked after the children have been visited */
void Visitor::post_node(Node* in)
{
}

void Visitor::post_php_script(PHP_script* in)
{
}

void Visitor::post_statement(Statement* in)
{
}

void Visitor::post_class_def(Class_def* in)
{
}

void Visitor::post_class_mod(Class_mod* in)
{
}

void Visitor::post_interface_def(Interface_def* in)
{
}

void Visitor::post_member(Member* in)
{
}

void Visitor::post_method(Method* in)
{
}

void Visitor::post_signature(Signature* in)
{
}

void Visitor::post_method_mod(Method_mod* in)
{
}

void Visitor::post_formal_parameter(Formal_parameter* in)
{
}

void Visitor::post_type(Type* in)
{
}

void Visitor::post_attribute(Attribute* in)
{
}

void Visitor::post_attr_mod(Attr_mod* in)
{
}

void Visitor::post_name_with_default(Name_with_default* in)
{
}

void Visitor::post_if(If* in)
{
}

void Visitor::post_while(While* in)
{
}

void Visitor::post_do(Do* in)
{
}

void Visitor::post_for(For* in)
{
}

void Visitor::post_foreach(Foreach* in)
{
}

void Visitor::post_switch(Switch* in)
{
}

void Visitor::post_switch_case(Switch_case* in)
{
}

void Visitor::post_break(Break* in)
{
}

void Visitor::post_continue(Continue* in)
{
}

void Visitor::post_return(Return* in)
{
}

void Visitor::post_static_declaration(Static_declaration* in)
{
}

void Visitor::post_global(Global* in)
{
}

void Visitor::post_declare(Declare* in)
{
}

void Visitor::post_directive(Directive* in)
{
}

void Visitor::post_try(Try* in)
{
}

void Visitor::post_catch(Catch* in)
{
}

void Visitor::post_throw(Throw* in)
{
}

void Visitor::post_eval_expr(Eval_expr* in)
{
}

void Visitor::post_nop(Nop* in)
{
}

void Visitor::post_expr(Expr* in)
{
}

void Visitor::post_literal(Literal* in)
{
}

void Visitor::post_assignment(Assignment* in)
{
}

void Visitor::post_op_assignment(Op_assignment* in)
{
}

void Visitor::post_list_assignment(List_assignment* in)
{
}

void Visitor::post_list_element(List_element* in)
{
}

void Visitor::post_nested_list_elements(Nested_list_elements* in)
{
}

void Visitor::post_cast(Cast* in)
{
}

void Visitor::post_unary_op(Unary_op* in)
{
}

void Visitor::post_bin_op(Bin_op* in)
{
}

void Visitor::post_conditional_expr(Conditional_expr* in)
{
}

void Visitor::post_ignore_errors(Ignore_errors* in)
{
}

void Visitor::post_constant(Constant* in)
{
}

void Visitor::post_instanceof(Instanceof* in)
{
}

void Visitor::post_variable(Variable* in)
{
}

void Visitor::post_variable_name(Variable_name* in)
{
}

void Visitor::post_reflection(Reflection* in)
{
}

void Visitor::post_target(Target* in)
{
}

void Visitor::post_pre_op(Pre_op* in)
{
}

void Visitor::post_post_op(Post_op* in)
{
}

void Visitor::post_array(Array* in)
{
}

void Visitor::post_array_elem(Array_elem* in)
{
}

void Visitor::post_method_invocation(Method_invocation* in)
{
}

void Visitor::post_method_name(Method_name* in)
{
}

void Visitor::post_actual_parameter(Actual_parameter* in)
{
}

void Visitor::post_new(New* in)
{
}

void Visitor::post_class_name(Class_name* in)
{
}

void Visitor::post_commented_node(Commented_node* in)
{
}

void Visitor::post_identifier(Identifier* in)
{
}

void Visitor::post_source_rep(Source_rep* in)
{
}

void Visitor::post_foreign(FOREIGN* in)
{
}

void Visitor::post_class_name(CLASS_NAME* in)
{
}

void Visitor::post_interface_name(INTERFACE_NAME* in)
{
}

void Visitor::post_method_name(METHOD_NAME* in)
{
}

void Visitor::post_variable_name(VARIABLE_NAME* in)
{
}

void Visitor::post_directive_name(DIRECTIVE_NAME* in)
{
}

void Visitor::post_int(INT* in)
{
}

void Visitor::post_real(REAL* in)
{
}

void Visitor::post_string(STRING* in)
{
}

void Visitor::post_bool(BOOL* in)
{
}

void Visitor::post_nil(NIL* in)
{
}

void Visitor::post_op(OP* in)
{
}

void Visitor::post_cast(CAST* in)
{
}

void Visitor::post_constant_name(CONSTANT_NAME* in)
{
}

/* Visit the children of a node */
void Visitor::children_php_script(PHP_script* in)
{
    visit_statement_list(in->statements);
}

void Visitor::children_class_def(Class_def* in)
{
    visit_class_mod(in->class_mod);
    visit_class_name(in->class_name);
    visit_class_name(in->extends);
    visit_interface_name_list(in->implements);
    visit_member_list(in->members);
}

void Visitor::children_class_mod(Class_mod* in)
{
    visit_marker("is_abstract", in->is_abstract);
    visit_marker("is_final", in->is_final);
}

void Visitor::children_interface_def(Interface_def* in)
{
    visit_interface_name(in->interface_name);
    visit_interface_name_list(in->extends);
    visit_member_list(in->members);
}

void Visitor::children_method(Method* in)
{
    visit_signature(in->signature);
    visit_statement_list(in->statements);
}

void Visitor::children_signature(Signature* in)
{
    visit_method_mod(in->method_mod);
    visit_marker("is_ref", in->is_ref);
    visit_method_name(in->method_name);
    visit_formal_parameter_list(in->formal_parameters);
}

void Visitor::children_method_mod(Method_mod* in)
{
    visit_marker("is_public", in->is_public);
    visit_marker("is_protected", in->is_protected);
    visit_marker("is_private", in->is_private);
    visit_marker("is_static", in->is_static);
    visit_marker("is_abstract", in->is_abstract);
    visit_marker("is_final", in->is_final);
}

void Visitor::children_formal_parameter(Formal_parameter* in)
{
    visit_type(in->type);
    visit_marker("is_ref", in->is_ref);
    visit_name_with_default(in->var);
}

void Visitor::children_type(Type* in)
{
    visit_class_name(in->class_name);
}

void Visitor::children_attribute(Attribute* in)
{
    visit_attr_mod(in->attr_mod);
    visit_name_with_default_list(in->vars);
}

void Visitor::children_attr_mod(Attr_mod* in)
{
    visit_marker("is_public", in->is_public);
    visit_marker("is_protected", in->is_protected);
    visit_marker("is_private", in->is_private);
    visit_marker("is_static", in->is_static);
    visit_marker("is_const", in->is_const);
}

void Visitor::children_name_with_default(Name_with_default* in)
{
    visit_variable_name(in->variable_name);
    visit_expr(in->expr);
}

void Visitor::children_if(If* in)
{
    visit_expr(in->expr);
    visit_statement_list(in->iftrue);
    visit_statement_list(in->iffalse);
}

void Visitor::children_while(While* in)
{
    visit_expr(in->expr);
    visit_statement_list(in->statements);
}

void Visitor::children_do(Do* in)
{
    visit_statement_list(in->statements);
    visit_expr(in->expr);
}

void Visitor::children_for(For* in)
{
    visit_expr(in->init);
    visit_expr(in->cond);
    visit_expr(in->incr);
    visit_statement_list(in->statements);
}

void Visitor::children_foreach(Foreach* in)
{
    visit_expr(in->expr);
    visit_variable(in->key);
    visit_marker("is_ref", in->is_ref);
    visit_variable(in->val);
    visit_statement_list(in->statements);
}

void Visitor::children_switch(Switch* in)
{
    visit_expr(in->expr);
    visit_switch_case_list(in->switch_cases);
}

void Visitor::children_switch_case(Switch_case* in)
{
    visit_expr(in->expr);
    visit_statement_list(in->statements);
}

void Visitor::children_break(Break* in)
{
    visit_expr(in->expr);
}

void Visitor::children_continue(Continue* in)
{
    visit_expr(in->expr);
}

void Visitor::children_return(Return* in)
{
    visit_expr(in->expr);
}

void Visitor::children_static_declaration(Static_declaration* in)
{
    visit_name_with_default_list(in->vars);
}

void Visitor::children_global(Global* in)
{
    visit_variable_name_list(in->variable_names);
}

void Visitor::children_declare(Declare* in)
{
    visit_directive_list(in->directives);
    visit_statement_list(in->statements);
}

void Visitor::children_directive(Directive* in)
{
    visit_directive_name(in->directive_name);
    visit_expr(in->expr);
}

void Visitor::children_try(Try* in)
{
    visit_statement_list(in->statements);
    visit_catch_list(in->catches);
}

void Visitor::children_catch(Catch* in)
{
    visit_class_name(in->class_name);
    visit_variable_name(in->variable_name);
    visit_statement_list(in->statements);
}

void Visitor::children_throw(Throw* in)
{
    visit_expr(in->expr);
}

void Visitor::children_eval_expr(Eval_expr* in)
{
    visit_expr(in->expr);
}

void Visitor::children_nop(Nop* in)
{
}

void Visitor::children_assignment(Assignment* in)
{
    visit_variable(in->variable);
    visit_marker("is_ref", in->is_ref);
    visit_expr(in->expr);
}

void Visitor::children_op_assignment(Op_assignment* in)
{
    visit_variable(in->variable);
    visit_op(in->op);
    visit_expr(in->expr);
}

void Visitor::children_list_assignment(List_assignment* in)
{
    visit_list_element_list(in->list_elements);
    visit_expr(in->expr);
}

void Visitor::children_nested_list_elements(Nested_list_elements* in)
{
    visit_list_element_list(in->list_elements);
}

void Visitor::children_cast(Cast* in)
{
    visit_cast(in->cast);
    visit_expr(in->expr);
}

void Visitor::children_unary_op(Unary_op* in)
{
    visit_op(in->op);
    visit_expr(in->expr);
}

void Visitor::children_bin_op(Bin_op* in)
{
    visit_expr(in->left);
    visit_op(in->op);
    visit_expr(in->right);
}

void Visitor::children_conditional_expr(Conditional_expr* in)
{
    visit_expr(in->cond);
    visit_expr(in->iftrue);
    visit_expr(in->iffalse);
}

void Visitor::children_ignore_errors(Ignore_errors* in)
{
    visit_expr(in->expr);
}

void Visitor::children_constant(Constant* in)
{
    visit_class_name(in->class_name);
    visit_constant_name(in->constant_name);
}

void Visitor::children_instanceof(Instanceof* in)
{
    visit_expr(in->expr);
    visit_class_name(in->class_name);
}

void Visitor::children_variable(Variable* in)
{
    visit_target(in->target);
    visit_variable_name(in->variable_name);
    visit_expr_list(in->array_indices);
}

void Visitor::children_reflection(Reflection* in)
{
    visit_expr(in->expr);
}

void Visitor::children_pre_op(Pre_op* in)
{
    visit_op(in->op);
    visit_variable(in->variable);
}

void Visitor::children_post_op(Post_op* in)
{
    visit_variable(in->variable);
    visit_op(in->op);
}

void Visitor::children_array(Array* in)
{
    visit_array_elem_list(in->array_elems);
}

void Visitor::children_array_elem(Array_elem* in)
{
    visit_expr(in->key);
    visit_marker("is_ref", in->is_ref);
    visit_expr(in->val);
}

void Visitor::children_method_invocation(Method_invocation* in)
{
    visit_target(in->target);
    visit_method_name(in->method_name);
    visit_actual_parameter_list(in->actual_parameters);
}

void Visitor::children_actual_parameter(Actual_parameter* in)
{
    visit_marker("is_ref", in->is_ref);
    visit_expr(in->expr);
}

void Visitor::children_new(New* in)
{
    visit_class_name(in->class_name);
    visit_actual_parameter_list(in->actual_parameters);
}

/* Tokens don't have children, so these methods do nothing by default */
void Visitor::children_foreign(FOREIGN* in)
{
}

void Visitor::children_class_name(CLASS_NAME* in)
{
}

void Visitor::children_interface_name(INTERFACE_NAME* in)
{
}

void Visitor::children_method_name(METHOD_NAME* in)
{
}

void Visitor::children_variable_name(VARIABLE_NAME* in)
{
}

void Visitor::children_directive_name(DIRECTIVE_NAME* in)
{
}

void Visitor::children_int(INT* in)
{
}

void Visitor::children_real(REAL* in)
{
}

void Visitor::children_string(STRING* in)
{
}

void Visitor::children_bool(BOOL* in)
{
}

void Visitor::children_nil(NIL* in)
{
}

void Visitor::children_op(OP* in)
{
}

void Visitor::children_cast(CAST* in)
{
}

void Visitor::children_constant_name(CONSTANT_NAME* in)
{
}

/* Unparser support */
void Visitor::visit_marker(char const* name, bool value)
{
}

void Visitor::visit_null(char const* name_space, char const* type_id)
{
}

void Visitor::visit_null_list(char const* name_space, char const* type_id)
{
}

void Visitor::pre_list(char const* name_space, char const* type_id, int size)
{
}

void Visitor::post_list(char const* name_space, char const* type_id, int size)
{
}

/* Invoke the chain of pre-visit methods along the inheritance hierachy */
/* Do not override unless you know what you are doing */
void Visitor::pre_php_script_chain(PHP_script* in)
{
    pre_node((Node*) in);
    pre_php_script((PHP_script*) in);
}

void Visitor::pre_class_def_chain(Class_def* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_class_def((Class_def*) in);
}

void Visitor::pre_class_mod_chain(Class_mod* in)
{
    pre_node((Node*) in);
    pre_class_mod((Class_mod*) in);
}

void Visitor::pre_interface_def_chain(Interface_def* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_interface_def((Interface_def*) in);
}

void Visitor::pre_method_chain(Method* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_member((Member*) in);
    pre_statement((Statement*) in);
    pre_method((Method*) in);
}

void Visitor::pre_signature_chain(Signature* in)
{
    pre_node((Node*) in);
    pre_signature((Signature*) in);
}

void Visitor::pre_method_mod_chain(Method_mod* in)
{
    pre_node((Node*) in);
    pre_method_mod((Method_mod*) in);
}

void Visitor::pre_formal_parameter_chain(Formal_parameter* in)
{
    pre_node((Node*) in);
    pre_formal_parameter((Formal_parameter*) in);
}

void Visitor::pre_type_chain(Type* in)
{
    pre_node((Node*) in);
    pre_type((Type*) in);
}

void Visitor::pre_attribute_chain(Attribute* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_member((Member*) in);
    pre_attribute((Attribute*) in);
}

void Visitor::pre_attr_mod_chain(Attr_mod* in)
{
    pre_node((Node*) in);
    pre_attr_mod((Attr_mod*) in);
}

void Visitor::pre_name_with_default_chain(Name_with_default* in)
{
    pre_node((Node*) in);
    pre_name_with_default((Name_with_default*) in);
}

void Visitor::pre_if_chain(If* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_if((If*) in);
}

void Visitor::pre_while_chain(While* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_while((While*) in);
}

void Visitor::pre_do_chain(Do* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_do((Do*) in);
}

void Visitor::pre_for_chain(For* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_for((For*) in);
}

void Visitor::pre_foreach_chain(Foreach* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_foreach((Foreach*) in);
}

void Visitor::pre_switch_chain(Switch* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_switch((Switch*) in);
}

void Visitor::pre_switch_case_chain(Switch_case* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_switch_case((Switch_case*) in);
}

void Visitor::pre_break_chain(Break* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_break((Break*) in);
}

void Visitor::pre_continue_chain(Continue* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_continue((Continue*) in);
}

void Visitor::pre_return_chain(Return* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_return((Return*) in);
}

void Visitor::pre_static_declaration_chain(Static_declaration* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_static_declaration((Static_declaration*) in);
}

void Visitor::pre_global_chain(Global* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_global((Global*) in);
}

void Visitor::pre_declare_chain(Declare* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_declare((Declare*) in);
}

void Visitor::pre_directive_chain(Directive* in)
{
    pre_node((Node*) in);
    pre_directive((Directive*) in);
}

void Visitor::pre_try_chain(Try* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_try((Try*) in);
}

void Visitor::pre_catch_chain(Catch* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_catch((Catch*) in);
}

void Visitor::pre_throw_chain(Throw* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_throw((Throw*) in);
}

void Visitor::pre_eval_expr_chain(Eval_expr* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_eval_expr((Eval_expr*) in);
}

void Visitor::pre_nop_chain(Nop* in)
{
    pre_node((Node*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_nop((Nop*) in);
}

void Visitor::pre_assignment_chain(Assignment* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_assignment((Assignment*) in);
}

void Visitor::pre_op_assignment_chain(Op_assignment* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_op_assignment((Op_assignment*) in);
}

void Visitor::pre_list_assignment_chain(List_assignment* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_list_assignment((List_assignment*) in);
}

void Visitor::pre_nested_list_elements_chain(Nested_list_elements* in)
{
    pre_node((Node*) in);
    pre_list_element((List_element*) in);
    pre_nested_list_elements((Nested_list_elements*) in);
}

void Visitor::pre_cast_chain(Cast* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_cast((Cast*) in);
}

void Visitor::pre_unary_op_chain(Unary_op* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_unary_op((Unary_op*) in);
}

void Visitor::pre_bin_op_chain(Bin_op* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_bin_op((Bin_op*) in);
}

void Visitor::pre_conditional_expr_chain(Conditional_expr* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_conditional_expr((Conditional_expr*) in);
}

void Visitor::pre_ignore_errors_chain(Ignore_errors* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_ignore_errors((Ignore_errors*) in);
}

void Visitor::pre_constant_chain(Constant* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_constant((Constant*) in);
}

void Visitor::pre_instanceof_chain(Instanceof* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_instanceof((Instanceof*) in);
}

void Visitor::pre_variable_chain(Variable* in)
{
    pre_node((Node*) in);
    pre_list_element((List_element*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_variable((Variable*) in);
}

void Visitor::pre_reflection_chain(Reflection* in)
{
    pre_node((Node*) in);
    pre_variable_name((Variable_name*) in);
    pre_method_name((Method_name*) in);
    pre_class_name((Class_name*) in);
    pre_reflection((Reflection*) in);
}

void Visitor::pre_pre_op_chain(Pre_op* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_pre_op((Pre_op*) in);
}

void Visitor::pre_post_op_chain(Post_op* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_post_op((Post_op*) in);
}

void Visitor::pre_array_chain(Array* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_array((Array*) in);
}

void Visitor::pre_array_elem_chain(Array_elem* in)
{
    pre_node((Node*) in);
    pre_array_elem((Array_elem*) in);
}

void Visitor::pre_method_invocation_chain(Method_invocation* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_method_invocation((Method_invocation*) in);
}

void Visitor::pre_actual_parameter_chain(Actual_parameter* in)
{
    pre_node((Node*) in);
    pre_actual_parameter((Actual_parameter*) in);
}

void Visitor::pre_new_chain(New* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_new((New*) in);
}

void Visitor::pre_foreign_chain(FOREIGN* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_commented_node((Commented_node*) in);
    pre_statement((Statement*) in);
    pre_foreign((FOREIGN*) in);
}

void Visitor::pre_class_name_chain(CLASS_NAME* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_class_name((Class_name*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_class_name((CLASS_NAME*) in);
}

void Visitor::pre_interface_name_chain(INTERFACE_NAME* in)
{
    pre_node((Node*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_interface_name((INTERFACE_NAME*) in);
}

void Visitor::pre_method_name_chain(METHOD_NAME* in)
{
    pre_node((Node*) in);
    pre_method_name((Method_name*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_method_name((METHOD_NAME*) in);
}

void Visitor::pre_variable_name_chain(VARIABLE_NAME* in)
{
    pre_node((Node*) in);
    pre_variable_name((Variable_name*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_variable_name((VARIABLE_NAME*) in);
}

void Visitor::pre_directive_name_chain(DIRECTIVE_NAME* in)
{
    pre_node((Node*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_directive_name((DIRECTIVE_NAME*) in);
}

void Visitor::pre_int_chain(INT* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_source_rep((Source_rep*) in);
    pre_literal((Literal*) in);
    pre_int((INT*) in);
}

void Visitor::pre_real_chain(REAL* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_source_rep((Source_rep*) in);
    pre_literal((Literal*) in);
    pre_real((REAL*) in);
}

void Visitor::pre_string_chain(STRING* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_source_rep((Source_rep*) in);
    pre_literal((Literal*) in);
    pre_string((STRING*) in);
}

void Visitor::pre_bool_chain(BOOL* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_source_rep((Source_rep*) in);
    pre_literal((Literal*) in);
    pre_bool((BOOL*) in);
}

void Visitor::pre_nil_chain(NIL* in)
{
    pre_node((Node*) in);
    pre_target((Target*) in);
    pre_expr((Expr*) in);
    pre_source_rep((Source_rep*) in);
    pre_literal((Literal*) in);
    pre_nil((NIL*) in);
}

void Visitor::pre_op_chain(OP* in)
{
    pre_node((Node*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_op((OP*) in);
}

void Visitor::pre_cast_chain(CAST* in)
{
    pre_node((Node*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_cast((CAST*) in);
}

void Visitor::pre_constant_name_chain(CONSTANT_NAME* in)
{
    pre_node((Node*) in);
    pre_source_rep((Source_rep*) in);
    pre_identifier((Identifier*) in);
    pre_constant_name((CONSTANT_NAME*) in);
}

/* Invoke the chain of post-visit methods along the inheritance hierarchy */
/* (invoked in opposite order to the pre-chain) */
/* Do not override unless you know what you are doing */
void Visitor::post_php_script_chain(PHP_script* in)
{
    post_php_script((PHP_script*) in);
    post_node((Node*) in);
}

void Visitor::post_class_def_chain(Class_def* in)
{
    post_class_def((Class_def*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_class_mod_chain(Class_mod* in)
{
    post_class_mod((Class_mod*) in);
    post_node((Node*) in);
}

void Visitor::post_interface_def_chain(Interface_def* in)
{
    post_interface_def((Interface_def*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_method_chain(Method* in)
{
    post_method((Method*) in);
    post_statement((Statement*) in);
    post_member((Member*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_signature_chain(Signature* in)
{
    post_signature((Signature*) in);
    post_node((Node*) in);
}

void Visitor::post_method_mod_chain(Method_mod* in)
{
    post_method_mod((Method_mod*) in);
    post_node((Node*) in);
}

void Visitor::post_formal_parameter_chain(Formal_parameter* in)
{
    post_formal_parameter((Formal_parameter*) in);
    post_node((Node*) in);
}

void Visitor::post_type_chain(Type* in)
{
    post_type((Type*) in);
    post_node((Node*) in);
}

void Visitor::post_attribute_chain(Attribute* in)
{
    post_attribute((Attribute*) in);
    post_member((Member*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_attr_mod_chain(Attr_mod* in)
{
    post_attr_mod((Attr_mod*) in);
    post_node((Node*) in);
}

void Visitor::post_name_with_default_chain(Name_with_default* in)
{
    post_name_with_default((Name_with_default*) in);
    post_node((Node*) in);
}

void Visitor::post_if_chain(If* in)
{
    post_if((If*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_while_chain(While* in)
{
    post_while((While*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_do_chain(Do* in)
{
    post_do((Do*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_for_chain(For* in)
{
    post_for((For*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_chain(Foreach* in)
{
    post_foreach((Foreach*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_switch_chain(Switch* in)
{
    post_switch((Switch*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_switch_case_chain(Switch_case* in)
{
    post_switch_case((Switch_case*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_break_chain(Break* in)
{
    post_break((Break*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_continue_chain(Continue* in)
{
    post_continue((Continue*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_return_chain(Return* in)
{
    post_return((Return*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_static_declaration_chain(Static_declaration* in)
{
    post_static_declaration((Static_declaration*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_global_chain(Global* in)
{
    post_global((Global*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_declare_chain(Declare* in)
{
    post_declare((Declare*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_directive_chain(Directive* in)
{
    post_directive((Directive*) in);
    post_node((Node*) in);
}

void Visitor::post_try_chain(Try* in)
{
    post_try((Try*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_catch_chain(Catch* in)
{
    post_catch((Catch*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_throw_chain(Throw* in)
{
    post_throw((Throw*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_eval_expr_chain(Eval_expr* in)
{
    post_eval_expr((Eval_expr*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_nop_chain(Nop* in)
{
    post_nop((Nop*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_node((Node*) in);
}

void Visitor::post_assignment_chain(Assignment* in)
{
    post_assignment((Assignment*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_op_assignment_chain(Op_assignment* in)
{
    post_op_assignment((Op_assignment*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_list_assignment_chain(List_assignment* in)
{
    post_list_assignment((List_assignment*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_nested_list_elements_chain(Nested_list_elements* in)
{
    post_nested_list_elements((Nested_list_elements*) in);
    post_list_element((List_element*) in);
    post_node((Node*) in);
}

void Visitor::post_cast_chain(Cast* in)
{
    post_cast((Cast*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_unary_op_chain(Unary_op* in)
{
    post_unary_op((Unary_op*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_bin_op_chain(Bin_op* in)
{
    post_bin_op((Bin_op*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_conditional_expr_chain(Conditional_expr* in)
{
    post_conditional_expr((Conditional_expr*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_ignore_errors_chain(Ignore_errors* in)
{
    post_ignore_errors((Ignore_errors*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_constant_chain(Constant* in)
{
    post_constant((Constant*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_instanceof_chain(Instanceof* in)
{
    post_instanceof((Instanceof*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_variable_chain(Variable* in)
{
    post_variable((Variable*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_list_element((List_element*) in);
    post_node((Node*) in);
}

void Visitor::post_reflection_chain(Reflection* in)
{
    post_reflection((Reflection*) in);
    post_class_name((Class_name*) in);
    post_method_name((Method_name*) in);
    post_variable_name((Variable_name*) in);
    post_node((Node*) in);
}

void Visitor::post_pre_op_chain(Pre_op* in)
{
    post_pre_op((Pre_op*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_post_op_chain(Post_op* in)
{
    post_post_op((Post_op*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_array_chain(Array* in)
{
    post_array((Array*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_array_elem_chain(Array_elem* in)
{
    post_array_elem((Array_elem*) in);
    post_node((Node*) in);
}

void Visitor::post_method_invocation_chain(Method_invocation* in)
{
    post_method_invocation((Method_invocation*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_actual_parameter_chain(Actual_parameter* in)
{
    post_actual_parameter((Actual_parameter*) in);
    post_node((Node*) in);
}

void Visitor::post_new_chain(New* in)
{
    post_new((New*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_foreign_chain(FOREIGN* in)
{
    post_foreign((FOREIGN*) in);
    post_statement((Statement*) in);
    post_commented_node((Commented_node*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_class_name_chain(CLASS_NAME* in)
{
    post_class_name((CLASS_NAME*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_class_name((Class_name*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_interface_name_chain(INTERFACE_NAME* in)
{
    post_interface_name((INTERFACE_NAME*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_node((Node*) in);
}

void Visitor::post_method_name_chain(METHOD_NAME* in)
{
    post_method_name((METHOD_NAME*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_method_name((Method_name*) in);
    post_node((Node*) in);
}

void Visitor::post_variable_name_chain(VARIABLE_NAME* in)
{
    post_variable_name((VARIABLE_NAME*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_variable_name((Variable_name*) in);
    post_node((Node*) in);
}

void Visitor::post_directive_name_chain(DIRECTIVE_NAME* in)
{
    post_directive_name((DIRECTIVE_NAME*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_node((Node*) in);
}

void Visitor::post_int_chain(INT* in)
{
    post_int((INT*) in);
    post_literal((Literal*) in);
    post_source_rep((Source_rep*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_real_chain(REAL* in)
{
    post_real((REAL*) in);
    post_literal((Literal*) in);
    post_source_rep((Source_rep*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_string_chain(STRING* in)
{
    post_string((STRING*) in);
    post_literal((Literal*) in);
    post_source_rep((Source_rep*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_bool_chain(BOOL* in)
{
    post_bool((BOOL*) in);
    post_literal((Literal*) in);
    post_source_rep((Source_rep*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_nil_chain(NIL* in)
{
    post_nil((NIL*) in);
    post_literal((Literal*) in);
    post_source_rep((Source_rep*) in);
    post_expr((Expr*) in);
    post_target((Target*) in);
    post_node((Node*) in);
}

void Visitor::post_op_chain(OP* in)
{
    post_op((OP*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_node((Node*) in);
}

void Visitor::post_cast_chain(CAST* in)
{
    post_cast((CAST*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_node((Node*) in);
}

void Visitor::post_constant_name_chain(CONSTANT_NAME* in)
{
    post_constant_name((CONSTANT_NAME*) in);
    post_identifier((Identifier*) in);
    post_source_rep((Source_rep*) in);
    post_node((Node*) in);
}

/* Call the pre-chain, visit children and post-chain in order */
/* Do not override unless you know what you are doing */
void Visitor::visit_statement_list(Statement_list* in)
{
    Statement_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Statement");
    else
    {
        pre_list("AST", "Statement", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_statement(*i);
        }
    
        post_list("AST", "Statement", in->size());
    }
}

void Visitor::visit_statement(Statement* in)
{
    if(in == NULL)
        visit_null("AST", "Statement");
    else
    {
        pre_statement_chain(in);
        children_statement(in);
        post_statement_chain(in);
    }
}

void Visitor::visit_class_mod(Class_mod* in)
{
    if(in == NULL)
        visit_null("AST", "Class_mod");
    else
    {
        pre_class_mod_chain(in);
        children_class_mod(in);
        post_class_mod_chain(in);
    }
}

void Visitor::visit_class_name(CLASS_NAME* in)
{
    if(in == NULL)
        visit_null("AST", "CLASS_NAME");
    else
    {
        pre_class_name_chain(in);
        children_class_name(in);
        post_class_name_chain(in);
    }
}

void Visitor::visit_interface_name_list(INTERFACE_NAME_list* in)
{
    INTERFACE_NAME_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "INTERFACE_NAME");
    else
    {
        pre_list("AST", "INTERFACE_NAME", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_interface_name(*i);
        }
    
        post_list("AST", "INTERFACE_NAME", in->size());
    }
}

void Visitor::visit_member_list(Member_list* in)
{
    Member_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Member");
    else
    {
        pre_list("AST", "Member", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_member(*i);
        }
    
        post_list("AST", "Member", in->size());
    }
}

void Visitor::visit_member(Member* in)
{
    if(in == NULL)
        visit_null("AST", "Member");
    else
    {
        pre_member_chain(in);
        children_member(in);
        post_member_chain(in);
    }
}

void Visitor::visit_interface_name(INTERFACE_NAME* in)
{
    if(in == NULL)
        visit_null("AST", "INTERFACE_NAME");
    else
    {
        pre_interface_name_chain(in);
        children_interface_name(in);
        post_interface_name_chain(in);
    }
}

void Visitor::visit_signature(Signature* in)
{
    if(in == NULL)
        visit_null("AST", "Signature");
    else
    {
        pre_signature_chain(in);
        children_signature(in);
        post_signature_chain(in);
    }
}

void Visitor::visit_method_mod(Method_mod* in)
{
    if(in == NULL)
        visit_null("AST", "Method_mod");
    else
    {
        pre_method_mod_chain(in);
        children_method_mod(in);
        post_method_mod_chain(in);
    }
}

void Visitor::visit_method_name(METHOD_NAME* in)
{
    if(in == NULL)
        visit_null("AST", "METHOD_NAME");
    else
    {
        pre_method_name_chain(in);
        children_method_name(in);
        post_method_name_chain(in);
    }
}

void Visitor::visit_formal_parameter_list(Formal_parameter_list* in)
{
    Formal_parameter_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Formal_parameter");
    else
    {
        pre_list("AST", "Formal_parameter", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_formal_parameter(*i);
        }
    
        post_list("AST", "Formal_parameter", in->size());
    }
}

void Visitor::visit_formal_parameter(Formal_parameter* in)
{
    if(in == NULL)
        visit_null("AST", "Formal_parameter");
    else
    {
        pre_formal_parameter_chain(in);
        children_formal_parameter(in);
        post_formal_parameter_chain(in);
    }
}

void Visitor::visit_type(Type* in)
{
    if(in == NULL)
        visit_null("AST", "Type");
    else
    {
        pre_type_chain(in);
        children_type(in);
        post_type_chain(in);
    }
}

void Visitor::visit_name_with_default(Name_with_default* in)
{
    if(in == NULL)
        visit_null("AST", "Name_with_default");
    else
    {
        pre_name_with_default_chain(in);
        children_name_with_default(in);
        post_name_with_default_chain(in);
    }
}

void Visitor::visit_attr_mod(Attr_mod* in)
{
    if(in == NULL)
        visit_null("AST", "Attr_mod");
    else
    {
        pre_attr_mod_chain(in);
        children_attr_mod(in);
        post_attr_mod_chain(in);
    }
}

void Visitor::visit_name_with_default_list(Name_with_default_list* in)
{
    Name_with_default_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Name_with_default");
    else
    {
        pre_list("AST", "Name_with_default", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_name_with_default(*i);
        }
    
        post_list("AST", "Name_with_default", in->size());
    }
}

void Visitor::visit_variable_name(VARIABLE_NAME* in)
{
    if(in == NULL)
        visit_null("AST", "VARIABLE_NAME");
    else
    {
        pre_variable_name_chain(in);
        children_variable_name(in);
        post_variable_name_chain(in);
    }
}

void Visitor::visit_expr(Expr* in)
{
    if(in == NULL)
        visit_null("AST", "Expr");
    else
    {
        pre_expr_chain(in);
        children_expr(in);
        post_expr_chain(in);
    }
}

void Visitor::visit_variable(Variable* in)
{
    if(in == NULL)
        visit_null("AST", "Variable");
    else
    {
        pre_variable_chain(in);
        children_variable(in);
        post_variable_chain(in);
    }
}

void Visitor::visit_switch_case_list(Switch_case_list* in)
{
    Switch_case_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Switch_case");
    else
    {
        pre_list("AST", "Switch_case", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_switch_case(*i);
        }
    
        post_list("AST", "Switch_case", in->size());
    }
}

void Visitor::visit_switch_case(Switch_case* in)
{
    if(in == NULL)
        visit_null("AST", "Switch_case");
    else
    {
        pre_switch_case_chain(in);
        children_switch_case(in);
        post_switch_case_chain(in);
    }
}

void Visitor::visit_variable_name_list(Variable_name_list* in)
{
    Variable_name_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Variable_name");
    else
    {
        pre_list("AST", "Variable_name", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_variable_name(*i);
        }
    
        post_list("AST", "Variable_name", in->size());
    }
}

void Visitor::visit_directive_list(Directive_list* in)
{
    Directive_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Directive");
    else
    {
        pre_list("AST", "Directive", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_directive(*i);
        }
    
        post_list("AST", "Directive", in->size());
    }
}

void Visitor::visit_directive(Directive* in)
{
    if(in == NULL)
        visit_null("AST", "Directive");
    else
    {
        pre_directive_chain(in);
        children_directive(in);
        post_directive_chain(in);
    }
}

void Visitor::visit_directive_name(DIRECTIVE_NAME* in)
{
    if(in == NULL)
        visit_null("AST", "DIRECTIVE_NAME");
    else
    {
        pre_directive_name_chain(in);
        children_directive_name(in);
        post_directive_name_chain(in);
    }
}

void Visitor::visit_catch_list(Catch_list* in)
{
    Catch_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Catch");
    else
    {
        pre_list("AST", "Catch", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_catch(*i);
        }
    
        post_list("AST", "Catch", in->size());
    }
}

void Visitor::visit_catch(Catch* in)
{
    if(in == NULL)
        visit_null("AST", "Catch");
    else
    {
        pre_catch_chain(in);
        children_catch(in);
        post_catch_chain(in);
    }
}

void Visitor::visit_op(OP* in)
{
    if(in == NULL)
        visit_null("AST", "OP");
    else
    {
        pre_op_chain(in);
        children_op(in);
        post_op_chain(in);
    }
}

void Visitor::visit_list_element_list(List_element_list* in)
{
    List_element_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "List_element");
    else
    {
        pre_list("AST", "List_element", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_list_element(*i);
        }
    
        post_list("AST", "List_element", in->size());
    }
}

void Visitor::visit_list_element(List_element* in)
{
    if(in == NULL)
        visit_null("AST", "List_element");
    else
    {
        pre_list_element_chain(in);
        children_list_element(in);
        post_list_element_chain(in);
    }
}

void Visitor::visit_cast(CAST* in)
{
    if(in == NULL)
        visit_null("AST", "CAST");
    else
    {
        pre_cast_chain(in);
        children_cast(in);
        post_cast_chain(in);
    }
}

void Visitor::visit_constant_name(CONSTANT_NAME* in)
{
    if(in == NULL)
        visit_null("AST", "CONSTANT_NAME");
    else
    {
        pre_constant_name_chain(in);
        children_constant_name(in);
        post_constant_name_chain(in);
    }
}

void Visitor::visit_class_name(Class_name* in)
{
    if(in == NULL)
        visit_null("AST", "Class_name");
    else
    {
        pre_class_name_chain(in);
        children_class_name(in);
        post_class_name_chain(in);
    }
}

void Visitor::visit_target(Target* in)
{
    if(in == NULL)
        visit_null("AST", "Target");
    else
    {
        pre_target_chain(in);
        children_target(in);
        post_target_chain(in);
    }
}

void Visitor::visit_variable_name(Variable_name* in)
{
    if(in == NULL)
        visit_null("AST", "Variable_name");
    else
    {
        pre_variable_name_chain(in);
        children_variable_name(in);
        post_variable_name_chain(in);
    }
}

void Visitor::visit_expr_list(Expr_list* in)
{
    Expr_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Expr");
    else
    {
        pre_list("AST", "Expr", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_expr(*i);
        }
    
        post_list("AST", "Expr", in->size());
    }
}

void Visitor::visit_array_elem_list(Array_elem_list* in)
{
    Array_elem_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Array_elem");
    else
    {
        pre_list("AST", "Array_elem", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_array_elem(*i);
        }
    
        post_list("AST", "Array_elem", in->size());
    }
}

void Visitor::visit_array_elem(Array_elem* in)
{
    if(in == NULL)
        visit_null("AST", "Array_elem");
    else
    {
        pre_array_elem_chain(in);
        children_array_elem(in);
        post_array_elem_chain(in);
    }
}

void Visitor::visit_method_name(Method_name* in)
{
    if(in == NULL)
        visit_null("AST", "Method_name");
    else
    {
        pre_method_name_chain(in);
        children_method_name(in);
        post_method_name_chain(in);
    }
}

void Visitor::visit_actual_parameter_list(Actual_parameter_list* in)
{
    Actual_parameter_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("AST", "Actual_parameter");
    else
    {
        pre_list("AST", "Actual_parameter", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_actual_parameter(*i);
        }
    
        post_list("AST", "Actual_parameter", in->size());
    }
}

void Visitor::visit_actual_parameter(Actual_parameter* in)
{
    if(in == NULL)
        visit_null("AST", "Actual_parameter");
    else
    {
        pre_actual_parameter_chain(in);
        children_actual_parameter(in);
        post_actual_parameter_chain(in);
    }
}

void Visitor::visit_php_script(PHP_script* in)
{
    if(in == NULL)
        visit_null("AST", "PHP_script");
    else
    {
        pre_php_script_chain(in);
        children_php_script(in);
        post_php_script_chain(in);
    }
}

/* Invoke the right pre-chain (manual dispatching) */
/* Do not override unless you know what you are doing */
void Visitor::pre_statement_chain(Statement* in)
{
    switch(in->classid())
    {
    case Class_def::ID:
        pre_class_def_chain(dynamic_cast<Class_def*>(in));
        break;
    case Interface_def::ID:
        pre_interface_def_chain(dynamic_cast<Interface_def*>(in));
        break;
    case Method::ID:
        pre_method_chain(dynamic_cast<Method*>(in));
        break;
    case Return::ID:
        pre_return_chain(dynamic_cast<Return*>(in));
        break;
    case Static_declaration::ID:
        pre_static_declaration_chain(dynamic_cast<Static_declaration*>(in));
        break;
    case Global::ID:
        pre_global_chain(dynamic_cast<Global*>(in));
        break;
    case Try::ID:
        pre_try_chain(dynamic_cast<Try*>(in));
        break;
    case Throw::ID:
        pre_throw_chain(dynamic_cast<Throw*>(in));
        break;
    case Eval_expr::ID:
        pre_eval_expr_chain(dynamic_cast<Eval_expr*>(in));
        break;
    case If::ID:
        pre_if_chain(dynamic_cast<If*>(in));
        break;
    case While::ID:
        pre_while_chain(dynamic_cast<While*>(in));
        break;
    case Do::ID:
        pre_do_chain(dynamic_cast<Do*>(in));
        break;
    case For::ID:
        pre_for_chain(dynamic_cast<For*>(in));
        break;
    case Foreach::ID:
        pre_foreach_chain(dynamic_cast<Foreach*>(in));
        break;
    case Switch::ID:
        pre_switch_chain(dynamic_cast<Switch*>(in));
        break;
    case Break::ID:
        pre_break_chain(dynamic_cast<Break*>(in));
        break;
    case Continue::ID:
        pre_continue_chain(dynamic_cast<Continue*>(in));
        break;
    case Declare::ID:
        pre_declare_chain(dynamic_cast<Declare*>(in));
        break;
    case Nop::ID:
        pre_nop_chain(dynamic_cast<Nop*>(in));
        break;
    case FOREIGN::ID:
        pre_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    }
}

void Visitor::pre_member_chain(Member* in)
{
    switch(in->classid())
    {
    case Method::ID:
        pre_method_chain(dynamic_cast<Method*>(in));
        break;
    case Attribute::ID:
        pre_attribute_chain(dynamic_cast<Attribute*>(in));
        break;
    }
}

void Visitor::pre_expr_chain(Expr* in)
{
    switch(in->classid())
    {
    case Assignment::ID:
        pre_assignment_chain(dynamic_cast<Assignment*>(in));
        break;
    case Cast::ID:
        pre_cast_chain(dynamic_cast<Cast*>(in));
        break;
    case Unary_op::ID:
        pre_unary_op_chain(dynamic_cast<Unary_op*>(in));
        break;
    case Bin_op::ID:
        pre_bin_op_chain(dynamic_cast<Bin_op*>(in));
        break;
    case Constant::ID:
        pre_constant_chain(dynamic_cast<Constant*>(in));
        break;
    case Instanceof::ID:
        pre_instanceof_chain(dynamic_cast<Instanceof*>(in));
        break;
    case Variable::ID:
        pre_variable_chain(dynamic_cast<Variable*>(in));
        break;
    case Pre_op::ID:
        pre_pre_op_chain(dynamic_cast<Pre_op*>(in));
        break;
    case Method_invocation::ID:
        pre_method_invocation_chain(dynamic_cast<Method_invocation*>(in));
        break;
    case New::ID:
        pre_new_chain(dynamic_cast<New*>(in));
        break;
    case INT::ID:
        pre_int_chain(dynamic_cast<INT*>(in));
        break;
    case REAL::ID:
        pre_real_chain(dynamic_cast<REAL*>(in));
        break;
    case STRING::ID:
        pre_string_chain(dynamic_cast<STRING*>(in));
        break;
    case BOOL::ID:
        pre_bool_chain(dynamic_cast<BOOL*>(in));
        break;
    case NIL::ID:
        pre_nil_chain(dynamic_cast<NIL*>(in));
        break;
    case Op_assignment::ID:
        pre_op_assignment_chain(dynamic_cast<Op_assignment*>(in));
        break;
    case List_assignment::ID:
        pre_list_assignment_chain(dynamic_cast<List_assignment*>(in));
        break;
    case Post_op::ID:
        pre_post_op_chain(dynamic_cast<Post_op*>(in));
        break;
    case Array::ID:
        pre_array_chain(dynamic_cast<Array*>(in));
        break;
    case Conditional_expr::ID:
        pre_conditional_expr_chain(dynamic_cast<Conditional_expr*>(in));
        break;
    case Ignore_errors::ID:
        pre_ignore_errors_chain(dynamic_cast<Ignore_errors*>(in));
        break;
    case FOREIGN::ID:
        pre_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    }
}

void Visitor::pre_variable_name_chain(Variable_name* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID:
        pre_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case Reflection::ID:
        pre_reflection_chain(dynamic_cast<Reflection*>(in));
        break;
    }
}

void Visitor::pre_list_element_chain(List_element* in)
{
    switch(in->classid())
    {
    case Variable::ID:
        pre_variable_chain(dynamic_cast<Variable*>(in));
        break;
    case Nested_list_elements::ID:
        pre_nested_list_elements_chain(dynamic_cast<Nested_list_elements*>(in));
        break;
    }
}

void Visitor::pre_class_name_chain(Class_name* in)
{
    switch(in->classid())
    {
    case CLASS_NAME::ID:
        pre_class_name_chain(dynamic_cast<CLASS_NAME*>(in));
        break;
    case Reflection::ID:
        pre_reflection_chain(dynamic_cast<Reflection*>(in));
        break;
    }
}

void Visitor::pre_target_chain(Target* in)
{
    switch(in->classid())
    {
    case Assignment::ID:
        pre_assignment_chain(dynamic_cast<Assignment*>(in));
        break;
    case Cast::ID:
        pre_cast_chain(dynamic_cast<Cast*>(in));
        break;
    case Unary_op::ID:
        pre_unary_op_chain(dynamic_cast<Unary_op*>(in));
        break;
    case Bin_op::ID:
        pre_bin_op_chain(dynamic_cast<Bin_op*>(in));
        break;
    case Constant::ID:
        pre_constant_chain(dynamic_cast<Constant*>(in));
        break;
    case Instanceof::ID:
        pre_instanceof_chain(dynamic_cast<Instanceof*>(in));
        break;
    case Variable::ID:
        pre_variable_chain(dynamic_cast<Variable*>(in));
        break;
    case Pre_op::ID:
        pre_pre_op_chain(dynamic_cast<Pre_op*>(in));
        break;
    case Method_invocation::ID:
        pre_method_invocation_chain(dynamic_cast<Method_invocation*>(in));
        break;
    case New::ID:
        pre_new_chain(dynamic_cast<New*>(in));
        break;
    case INT::ID:
        pre_int_chain(dynamic_cast<INT*>(in));
        break;
    case REAL::ID:
        pre_real_chain(dynamic_cast<REAL*>(in));
        break;
    case STRING::ID:
        pre_string_chain(dynamic_cast<STRING*>(in));
        break;
    case BOOL::ID:
        pre_bool_chain(dynamic_cast<BOOL*>(in));
        break;
    case NIL::ID:
        pre_nil_chain(dynamic_cast<NIL*>(in));
        break;
    case Op_assignment::ID:
        pre_op_assignment_chain(dynamic_cast<Op_assignment*>(in));
        break;
    case List_assignment::ID:
        pre_list_assignment_chain(dynamic_cast<List_assignment*>(in));
        break;
    case Post_op::ID:
        pre_post_op_chain(dynamic_cast<Post_op*>(in));
        break;
    case Array::ID:
        pre_array_chain(dynamic_cast<Array*>(in));
        break;
    case Conditional_expr::ID:
        pre_conditional_expr_chain(dynamic_cast<Conditional_expr*>(in));
        break;
    case Ignore_errors::ID:
        pre_ignore_errors_chain(dynamic_cast<Ignore_errors*>(in));
        break;
    case FOREIGN::ID:
        pre_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    case CLASS_NAME::ID:
        pre_class_name_chain(dynamic_cast<CLASS_NAME*>(in));
        break;
    }
}

void Visitor::pre_method_name_chain(Method_name* in)
{
    switch(in->classid())
    {
    case METHOD_NAME::ID:
        pre_method_name_chain(dynamic_cast<METHOD_NAME*>(in));
        break;
    case Reflection::ID:
        pre_reflection_chain(dynamic_cast<Reflection*>(in));
        break;
    }
}

/* Invoke the right post-chain (manual dispatching) */
/* Do not override unless you know what you are doing */
void Visitor::post_statement_chain(Statement* in)
{
    switch(in->classid())
    {
    case Class_def::ID:
        post_class_def_chain(dynamic_cast<Class_def*>(in));
        break;
    case Interface_def::ID:
        post_interface_def_chain(dynamic_cast<Interface_def*>(in));
        break;
    case Method::ID:
        post_method_chain(dynamic_cast<Method*>(in));
        break;
    case Return::ID:
        post_return_chain(dynamic_cast<Return*>(in));
        break;
    case Static_declaration::ID:
        post_static_declaration_chain(dynamic_cast<Static_declaration*>(in));
        break;
    case Global::ID:
        post_global_chain(dynamic_cast<Global*>(in));
        break;
    case Try::ID:
        post_try_chain(dynamic_cast<Try*>(in));
        break;
    case Throw::ID:
        post_throw_chain(dynamic_cast<Throw*>(in));
        break;
    case Eval_expr::ID:
        post_eval_expr_chain(dynamic_cast<Eval_expr*>(in));
        break;
    case If::ID:
        post_if_chain(dynamic_cast<If*>(in));
        break;
    case While::ID:
        post_while_chain(dynamic_cast<While*>(in));
        break;
    case Do::ID:
        post_do_chain(dynamic_cast<Do*>(in));
        break;
    case For::ID:
        post_for_chain(dynamic_cast<For*>(in));
        break;
    case Foreach::ID:
        post_foreach_chain(dynamic_cast<Foreach*>(in));
        break;
    case Switch::ID:
        post_switch_chain(dynamic_cast<Switch*>(in));
        break;
    case Break::ID:
        post_break_chain(dynamic_cast<Break*>(in));
        break;
    case Continue::ID:
        post_continue_chain(dynamic_cast<Continue*>(in));
        break;
    case Declare::ID:
        post_declare_chain(dynamic_cast<Declare*>(in));
        break;
    case Nop::ID:
        post_nop_chain(dynamic_cast<Nop*>(in));
        break;
    case FOREIGN::ID:
        post_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    }
}

void Visitor::post_member_chain(Member* in)
{
    switch(in->classid())
    {
    case Method::ID:
        post_method_chain(dynamic_cast<Method*>(in));
        break;
    case Attribute::ID:
        post_attribute_chain(dynamic_cast<Attribute*>(in));
        break;
    }
}

void Visitor::post_expr_chain(Expr* in)
{
    switch(in->classid())
    {
    case Assignment::ID:
        post_assignment_chain(dynamic_cast<Assignment*>(in));
        break;
    case Cast::ID:
        post_cast_chain(dynamic_cast<Cast*>(in));
        break;
    case Unary_op::ID:
        post_unary_op_chain(dynamic_cast<Unary_op*>(in));
        break;
    case Bin_op::ID:
        post_bin_op_chain(dynamic_cast<Bin_op*>(in));
        break;
    case Constant::ID:
        post_constant_chain(dynamic_cast<Constant*>(in));
        break;
    case Instanceof::ID:
        post_instanceof_chain(dynamic_cast<Instanceof*>(in));
        break;
    case Variable::ID:
        post_variable_chain(dynamic_cast<Variable*>(in));
        break;
    case Pre_op::ID:
        post_pre_op_chain(dynamic_cast<Pre_op*>(in));
        break;
    case Method_invocation::ID:
        post_method_invocation_chain(dynamic_cast<Method_invocation*>(in));
        break;
    case New::ID:
        post_new_chain(dynamic_cast<New*>(in));
        break;
    case INT::ID:
        post_int_chain(dynamic_cast<INT*>(in));
        break;
    case REAL::ID:
        post_real_chain(dynamic_cast<REAL*>(in));
        break;
    case STRING::ID:
        post_string_chain(dynamic_cast<STRING*>(in));
        break;
    case BOOL::ID:
        post_bool_chain(dynamic_cast<BOOL*>(in));
        break;
    case NIL::ID:
        post_nil_chain(dynamic_cast<NIL*>(in));
        break;
    case Op_assignment::ID:
        post_op_assignment_chain(dynamic_cast<Op_assignment*>(in));
        break;
    case List_assignment::ID:
        post_list_assignment_chain(dynamic_cast<List_assignment*>(in));
        break;
    case Post_op::ID:
        post_post_op_chain(dynamic_cast<Post_op*>(in));
        break;
    case Array::ID:
        post_array_chain(dynamic_cast<Array*>(in));
        break;
    case Conditional_expr::ID:
        post_conditional_expr_chain(dynamic_cast<Conditional_expr*>(in));
        break;
    case Ignore_errors::ID:
        post_ignore_errors_chain(dynamic_cast<Ignore_errors*>(in));
        break;
    case FOREIGN::ID:
        post_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    }
}

void Visitor::post_variable_name_chain(Variable_name* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID:
        post_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case Reflection::ID:
        post_reflection_chain(dynamic_cast<Reflection*>(in));
        break;
    }
}

void Visitor::post_list_element_chain(List_element* in)
{
    switch(in->classid())
    {
    case Variable::ID:
        post_variable_chain(dynamic_cast<Variable*>(in));
        break;
    case Nested_list_elements::ID:
        post_nested_list_elements_chain(dynamic_cast<Nested_list_elements*>(in));
        break;
    }
}

void Visitor::post_class_name_chain(Class_name* in)
{
    switch(in->classid())
    {
    case CLASS_NAME::ID:
        post_class_name_chain(dynamic_cast<CLASS_NAME*>(in));
        break;
    case Reflection::ID:
        post_reflection_chain(dynamic_cast<Reflection*>(in));
        break;
    }
}

void Visitor::post_target_chain(Target* in)
{
    switch(in->classid())
    {
    case Assignment::ID:
        post_assignment_chain(dynamic_cast<Assignment*>(in));
        break;
    case Cast::ID:
        post_cast_chain(dynamic_cast<Cast*>(in));
        break;
    case Unary_op::ID:
        post_unary_op_chain(dynamic_cast<Unary_op*>(in));
        break;
    case Bin_op::ID:
        post_bin_op_chain(dynamic_cast<Bin_op*>(in));
        break;
    case Constant::ID:
        post_constant_chain(dynamic_cast<Constant*>(in));
        break;
    case Instanceof::ID:
        post_instanceof_chain(dynamic_cast<Instanceof*>(in));
        break;
    case Variable::ID:
        post_variable_chain(dynamic_cast<Variable*>(in));
        break;
    case Pre_op::ID:
        post_pre_op_chain(dynamic_cast<Pre_op*>(in));
        break;
    case Method_invocation::ID:
        post_method_invocation_chain(dynamic_cast<Method_invocation*>(in));
        break;
    case New::ID:
        post_new_chain(dynamic_cast<New*>(in));
        break;
    case INT::ID:
        post_int_chain(dynamic_cast<INT*>(in));
        break;
    case REAL::ID:
        post_real_chain(dynamic_cast<REAL*>(in));
        break;
    case STRING::ID:
        post_string_chain(dynamic_cast<STRING*>(in));
        break;
    case BOOL::ID:
        post_bool_chain(dynamic_cast<BOOL*>(in));
        break;
    case NIL::ID:
        post_nil_chain(dynamic_cast<NIL*>(in));
        break;
    case Op_assignment::ID:
        post_op_assignment_chain(dynamic_cast<Op_assignment*>(in));
        break;
    case List_assignment::ID:
        post_list_assignment_chain(dynamic_cast<List_assignment*>(in));
        break;
    case Post_op::ID:
        post_post_op_chain(dynamic_cast<Post_op*>(in));
        break;
    case Array::ID:
        post_array_chain(dynamic_cast<Array*>(in));
        break;
    case Conditional_expr::ID:
        post_conditional_expr_chain(dynamic_cast<Conditional_expr*>(in));
        break;
    case Ignore_errors::ID:
        post_ignore_errors_chain(dynamic_cast<Ignore_errors*>(in));
        break;
    case FOREIGN::ID:
        post_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    case CLASS_NAME::ID:
        post_class_name_chain(dynamic_cast<CLASS_NAME*>(in));
        break;
    }
}

void Visitor::post_method_name_chain(Method_name* in)
{
    switch(in->classid())
    {
    case METHOD_NAME::ID:
        post_method_name_chain(dynamic_cast<METHOD_NAME*>(in));
        break;
    case Reflection::ID:
        post_reflection_chain(dynamic_cast<Reflection*>(in));
        break;
    }
}

/* Invoke the right visit-children (manual dispatching) */
/* Do not override unless you know what you are doing */
void Visitor::children_statement(Statement* in)
{
    switch(in->classid())
    {
    case Class_def::ID:
        children_class_def(dynamic_cast<Class_def*>(in));
        break;
    case Interface_def::ID:
        children_interface_def(dynamic_cast<Interface_def*>(in));
        break;
    case Method::ID:
        children_method(dynamic_cast<Method*>(in));
        break;
    case Return::ID:
        children_return(dynamic_cast<Return*>(in));
        break;
    case Static_declaration::ID:
        children_static_declaration(dynamic_cast<Static_declaration*>(in));
        break;
    case Global::ID:
        children_global(dynamic_cast<Global*>(in));
        break;
    case Try::ID:
        children_try(dynamic_cast<Try*>(in));
        break;
    case Throw::ID:
        children_throw(dynamic_cast<Throw*>(in));
        break;
    case Eval_expr::ID:
        children_eval_expr(dynamic_cast<Eval_expr*>(in));
        break;
    case If::ID:
        children_if(dynamic_cast<If*>(in));
        break;
    case While::ID:
        children_while(dynamic_cast<While*>(in));
        break;
    case Do::ID:
        children_do(dynamic_cast<Do*>(in));
        break;
    case For::ID:
        children_for(dynamic_cast<For*>(in));
        break;
    case Foreach::ID:
        children_foreach(dynamic_cast<Foreach*>(in));
        break;
    case Switch::ID:
        children_switch(dynamic_cast<Switch*>(in));
        break;
    case Break::ID:
        children_break(dynamic_cast<Break*>(in));
        break;
    case Continue::ID:
        children_continue(dynamic_cast<Continue*>(in));
        break;
    case Declare::ID:
        children_declare(dynamic_cast<Declare*>(in));
        break;
    case Nop::ID:
        children_nop(dynamic_cast<Nop*>(in));
        break;
    case FOREIGN::ID:
        children_foreign(dynamic_cast<FOREIGN*>(in));
        break;
    }
}

void Visitor::children_member(Member* in)
{
    switch(in->classid())
    {
    case Method::ID:
        children_method(dynamic_cast<Method*>(in));
        break;
    case Attribute::ID:
        children_attribute(dynamic_cast<Attribute*>(in));
        break;
    }
}

void Visitor::children_expr(Expr* in)
{
    switch(in->classid())
    {
    case Assignment::ID:
        children_assignment(dynamic_cast<Assignment*>(in));
        break;
    case Cast::ID:
        children_cast(dynamic_cast<Cast*>(in));
        break;
    case Unary_op::ID:
        children_unary_op(dynamic_cast<Unary_op*>(in));
        break;
    case Bin_op::ID:
        children_bin_op(dynamic_cast<Bin_op*>(in));
        break;
    case Constant::ID:
        children_constant(dynamic_cast<Constant*>(in));
        break;
    case Instanceof::ID:
        children_instanceof(dynamic_cast<Instanceof*>(in));
        break;
    case Variable::ID:
        children_variable(dynamic_cast<Variable*>(in));
        break;
    case Pre_op::ID:
        children_pre_op(dynamic_cast<Pre_op*>(in));
        break;
    case Method_invocation::ID:
        children_method_invocation(dynamic_cast<Method_invocation*>(in));
        break;
    case New::ID:
        children_new(dynamic_cast<New*>(in));
        break;
    case INT::ID:
        children_int(dynamic_cast<INT*>(in));
        break;
    case REAL::ID:
        children_real(dynamic_cast<REAL*>(in));
        break;
    case STRING::ID:
        children_string(dynamic_cast<STRING*>(in));
        break;
    case BOOL::ID:
        children_bool(dynamic_cast<BOOL*>(in));
        break;
    case NIL::ID:
        children_nil(dynamic_cast<NIL*>(in));
        break;
    case Op_assignment::ID:
        children_op_assignment(dynamic_cast<Op_assignment*>(in));
        break;
    case List_assignment::ID:
        children_list_assignment(dynamic_cast<List_assignment*>(in));
        break;
    case Post_op::ID:
        children_post_op(dynamic_cast<Post_op*>(in));
        break;
    case Array::ID:
        children_array(dynamic_cast<Array*>(in));
        break;
    case Conditional_expr::ID:
        children_conditional_expr(dynamic_cast<Conditional_expr*>(in));
        break;
    case Ignore_errors::ID:
        children_ignore_errors(dynamic_cast<Ignore_errors*>(in));
        break;
    case FOREIGN::ID:
        children_foreign(dynamic_cast<FOREIGN*>(in));
        break;
    }
}

void Visitor::children_variable_name(Variable_name* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID:
        children_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case Reflection::ID:
        children_reflection(dynamic_cast<Reflection*>(in));
        break;
    }
}

void Visitor::children_list_element(List_element* in)
{
    switch(in->classid())
    {
    case Variable::ID:
        children_variable(dynamic_cast<Variable*>(in));
        break;
    case Nested_list_elements::ID:
        children_nested_list_elements(dynamic_cast<Nested_list_elements*>(in));
        break;
    }
}

void Visitor::children_class_name(Class_name* in)
{
    switch(in->classid())
    {
    case CLASS_NAME::ID:
        children_class_name(dynamic_cast<CLASS_NAME*>(in));
        break;
    case Reflection::ID:
        children_reflection(dynamic_cast<Reflection*>(in));
        break;
    }
}

void Visitor::children_target(Target* in)
{
    switch(in->classid())
    {
    case Assignment::ID:
        children_assignment(dynamic_cast<Assignment*>(in));
        break;
    case Cast::ID:
        children_cast(dynamic_cast<Cast*>(in));
        break;
    case Unary_op::ID:
        children_unary_op(dynamic_cast<Unary_op*>(in));
        break;
    case Bin_op::ID:
        children_bin_op(dynamic_cast<Bin_op*>(in));
        break;
    case Constant::ID:
        children_constant(dynamic_cast<Constant*>(in));
        break;
    case Instanceof::ID:
        children_instanceof(dynamic_cast<Instanceof*>(in));
        break;
    case Variable::ID:
        children_variable(dynamic_cast<Variable*>(in));
        break;
    case Pre_op::ID:
        children_pre_op(dynamic_cast<Pre_op*>(in));
        break;
    case Method_invocation::ID:
        children_method_invocation(dynamic_cast<Method_invocation*>(in));
        break;
    case New::ID:
        children_new(dynamic_cast<New*>(in));
        break;
    case INT::ID:
        children_int(dynamic_cast<INT*>(in));
        break;
    case REAL::ID:
        children_real(dynamic_cast<REAL*>(in));
        break;
    case STRING::ID:
        children_string(dynamic_cast<STRING*>(in));
        break;
    case BOOL::ID:
        children_bool(dynamic_cast<BOOL*>(in));
        break;
    case NIL::ID:
        children_nil(dynamic_cast<NIL*>(in));
        break;
    case Op_assignment::ID:
        children_op_assignment(dynamic_cast<Op_assignment*>(in));
        break;
    case List_assignment::ID:
        children_list_assignment(dynamic_cast<List_assignment*>(in));
        break;
    case Post_op::ID:
        children_post_op(dynamic_cast<Post_op*>(in));
        break;
    case Array::ID:
        children_array(dynamic_cast<Array*>(in));
        break;
    case Conditional_expr::ID:
        children_conditional_expr(dynamic_cast<Conditional_expr*>(in));
        break;
    case Ignore_errors::ID:
        children_ignore_errors(dynamic_cast<Ignore_errors*>(in));
        break;
    case FOREIGN::ID:
        children_foreign(dynamic_cast<FOREIGN*>(in));
        break;
    case CLASS_NAME::ID:
        children_class_name(dynamic_cast<CLASS_NAME*>(in));
        break;
    }
}

void Visitor::children_method_name(Method_name* in)
{
    switch(in->classid())
    {
    case METHOD_NAME::ID:
        children_method_name(dynamic_cast<METHOD_NAME*>(in));
        break;
    case Reflection::ID:
        children_reflection(dynamic_cast<Reflection*>(in));
        break;
    }
}
}


:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by HackingTool | HackingTool | Generation time: 0.0088 ]--