!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:     MIR_visitor.cpp (77.11 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#include "MIR_visitor.h"

namespace MIR{
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_class_alias(Class_alias* in)
{
}

void Visitor::pre_interface_alias(Interface_alias* in)
{
}

void Visitor::pre_method_alias(Method_alias* in)
{
}

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

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

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

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

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

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

void Visitor::pre_assign_var(Assign_var* in)
{
}

void Visitor::pre_assign_field(Assign_field* in)
{
}

void Visitor::pre_assign_array(Assign_array* in)
{
}

void Visitor::pre_assign_var_var(Assign_var_var* in)
{
}

void Visitor::pre_assign_next(Assign_next* in)
{
}

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

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

void Visitor::pre_unset(Unset* in)
{
}

void Visitor::pre_isset(Isset* in)
{
}

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

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

void Visitor::pre_rvalue(Rvalue* in)
{
}

void Visitor::pre_field_access(Field_access* in)
{
}

void Visitor::pre_array_access(Array_access* in)
{
}

void Visitor::pre_array_next(Array_next* 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_constant(Constant* in)
{
}

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

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

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

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

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

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

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

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

void Visitor::pre_field_name(Field_name* in)
{
}

void Visitor::pre_variable_method(Variable_method* in)
{
}

void Visitor::pre_variable_variable(Variable_variable* in)
{
}

void Visitor::pre_variable_class(Variable_class* in)
{
}

void Visitor::pre_variable_field(Variable_field* in)
{
}

void Visitor::pre_static_value(Static_value* in)
{
}

void Visitor::pre_static_array(Static_array* in)
{
}

void Visitor::pre_static_array_elem(Static_array_elem* in)
{
}

void Visitor::pre_static_array_key(Static_array_key* in)
{
}

void Visitor::pre_branch(Branch* in)
{
}

void Visitor::pre_goto(Goto* in)
{
}

void Visitor::pre_label(Label* in)
{
}

void Visitor::pre_foreach_reset(Foreach_reset* in)
{
}

void Visitor::pre_foreach_next(Foreach_next* in)
{
}

void Visitor::pre_foreach_end(Foreach_end* in)
{
}

void Visitor::pre_foreach_has_key(Foreach_has_key* in)
{
}

void Visitor::pre_foreach_get_key(Foreach_get_key* in)
{
}

void Visitor::pre_foreach_get_val(Foreach_get_val* in)
{
}

void Visitor::pre_param_is_ref(Param_is_ref* in)
{
}

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

void Visitor::pre_param_index(PARAM_INDEX* 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_op(OP* 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_cast(CAST* in)
{
}

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

void Visitor::pre_field_name(FIELD_NAME* in)
{
}

void Visitor::pre_label_name(LABEL_NAME* in)
{
}

void Visitor::pre_ht_iterator(HT_ITERATOR* 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_class_alias(Class_alias* in)
{
}

void Visitor::post_interface_alias(Interface_alias* in)
{
}

void Visitor::post_method_alias(Method_alias* in)
{
}

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

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

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

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

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

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

void Visitor::post_assign_var(Assign_var* in)
{
}

void Visitor::post_assign_field(Assign_field* in)
{
}

void Visitor::post_assign_array(Assign_array* in)
{
}

void Visitor::post_assign_var_var(Assign_var_var* in)
{
}

void Visitor::post_assign_next(Assign_next* in)
{
}

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

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

void Visitor::post_unset(Unset* in)
{
}

void Visitor::post_isset(Isset* in)
{
}

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

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

void Visitor::post_rvalue(Rvalue* in)
{
}

void Visitor::post_field_access(Field_access* in)
{
}

void Visitor::post_array_access(Array_access* in)
{
}

void Visitor::post_array_next(Array_next* 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_constant(Constant* in)
{
}

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

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

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

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

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

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

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

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

void Visitor::post_field_name(Field_name* in)
{
}

void Visitor::post_variable_method(Variable_method* in)
{
}

void Visitor::post_variable_variable(Variable_variable* in)
{
}

void Visitor::post_variable_class(Variable_class* in)
{
}

void Visitor::post_variable_field(Variable_field* in)
{
}

void Visitor::post_static_value(Static_value* in)
{
}

void Visitor::post_static_array(Static_array* in)
{
}

void Visitor::post_static_array_elem(Static_array_elem* in)
{
}

void Visitor::post_static_array_key(Static_array_key* in)
{
}

void Visitor::post_branch(Branch* in)
{
}

void Visitor::post_goto(Goto* in)
{
}

void Visitor::post_label(Label* in)
{
}

void Visitor::post_foreach_reset(Foreach_reset* in)
{
}

void Visitor::post_foreach_next(Foreach_next* in)
{
}

void Visitor::post_foreach_end(Foreach_end* in)
{
}

void Visitor::post_foreach_has_key(Foreach_has_key* in)
{
}

void Visitor::post_foreach_get_key(Foreach_get_key* in)
{
}

void Visitor::post_foreach_get_val(Foreach_get_val* in)
{
}

void Visitor::post_param_is_ref(Param_is_ref* in)
{
}

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

void Visitor::post_param_index(PARAM_INDEX* 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_op(OP* 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_cast(CAST* in)
{
}

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

void Visitor::post_field_name(FIELD_NAME* in)
{
}

void Visitor::post_label_name(LABEL_NAME* in)
{
}

void Visitor::post_ht_iterator(HT_ITERATOR* 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("pass_rest_by_ref", in->pass_rest_by_ref);
    visit_marker("return_by_ref", in->return_by_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(in->var);
}

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_static_value(in->default_value);
}

void Visitor::children_class_alias(Class_alias* in)
{
    visit_class_name(in->alias);
    visit_class_name(in->class_name);
}

void Visitor::children_interface_alias(Interface_alias* in)
{
    visit_interface_name(in->alias);
    visit_interface_name(in->interface_name);
}

void Visitor::children_method_alias(Method_alias* in)
{
    visit_method_name(in->alias);
    visit_method_name(in->method_name);
}

void Visitor::children_return(Return* in)
{
    visit_rvalue(in->rvalue);
}

void Visitor::children_static_declaration(Static_declaration* in)
{
    visit_name_with_default(in->var);
}

void Visitor::children_global(Global* in)
{
    visit_variable_name(in->variable_name);
}

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_variable_name(in->variable_name);
}

void Visitor::children_assign_var(Assign_var* in)
{
    visit_variable_name(in->lhs);
    visit_marker("is_ref", in->is_ref);
    visit_expr(in->rhs);
}

void Visitor::children_assign_field(Assign_field* in)
{
    visit_target(in->target);
    visit_field_name(in->field_name);
    visit_marker("is_ref", in->is_ref);
    visit_rvalue(in->rhs);
}

void Visitor::children_assign_array(Assign_array* in)
{
    visit_variable_name(in->lhs);
    visit_rvalue(in->index);
    visit_marker("is_ref", in->is_ref);
    visit_rvalue(in->rhs);
}

void Visitor::children_assign_var_var(Assign_var_var* in)
{
    visit_variable_name(in->lhs);
    visit_marker("is_ref", in->is_ref);
    visit_rvalue(in->rhs);
}

void Visitor::children_assign_next(Assign_next* in)
{
    visit_variable_name(in->lhs);
    visit_marker("is_ref", in->is_ref);
    visit_rvalue(in->rhs);
}

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

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

void Visitor::children_unset(Unset* in)
{
    visit_target(in->target);
    visit_variable_name(in->variable_name);
    visit_rvalue_list(in->array_indices);
}

void Visitor::children_isset(Isset* in)
{
    visit_target(in->target);
    visit_variable_name(in->variable_name);
    visit_rvalue_list(in->array_indices);
}

void Visitor::children_field_access(Field_access* in)
{
    visit_target(in->target);
    visit_field_name(in->field_name);
}

void Visitor::children_array_access(Array_access* in)
{
    visit_variable_name(in->variable_name);
    visit_rvalue(in->index);
}

void Visitor::children_array_next(Array_next* in)
{
    visit_variable_name(in->variable_name);
}

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

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

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

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_variable_name(in->variable_name);
    visit_class_name(in->class_name);
}

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_new(New* in)
{
    visit_class_name(in->class_name);
    visit_actual_parameter_list(in->actual_parameters);
}

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

void Visitor::children_variable_method(Variable_method* in)
{
    visit_variable_name(in->variable_name);
}

void Visitor::children_variable_variable(Variable_variable* in)
{
    visit_variable_name(in->variable_name);
}

void Visitor::children_variable_class(Variable_class* in)
{
    visit_variable_name(in->variable_name);
}

void Visitor::children_variable_field(Variable_field* in)
{
    visit_variable_name(in->variable_name);
}

void Visitor::children_static_array(Static_array* in)
{
    visit_static_array_elem_list(in->static_array_elems);
}

void Visitor::children_static_array_elem(Static_array_elem* in)
{
    visit_static_array_key(in->key);
    visit_marker("is_ref", in->is_ref);
    visit_static_value(in->val);
}

void Visitor::children_branch(Branch* in)
{
    visit_variable_name(in->variable_name);
    visit_label_name(in->iftrue);
    visit_label_name(in->iffalse);
}

void Visitor::children_goto(Goto* in)
{
    visit_label_name(in->label_name);
}

void Visitor::children_label(Label* in)
{
    visit_label_name(in->label_name);
}

void Visitor::children_foreach_reset(Foreach_reset* in)
{
    visit_variable_name(in->array);
    visit_ht_iterator(in->iter);
}

void Visitor::children_foreach_next(Foreach_next* in)
{
    visit_variable_name(in->array);
    visit_ht_iterator(in->iter);
}

void Visitor::children_foreach_end(Foreach_end* in)
{
    visit_variable_name(in->array);
    visit_ht_iterator(in->iter);
}

void Visitor::children_foreach_has_key(Foreach_has_key* in)
{
    visit_variable_name(in->array);
    visit_ht_iterator(in->iter);
}

void Visitor::children_foreach_get_key(Foreach_get_key* in)
{
    visit_variable_name(in->array);
    visit_ht_iterator(in->iter);
}

void Visitor::children_foreach_get_val(Foreach_get_val* in)
{
    visit_variable_name(in->array);
    visit_ht_iterator(in->iter);
}

void Visitor::children_param_is_ref(Param_is_ref* in)
{
    visit_target(in->target);
    visit_method_name(in->method_name);
    visit_param_index(in->param_index);
}

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

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_op(OP* 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_cast(CAST* in)
{
}

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

void Visitor::children_field_name(FIELD_NAME* in)
{
}

void Visitor::children_label_name(LABEL_NAME* in)
{
}

void Visitor::children_ht_iterator(HT_ITERATOR* 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_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_statement((Statement*) in);
    pre_interface_def((Interface_def*) in);
}

void Visitor::pre_method_chain(Method* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_member((Member*) 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_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_class_alias_chain(Class_alias* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_class_alias((Class_alias*) in);
}

void Visitor::pre_interface_alias_chain(Interface_alias* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_interface_alias((Interface_alias*) in);
}

void Visitor::pre_method_alias_chain(Method_alias* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_method_alias((Method_alias*) in);
}

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

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

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

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

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

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

void Visitor::pre_assign_var_chain(Assign_var* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_assign_var((Assign_var*) in);
}

void Visitor::pre_assign_field_chain(Assign_field* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_assign_field((Assign_field*) in);
}

void Visitor::pre_assign_array_chain(Assign_array* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_assign_array((Assign_array*) in);
}

void Visitor::pre_assign_var_var_chain(Assign_var_var* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_assign_var_var((Assign_var_var*) in);
}

void Visitor::pre_assign_next_chain(Assign_next* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_assign_next((Assign_next*) in);
}

void Visitor::pre_pre_op_chain(Pre_op* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_pre_op((Pre_op*) in);
}

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

void Visitor::pre_unset_chain(Unset* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_unset((Unset*) in);
}

void Visitor::pre_isset_chain(Isset* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_isset((Isset*) in);
}

void Visitor::pre_field_access_chain(Field_access* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_field_access((Field_access*) in);
}

void Visitor::pre_array_access_chain(Array_access* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_array_access((Array_access*) in);
}

void Visitor::pre_array_next_chain(Array_next* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_array_next((Array_next*) in);
}

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

void Visitor::pre_unary_op_chain(Unary_op* in)
{
    pre_node((Node*) 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_expr((Expr*) in);
    pre_bin_op((Bin_op*) in);
}

void Visitor::pre_constant_chain(Constant* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_static_value((Static_value*) in);
    pre_static_array_key((Static_array_key*) in);
    pre_constant((Constant*) in);
}

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

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

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

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

void Visitor::pre_variable_method_chain(Variable_method* in)
{
    pre_node((Node*) in);
    pre_method_name((Method_name*) in);
    pre_variable_method((Variable_method*) in);
}

void Visitor::pre_variable_variable_chain(Variable_variable* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_variable_name((Variable_name*) in);
    pre_variable_variable((Variable_variable*) in);
}

void Visitor::pre_variable_class_chain(Variable_class* in)
{
    pre_node((Node*) in);
    pre_class_name((Class_name*) in);
    pre_variable_class((Variable_class*) in);
}

void Visitor::pre_variable_field_chain(Variable_field* in)
{
    pre_node((Node*) in);
    pre_field_name((Field_name*) in);
    pre_variable_field((Variable_field*) in);
}

void Visitor::pre_static_array_chain(Static_array* in)
{
    pre_node((Node*) in);
    pre_static_value((Static_value*) in);
    pre_static_array((Static_array*) in);
}

void Visitor::pre_static_array_elem_chain(Static_array_elem* in)
{
    pre_node((Node*) in);
    pre_static_array_elem((Static_array_elem*) in);
}

void Visitor::pre_branch_chain(Branch* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_branch((Branch*) in);
}

void Visitor::pre_goto_chain(Goto* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_goto((Goto*) in);
}

void Visitor::pre_label_chain(Label* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_label((Label*) in);
}

void Visitor::pre_foreach_reset_chain(Foreach_reset* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_foreach_reset((Foreach_reset*) in);
}

void Visitor::pre_foreach_next_chain(Foreach_next* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_foreach_next((Foreach_next*) in);
}

void Visitor::pre_foreach_end_chain(Foreach_end* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_foreach_end((Foreach_end*) in);
}

void Visitor::pre_foreach_has_key_chain(Foreach_has_key* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_foreach_has_key((Foreach_has_key*) in);
}

void Visitor::pre_foreach_get_key_chain(Foreach_get_key* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_foreach_get_key((Foreach_get_key*) in);
}

void Visitor::pre_foreach_get_val_chain(Foreach_get_val* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_foreach_get_val((Foreach_get_val*) in);
}

void Visitor::pre_param_is_ref_chain(Param_is_ref* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_param_is_ref((Param_is_ref*) in);
}

void Visitor::pre_param_index_chain(PARAM_INDEX* in)
{
    pre_node((Node*) in);
    pre_param_index((PARAM_INDEX*) in);
}

void Visitor::pre_foreign_chain(FOREIGN* in)
{
    pre_node((Node*) in);
    pre_statement((Statement*) in);
    pre_expr((Expr*) 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_identifier((Identifier*) in);
    pre_class_name((CLASS_NAME*) in);
}

void Visitor::pre_interface_name_chain(INTERFACE_NAME* in)
{
    pre_node((Node*) 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_identifier((Identifier*) in);
    pre_method_name((METHOD_NAME*) in);
}

void Visitor::pre_variable_name_chain(VARIABLE_NAME* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_rvalue((Rvalue*) in);
    pre_variable_name((Variable_name*) in);
    pre_target((Target*) in);
    pre_identifier((Identifier*) in);
    pre_variable_name((VARIABLE_NAME*) in);
}

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

void Visitor::pre_int_chain(INT* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_rvalue((Rvalue*) in);
    pre_static_value((Static_value*) in);
    pre_static_array_key((Static_array_key*) in);
    pre_literal((Literal*) in);
    pre_int((INT*) in);
}

void Visitor::pre_real_chain(REAL* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_rvalue((Rvalue*) in);
    pre_static_value((Static_value*) in);
    pre_static_array_key((Static_array_key*) in);
    pre_literal((Literal*) in);
    pre_real((REAL*) in);
}

void Visitor::pre_string_chain(STRING* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_rvalue((Rvalue*) in);
    pre_static_value((Static_value*) in);
    pre_static_array_key((Static_array_key*) in);
    pre_literal((Literal*) in);
    pre_string((STRING*) in);
}

void Visitor::pre_bool_chain(BOOL* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_rvalue((Rvalue*) in);
    pre_static_value((Static_value*) in);
    pre_static_array_key((Static_array_key*) in);
    pre_literal((Literal*) in);
    pre_bool((BOOL*) in);
}

void Visitor::pre_nil_chain(NIL* in)
{
    pre_node((Node*) in);
    pre_expr((Expr*) in);
    pre_rvalue((Rvalue*) in);
    pre_static_value((Static_value*) in);
    pre_static_array_key((Static_array_key*) in);
    pre_literal((Literal*) in);
    pre_nil((NIL*) in);
}

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

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

void Visitor::pre_field_name_chain(FIELD_NAME* in)
{
    pre_node((Node*) in);
    pre_field_name((Field_name*) in);
    pre_identifier((Identifier*) in);
    pre_field_name((FIELD_NAME*) in);
}

void Visitor::pre_label_name_chain(LABEL_NAME* in)
{
    pre_node((Node*) in);
    pre_identifier((Identifier*) in);
    pre_label_name((LABEL_NAME*) in);
}

void Visitor::pre_ht_iterator_chain(HT_ITERATOR* in)
{
    pre_node((Node*) in);
    pre_identifier((Identifier*) in);
    pre_ht_iterator((HT_ITERATOR*) 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_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_node((Node*) in);
}

void Visitor::post_method_chain(Method* in)
{
    post_method((Method*) in);
    post_member((Member*) in);
    post_statement((Statement*) 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_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_class_alias_chain(Class_alias* in)
{
    post_class_alias((Class_alias*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_interface_alias_chain(Interface_alias* in)
{
    post_interface_alias((Interface_alias*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_method_alias_chain(Method_alias* in)
{
    post_method_alias((Method_alias*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_return_chain(Return* in)
{
    post_return((Return*) in);
    post_statement((Statement*) 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_node((Node*) in);
}

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

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

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

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

void Visitor::post_assign_var_chain(Assign_var* in)
{
    post_assign_var((Assign_var*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_assign_field_chain(Assign_field* in)
{
    post_assign_field((Assign_field*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_assign_array_chain(Assign_array* in)
{
    post_assign_array((Assign_array*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_assign_var_var_chain(Assign_var_var* in)
{
    post_assign_var_var((Assign_var_var*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_assign_next_chain(Assign_next* in)
{
    post_assign_next((Assign_next*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_pre_op_chain(Pre_op* in)
{
    post_pre_op((Pre_op*) in);
    post_statement((Statement*) 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_node((Node*) in);
}

void Visitor::post_unset_chain(Unset* in)
{
    post_unset((Unset*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_isset_chain(Isset* in)
{
    post_isset((Isset*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_field_access_chain(Field_access* in)
{
    post_field_access((Field_access*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_array_access_chain(Array_access* in)
{
    post_array_access((Array_access*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_array_next_chain(Array_next* in)
{
    post_array_next((Array_next*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_cast_chain(Cast* in)
{
    post_cast((Cast*) in);
    post_expr((Expr*) 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_node((Node*) in);
}

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

void Visitor::post_constant_chain(Constant* in)
{
    post_constant((Constant*) in);
    post_static_array_key((Static_array_key*) in);
    post_static_value((Static_value*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_instanceof_chain(Instanceof* in)
{
    post_instanceof((Instanceof*) in);
    post_expr((Expr*) 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_node((Node*) in);
}

void Visitor::post_new_chain(New* in)
{
    post_new((New*) in);
    post_expr((Expr*) 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_variable_method_chain(Variable_method* in)
{
    post_variable_method((Variable_method*) in);
    post_method_name((Method_name*) in);
    post_node((Node*) in);
}

void Visitor::post_variable_variable_chain(Variable_variable* in)
{
    post_variable_variable((Variable_variable*) in);
    post_variable_name((Variable_name*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_variable_class_chain(Variable_class* in)
{
    post_variable_class((Variable_class*) in);
    post_class_name((Class_name*) in);
    post_node((Node*) in);
}

void Visitor::post_variable_field_chain(Variable_field* in)
{
    post_variable_field((Variable_field*) in);
    post_field_name((Field_name*) in);
    post_node((Node*) in);
}

void Visitor::post_static_array_chain(Static_array* in)
{
    post_static_array((Static_array*) in);
    post_static_value((Static_value*) in);
    post_node((Node*) in);
}

void Visitor::post_static_array_elem_chain(Static_array_elem* in)
{
    post_static_array_elem((Static_array_elem*) in);
    post_node((Node*) in);
}

void Visitor::post_branch_chain(Branch* in)
{
    post_branch((Branch*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_goto_chain(Goto* in)
{
    post_goto((Goto*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_label_chain(Label* in)
{
    post_label((Label*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_reset_chain(Foreach_reset* in)
{
    post_foreach_reset((Foreach_reset*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_next_chain(Foreach_next* in)
{
    post_foreach_next((Foreach_next*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_end_chain(Foreach_end* in)
{
    post_foreach_end((Foreach_end*) in);
    post_statement((Statement*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_has_key_chain(Foreach_has_key* in)
{
    post_foreach_has_key((Foreach_has_key*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_get_key_chain(Foreach_get_key* in)
{
    post_foreach_get_key((Foreach_get_key*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_foreach_get_val_chain(Foreach_get_val* in)
{
    post_foreach_get_val((Foreach_get_val*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_param_is_ref_chain(Param_is_ref* in)
{
    post_param_is_ref((Param_is_ref*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_param_index_chain(PARAM_INDEX* in)
{
    post_param_index((PARAM_INDEX*) in);
    post_node((Node*) in);
}

void Visitor::post_foreign_chain(FOREIGN* in)
{
    post_foreign((FOREIGN*) in);
    post_expr((Expr*) in);
    post_statement((Statement*) 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_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_node((Node*) in);
}

void Visitor::post_method_name_chain(METHOD_NAME* in)
{
    post_method_name((METHOD_NAME*) in);
    post_identifier((Identifier*) 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_target((Target*) in);
    post_variable_name((Variable_name*) in);
    post_rvalue((Rvalue*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

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

void Visitor::post_int_chain(INT* in)
{
    post_int((INT*) in);
    post_literal((Literal*) in);
    post_static_array_key((Static_array_key*) in);
    post_static_value((Static_value*) in);
    post_rvalue((Rvalue*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_real_chain(REAL* in)
{
    post_real((REAL*) in);
    post_literal((Literal*) in);
    post_static_array_key((Static_array_key*) in);
    post_static_value((Static_value*) in);
    post_rvalue((Rvalue*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_string_chain(STRING* in)
{
    post_string((STRING*) in);
    post_literal((Literal*) in);
    post_static_array_key((Static_array_key*) in);
    post_static_value((Static_value*) in);
    post_rvalue((Rvalue*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_bool_chain(BOOL* in)
{
    post_bool((BOOL*) in);
    post_literal((Literal*) in);
    post_static_array_key((Static_array_key*) in);
    post_static_value((Static_value*) in);
    post_rvalue((Rvalue*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_nil_chain(NIL* in)
{
    post_nil((NIL*) in);
    post_literal((Literal*) in);
    post_static_array_key((Static_array_key*) in);
    post_static_value((Static_value*) in);
    post_rvalue((Rvalue*) in);
    post_expr((Expr*) in);
    post_node((Node*) in);
}

void Visitor::post_cast_chain(CAST* in)
{
    post_cast((CAST*) in);
    post_identifier((Identifier*) 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_node((Node*) in);
}

void Visitor::post_field_name_chain(FIELD_NAME* in)
{
    post_field_name((FIELD_NAME*) in);
    post_identifier((Identifier*) in);
    post_field_name((Field_name*) in);
    post_node((Node*) in);
}

void Visitor::post_label_name_chain(LABEL_NAME* in)
{
    post_label_name((LABEL_NAME*) in);
    post_identifier((Identifier*) in);
    post_node((Node*) in);
}

void Visitor::post_ht_iterator_chain(HT_ITERATOR* in)
{
    post_ht_iterator((HT_ITERATOR*) in);
    post_identifier((Identifier*) 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("MIR", "Statement");
    else
    {
        pre_list("MIR", "Statement", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_statement(*i);
        }
    
        post_list("MIR", "Statement", in->size());
    }
}

void Visitor::visit_statement(Statement* in)
{
    if(in == NULL)
        visit_null("MIR", "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("MIR", "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("MIR", "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("MIR", "INTERFACE_NAME");
    else
    {
        pre_list("MIR", "INTERFACE_NAME", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_interface_name(*i);
        }
    
        post_list("MIR", "INTERFACE_NAME", in->size());
    }
}

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

void Visitor::visit_member(Member* in)
{
    if(in == NULL)
        visit_null("MIR", "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("MIR", "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("MIR", "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("MIR", "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("MIR", "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("MIR", "Formal_parameter");
    else
    {
        pre_list("MIR", "Formal_parameter", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_formal_parameter(*i);
        }
    
        post_list("MIR", "Formal_parameter", in->size());
    }
}

void Visitor::visit_formal_parameter(Formal_parameter* in)
{
    if(in == NULL)
        visit_null("MIR", "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("MIR", "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("MIR", "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("MIR", "Attr_mod");
    else
    {
        pre_attr_mod_chain(in);
        children_attr_mod(in);
        post_attr_mod_chain(in);
    }
}

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

void Visitor::visit_static_value(Static_value* in)
{
    if(in == NULL)
        visit_null("MIR", "Static_value");
    else
    {
        pre_static_value_chain(in);
        children_static_value(in);
        post_static_value_chain(in);
    }
}

void Visitor::visit_rvalue(Rvalue* in)
{
    if(in == NULL)
        visit_null("MIR", "Rvalue");
    else
    {
        pre_rvalue_chain(in);
        children_rvalue(in);
        post_rvalue_chain(in);
    }
}

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

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

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

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

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

void Visitor::visit_field_name(Field_name* in)
{
    if(in == NULL)
        visit_null("MIR", "Field_name");
    else
    {
        pre_field_name_chain(in);
        children_field_name(in);
        post_field_name_chain(in);
    }
}

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

void Visitor::visit_rvalue_list(Rvalue_list* in)
{
    Rvalue_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("MIR", "Rvalue");
    else
    {
        pre_list("MIR", "Rvalue", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_rvalue(*i);
        }
    
        post_list("MIR", "Rvalue", in->size());
    }
}

void Visitor::visit_cast(CAST* in)
{
    if(in == NULL)
        visit_null("MIR", "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("MIR", "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("MIR", "Class_name");
    else
    {
        pre_class_name_chain(in);
        children_class_name(in);
        post_class_name_chain(in);
    }
}

void Visitor::visit_method_name(Method_name* in)
{
    if(in == NULL)
        visit_null("MIR", "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("MIR", "Actual_parameter");
    else
    {
        pre_list("MIR", "Actual_parameter", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_actual_parameter(*i);
        }
    
        post_list("MIR", "Actual_parameter", in->size());
    }
}

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

void Visitor::visit_static_array_elem_list(Static_array_elem_list* in)
{
    Static_array_elem_list::const_iterator i;
    
    if(in == NULL)
        visit_null_list("MIR", "Static_array_elem");
    else
    {
        pre_list("MIR", "Static_array_elem", in->size());
    
        for(i = in->begin(); i != in->end(); i++)
        {
            visit_static_array_elem(*i);
        }
    
        post_list("MIR", "Static_array_elem", in->size());
    }
}

void Visitor::visit_static_array_elem(Static_array_elem* in)
{
    if(in == NULL)
        visit_null("MIR", "Static_array_elem");
    else
    {
        pre_static_array_elem_chain(in);
        children_static_array_elem(in);
        post_static_array_elem_chain(in);
    }
}

void Visitor::visit_static_array_key(Static_array_key* in)
{
    if(in == NULL)
        visit_null("MIR", "Static_array_key");
    else
    {
        pre_static_array_key_chain(in);
        children_static_array_key(in);
        post_static_array_key_chain(in);
    }
}

void Visitor::visit_label_name(LABEL_NAME* in)
{
    if(in == NULL)
        visit_null("MIR", "LABEL_NAME");
    else
    {
        pre_label_name_chain(in);
        children_label_name(in);
        post_label_name_chain(in);
    }
}

void Visitor::visit_ht_iterator(HT_ITERATOR* in)
{
    if(in == NULL)
        visit_null("MIR", "HT_ITERATOR");
    else
    {
        pre_ht_iterator_chain(in);
        children_ht_iterator(in);
        post_ht_iterator_chain(in);
    }
}

void Visitor::visit_param_index(PARAM_INDEX* in)
{
    if(in == NULL)
        visit_null("MIR", "PARAM_INDEX");
    else
    {
        pre_param_index_chain(in);
        children_param_index(in);
        post_param_index_chain(in);
    }
}

void Visitor::visit_php_script(PHP_script* in)
{
    if(in == NULL)
        visit_null("MIR", "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 Class_alias::ID:
        pre_class_alias_chain(dynamic_cast<Class_alias*>(in));
        break;
    case Interface_alias::ID:
        pre_interface_alias_chain(dynamic_cast<Interface_alias*>(in));
        break;
    case Method_alias::ID:
        pre_method_alias_chain(dynamic_cast<Method_alias*>(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 Assign_var::ID:
        pre_assign_var_chain(dynamic_cast<Assign_var*>(in));
        break;
    case Assign_var_var::ID:
        pre_assign_var_var_chain(dynamic_cast<Assign_var_var*>(in));
        break;
    case Assign_array::ID:
        pre_assign_array_chain(dynamic_cast<Assign_array*>(in));
        break;
    case Assign_next::ID:
        pre_assign_next_chain(dynamic_cast<Assign_next*>(in));
        break;
    case Assign_field::ID:
        pre_assign_field_chain(dynamic_cast<Assign_field*>(in));
        break;
    case Eval_expr::ID:
        pre_eval_expr_chain(dynamic_cast<Eval_expr*>(in));
        break;
    case Pre_op::ID:
        pre_pre_op_chain(dynamic_cast<Pre_op*>(in));
        break;
    case Unset::ID:
        pre_unset_chain(dynamic_cast<Unset*>(in));
        break;
    case Label::ID:
        pre_label_chain(dynamic_cast<Label*>(in));
        break;
    case Goto::ID:
        pre_goto_chain(dynamic_cast<Goto*>(in));
        break;
    case Branch::ID:
        pre_branch_chain(dynamic_cast<Branch*>(in));
        break;
    case Foreach_next::ID:
        pre_foreach_next_chain(dynamic_cast<Foreach_next*>(in));
        break;
    case Foreach_reset::ID:
        pre_foreach_reset_chain(dynamic_cast<Foreach_reset*>(in));
        break;
    case Foreach_end::ID:
        pre_foreach_end_chain(dynamic_cast<Foreach_end*>(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_static_value_chain(Static_value* in)
{
    switch(in->classid())
    {
    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 Static_array::ID:
        pre_static_array_chain(dynamic_cast<Static_array*>(in));
        break;
    case Constant::ID:
        pre_constant_chain(dynamic_cast<Constant*>(in));
        break;
    }
}

void Visitor::pre_rvalue_chain(Rvalue* in)
{
    switch(in->classid())
    {
    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 VARIABLE_NAME::ID:
        pre_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(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 Variable_variable::ID:
        pre_variable_variable_chain(dynamic_cast<Variable_variable*>(in));
        break;
    }
}

void Visitor::pre_expr_chain(Expr* in)
{
    switch(in->classid())
    {
    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 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 VARIABLE_NAME::ID:
        pre_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case Variable_variable::ID:
        pre_variable_variable_chain(dynamic_cast<Variable_variable*>(in));
        break;
    case Array_access::ID:
        pre_array_access_chain(dynamic_cast<Array_access*>(in));
        break;
    case Field_access::ID:
        pre_field_access_chain(dynamic_cast<Field_access*>(in));
        break;
    case Array_next::ID:
        pre_array_next_chain(dynamic_cast<Array_next*>(in));
        break;
    case FOREIGN::ID:
        pre_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    case Isset::ID:
        pre_isset_chain(dynamic_cast<Isset*>(in));
        break;
    case Foreach_has_key::ID:
        pre_foreach_has_key_chain(dynamic_cast<Foreach_has_key*>(in));
        break;
    case Foreach_get_key::ID:
        pre_foreach_get_key_chain(dynamic_cast<Foreach_get_key*>(in));
        break;
    case Foreach_get_val::ID:
        pre_foreach_get_val_chain(dynamic_cast<Foreach_get_val*>(in));
        break;
    case Param_is_ref::ID:
        pre_param_is_ref_chain(dynamic_cast<Param_is_ref*>(in));
        break;
    }
}

void Visitor::pre_target_chain(Target* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID:
        pre_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case CLASS_NAME::ID:
        pre_class_name_chain(dynamic_cast<CLASS_NAME*>(in));
        break;
    }
}

void Visitor::pre_field_name_chain(Field_name* in)
{
    switch(in->classid())
    {
    case FIELD_NAME::ID:
        pre_field_name_chain(dynamic_cast<FIELD_NAME*>(in));
        break;
    case Variable_field::ID:
        pre_variable_field_chain(dynamic_cast<Variable_field*>(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 Variable_class::ID:
        pre_variable_class_chain(dynamic_cast<Variable_class*>(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 Variable_method::ID:
        pre_variable_method_chain(dynamic_cast<Variable_method*>(in));
        break;
    }
}

void Visitor::pre_static_array_key_chain(Static_array_key* in)
{
    switch(in->classid())
    {
    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 Constant::ID:
        pre_constant_chain(dynamic_cast<Constant*>(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 Class_alias::ID:
        post_class_alias_chain(dynamic_cast<Class_alias*>(in));
        break;
    case Interface_alias::ID:
        post_interface_alias_chain(dynamic_cast<Interface_alias*>(in));
        break;
    case Method_alias::ID:
        post_method_alias_chain(dynamic_cast<Method_alias*>(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 Assign_var::ID:
        post_assign_var_chain(dynamic_cast<Assign_var*>(in));
        break;
    case Assign_var_var::ID:
        post_assign_var_var_chain(dynamic_cast<Assign_var_var*>(in));
        break;
    case Assign_array::ID:
        post_assign_array_chain(dynamic_cast<Assign_array*>(in));
        break;
    case Assign_next::ID:
        post_assign_next_chain(dynamic_cast<Assign_next*>(in));
        break;
    case Assign_field::ID:
        post_assign_field_chain(dynamic_cast<Assign_field*>(in));
        break;
    case Eval_expr::ID:
        post_eval_expr_chain(dynamic_cast<Eval_expr*>(in));
        break;
    case Pre_op::ID:
        post_pre_op_chain(dynamic_cast<Pre_op*>(in));
        break;
    case Unset::ID:
        post_unset_chain(dynamic_cast<Unset*>(in));
        break;
    case Label::ID:
        post_label_chain(dynamic_cast<Label*>(in));
        break;
    case Goto::ID:
        post_goto_chain(dynamic_cast<Goto*>(in));
        break;
    case Branch::ID:
        post_branch_chain(dynamic_cast<Branch*>(in));
        break;
    case Foreach_next::ID:
        post_foreach_next_chain(dynamic_cast<Foreach_next*>(in));
        break;
    case Foreach_reset::ID:
        post_foreach_reset_chain(dynamic_cast<Foreach_reset*>(in));
        break;
    case Foreach_end::ID:
        post_foreach_end_chain(dynamic_cast<Foreach_end*>(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_static_value_chain(Static_value* in)
{
    switch(in->classid())
    {
    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 Static_array::ID:
        post_static_array_chain(dynamic_cast<Static_array*>(in));
        break;
    case Constant::ID:
        post_constant_chain(dynamic_cast<Constant*>(in));
        break;
    }
}

void Visitor::post_rvalue_chain(Rvalue* in)
{
    switch(in->classid())
    {
    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 VARIABLE_NAME::ID:
        post_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(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 Variable_variable::ID:
        post_variable_variable_chain(dynamic_cast<Variable_variable*>(in));
        break;
    }
}

void Visitor::post_expr_chain(Expr* in)
{
    switch(in->classid())
    {
    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 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 VARIABLE_NAME::ID:
        post_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case Variable_variable::ID:
        post_variable_variable_chain(dynamic_cast<Variable_variable*>(in));
        break;
    case Array_access::ID:
        post_array_access_chain(dynamic_cast<Array_access*>(in));
        break;
    case Field_access::ID:
        post_field_access_chain(dynamic_cast<Field_access*>(in));
        break;
    case Array_next::ID:
        post_array_next_chain(dynamic_cast<Array_next*>(in));
        break;
    case FOREIGN::ID:
        post_foreign_chain(dynamic_cast<FOREIGN*>(in));
        break;
    case Isset::ID:
        post_isset_chain(dynamic_cast<Isset*>(in));
        break;
    case Foreach_has_key::ID:
        post_foreach_has_key_chain(dynamic_cast<Foreach_has_key*>(in));
        break;
    case Foreach_get_key::ID:
        post_foreach_get_key_chain(dynamic_cast<Foreach_get_key*>(in));
        break;
    case Foreach_get_val::ID:
        post_foreach_get_val_chain(dynamic_cast<Foreach_get_val*>(in));
        break;
    case Param_is_ref::ID:
        post_param_is_ref_chain(dynamic_cast<Param_is_ref*>(in));
        break;
    }
}

void Visitor::post_target_chain(Target* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID:
        post_variable_name_chain(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case CLASS_NAME::ID:
        post_class_name_chain(dynamic_cast<CLASS_NAME*>(in));
        break;
    }
}

void Visitor::post_field_name_chain(Field_name* in)
{
    switch(in->classid())
    {
    case FIELD_NAME::ID:
        post_field_name_chain(dynamic_cast<FIELD_NAME*>(in));
        break;
    case Variable_field::ID:
        post_variable_field_chain(dynamic_cast<Variable_field*>(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 Variable_class::ID:
        post_variable_class_chain(dynamic_cast<Variable_class*>(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 Variable_method::ID:
        post_variable_method_chain(dynamic_cast<Variable_method*>(in));
        break;
    }
}

void Visitor::post_static_array_key_chain(Static_array_key* in)
{
    switch(in->classid())
    {
    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 Constant::ID:
        post_constant_chain(dynamic_cast<Constant*>(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 Class_alias::ID:
        children_class_alias(dynamic_cast<Class_alias*>(in));
        break;
    case Interface_alias::ID:
        children_interface_alias(dynamic_cast<Interface_alias*>(in));
        break;
    case Method_alias::ID:
        children_method_alias(dynamic_cast<Method_alias*>(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 Assign_var::ID:
        children_assign_var(dynamic_cast<Assign_var*>(in));
        break;
    case Assign_var_var::ID:
        children_assign_var_var(dynamic_cast<Assign_var_var*>(in));
        break;
    case Assign_array::ID:
        children_assign_array(dynamic_cast<Assign_array*>(in));
        break;
    case Assign_next::ID:
        children_assign_next(dynamic_cast<Assign_next*>(in));
        break;
    case Assign_field::ID:
        children_assign_field(dynamic_cast<Assign_field*>(in));
        break;
    case Eval_expr::ID:
        children_eval_expr(dynamic_cast<Eval_expr*>(in));
        break;
    case Pre_op::ID:
        children_pre_op(dynamic_cast<Pre_op*>(in));
        break;
    case Unset::ID:
        children_unset(dynamic_cast<Unset*>(in));
        break;
    case Label::ID:
        children_label(dynamic_cast<Label*>(in));
        break;
    case Goto::ID:
        children_goto(dynamic_cast<Goto*>(in));
        break;
    case Branch::ID:
        children_branch(dynamic_cast<Branch*>(in));
        break;
    case Foreach_next::ID:
        children_foreach_next(dynamic_cast<Foreach_next*>(in));
        break;
    case Foreach_reset::ID:
        children_foreach_reset(dynamic_cast<Foreach_reset*>(in));
        break;
    case Foreach_end::ID:
        children_foreach_end(dynamic_cast<Foreach_end*>(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_static_value(Static_value* in)
{
    switch(in->classid())
    {
    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 Static_array::ID:
        children_static_array(dynamic_cast<Static_array*>(in));
        break;
    case Constant::ID:
        children_constant(dynamic_cast<Constant*>(in));
        break;
    }
}

void Visitor::children_rvalue(Rvalue* in)
{
    switch(in->classid())
    {
    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 VARIABLE_NAME::ID:
        children_variable_name(dynamic_cast<VARIABLE_NAME*>(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 Variable_variable::ID:
        children_variable_variable(dynamic_cast<Variable_variable*>(in));
        break;
    }
}

void Visitor::children_expr(Expr* in)
{
    switch(in->classid())
    {
    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 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 VARIABLE_NAME::ID:
        children_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case Variable_variable::ID:
        children_variable_variable(dynamic_cast<Variable_variable*>(in));
        break;
    case Array_access::ID:
        children_array_access(dynamic_cast<Array_access*>(in));
        break;
    case Field_access::ID:
        children_field_access(dynamic_cast<Field_access*>(in));
        break;
    case Array_next::ID:
        children_array_next(dynamic_cast<Array_next*>(in));
        break;
    case FOREIGN::ID:
        children_foreign(dynamic_cast<FOREIGN*>(in));
        break;
    case Isset::ID:
        children_isset(dynamic_cast<Isset*>(in));
        break;
    case Foreach_has_key::ID:
        children_foreach_has_key(dynamic_cast<Foreach_has_key*>(in));
        break;
    case Foreach_get_key::ID:
        children_foreach_get_key(dynamic_cast<Foreach_get_key*>(in));
        break;
    case Foreach_get_val::ID:
        children_foreach_get_val(dynamic_cast<Foreach_get_val*>(in));
        break;
    case Param_is_ref::ID:
        children_param_is_ref(dynamic_cast<Param_is_ref*>(in));
        break;
    }
}

void Visitor::children_target(Target* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID:
        children_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
        break;
    case CLASS_NAME::ID:
        children_class_name(dynamic_cast<CLASS_NAME*>(in));
        break;
    }
}

void Visitor::children_field_name(Field_name* in)
{
    switch(in->classid())
    {
    case FIELD_NAME::ID:
        children_field_name(dynamic_cast<FIELD_NAME*>(in));
        break;
    case Variable_field::ID:
        children_variable_field(dynamic_cast<Variable_field*>(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 Variable_class::ID:
        children_variable_class(dynamic_cast<Variable_class*>(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 Variable_method::ID:
        children_variable_method(dynamic_cast<Variable_method*>(in));
        break;
    }
}

void Visitor::children_static_array_key(Static_array_key* in)
{
    switch(in->classid())
    {
    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 Constant::ID:
        children_constant(dynamic_cast<Constant*>(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.0085 ]--