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

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

/* Invoked before the children are transformed */
PHP_script* Transform::pre_php_script(PHP_script* in)
{
    return in;
}

void Transform::pre_class_def(Class_def* in, Statement_list* out)
{
    out->push_back(in);
}

Class_mod* Transform::pre_class_mod(Class_mod* in)
{
    return in;
}

void Transform::pre_interface_def(Interface_def* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_method(Method* in, Method_list* out)
{
    out->push_back(in);
}

Signature* Transform::pre_signature(Signature* in)
{
    return in;
}

Method_mod* Transform::pre_method_mod(Method_mod* in)
{
    return in;
}

void Transform::pre_formal_parameter(Formal_parameter* in, Formal_parameter_list* out)
{
    out->push_back(in);
}

Type* Transform::pre_type(Type* in)
{
    return in;
}

void Transform::pre_attribute(Attribute* in, Member_list* out)
{
    out->push_back(in);
}

Attr_mod* Transform::pre_attr_mod(Attr_mod* in)
{
    return in;
}

Name_with_default* Transform::pre_name_with_default(Name_with_default* in)
{
    return in;
}

void Transform::pre_if(If* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_while(While* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_do(Do* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_for(For* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_foreach(Foreach* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_switch(Switch* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_switch_case(Switch_case* in, Switch_case_list* out)
{
    out->push_back(in);
}

void Transform::pre_break(Break* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_continue(Continue* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_return(Return* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_static_declaration(Static_declaration* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_global(Global* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_declare(Declare* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_directive(Directive* in, Directive_list* out)
{
    out->push_back(in);
}

void Transform::pre_try(Try* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_catch(Catch* in, Catch_list* out)
{
    out->push_back(in);
}

void Transform::pre_throw(Throw* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_eval_expr(Eval_expr* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::pre_nop(Nop* in, Statement_list* out)
{
    out->push_back(in);
}

Expr* Transform::pre_assignment(Assignment* in)
{
    return in;
}

Expr* Transform::pre_op_assignment(Op_assignment* in)
{
    return in;
}

Expr* Transform::pre_list_assignment(List_assignment* in)
{
    return in;
}

void Transform::pre_nested_list_elements(Nested_list_elements* in, List_element_list* out)
{
    out->push_back(in);
}

Expr* Transform::pre_cast(Cast* in)
{
    return in;
}

Expr* Transform::pre_unary_op(Unary_op* in)
{
    return in;
}

Expr* Transform::pre_bin_op(Bin_op* in)
{
    return in;
}

Expr* Transform::pre_conditional_expr(Conditional_expr* in)
{
    return in;
}

Expr* Transform::pre_ignore_errors(Ignore_errors* in)
{
    return in;
}

Expr* Transform::pre_constant(Constant* in)
{
    return in;
}

Expr* Transform::pre_instanceof(Instanceof* in)
{
    return in;
}

Variable* Transform::pre_variable(Variable* in)
{
    return in;
}

Reflection* Transform::pre_reflection(Reflection* in)
{
    return in;
}

Expr* Transform::pre_pre_op(Pre_op* in)
{
    return in;
}

Expr* Transform::pre_post_op(Post_op* in)
{
    return in;
}

Expr* Transform::pre_array(Array* in)
{
    return in;
}

void Transform::pre_array_elem(Array_elem* in, Array_elem_list* out)
{
    out->push_back(in);
}

Expr* Transform::pre_method_invocation(Method_invocation* in)
{
    return in;
}

void Transform::pre_actual_parameter(Actual_parameter* in, Actual_parameter_list* out)
{
    out->push_back(in);
}

Expr* Transform::pre_new(New* in)
{
    return in;
}

FOREIGN* Transform::pre_foreign(FOREIGN* in)
{
    return in;
}

CLASS_NAME* Transform::pre_class_name(CLASS_NAME* in)
{
    return in;
}

INTERFACE_NAME* Transform::pre_interface_name(INTERFACE_NAME* in)
{
    return in;
}

METHOD_NAME* Transform::pre_method_name(METHOD_NAME* in)
{
    return in;
}

VARIABLE_NAME* Transform::pre_variable_name(VARIABLE_NAME* in)
{
    return in;
}

DIRECTIVE_NAME* Transform::pre_directive_name(DIRECTIVE_NAME* in)
{
    return in;
}

Expr* Transform::pre_int(INT* in)
{
    return in;
}

Expr* Transform::pre_real(REAL* in)
{
    return in;
}

Expr* Transform::pre_string(STRING* in)
{
    return in;
}

Expr* Transform::pre_bool(BOOL* in)
{
    return in;
}

Expr* Transform::pre_nil(NIL* in)
{
    return in;
}

OP* Transform::pre_op(OP* in)
{
    return in;
}

CAST* Transform::pre_cast(CAST* in)
{
    return in;
}

CONSTANT_NAME* Transform::pre_constant_name(CONSTANT_NAME* in)
{
    return in;
}

/* Invoked after the children have been transformed */
PHP_script* Transform::post_php_script(PHP_script* in)
{
    return in;
}

void Transform::post_class_def(Class_def* in, Statement_list* out)
{
    out->push_back(in);
}

Class_mod* Transform::post_class_mod(Class_mod* in)
{
    return in;
}

void Transform::post_interface_def(Interface_def* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_method(Method* in, Method_list* out)
{
    out->push_back(in);
}

Signature* Transform::post_signature(Signature* in)
{
    return in;
}

Method_mod* Transform::post_method_mod(Method_mod* in)
{
    return in;
}

void Transform::post_formal_parameter(Formal_parameter* in, Formal_parameter_list* out)
{
    out->push_back(in);
}

Type* Transform::post_type(Type* in)
{
    return in;
}

void Transform::post_attribute(Attribute* in, Member_list* out)
{
    out->push_back(in);
}

Attr_mod* Transform::post_attr_mod(Attr_mod* in)
{
    return in;
}

Name_with_default* Transform::post_name_with_default(Name_with_default* in)
{
    return in;
}

void Transform::post_if(If* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_while(While* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_do(Do* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_for(For* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_foreach(Foreach* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_switch(Switch* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_switch_case(Switch_case* in, Switch_case_list* out)
{
    out->push_back(in);
}

void Transform::post_break(Break* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_continue(Continue* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_return(Return* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_static_declaration(Static_declaration* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_global(Global* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_declare(Declare* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_directive(Directive* in, Directive_list* out)
{
    out->push_back(in);
}

void Transform::post_try(Try* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_catch(Catch* in, Catch_list* out)
{
    out->push_back(in);
}

void Transform::post_throw(Throw* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_eval_expr(Eval_expr* in, Statement_list* out)
{
    out->push_back(in);
}

void Transform::post_nop(Nop* in, Statement_list* out)
{
    out->push_back(in);
}

Expr* Transform::post_assignment(Assignment* in)
{
    return in;
}

Expr* Transform::post_op_assignment(Op_assignment* in)
{
    return in;
}

Expr* Transform::post_list_assignment(List_assignment* in)
{
    return in;
}

void Transform::post_nested_list_elements(Nested_list_elements* in, List_element_list* out)
{
    out->push_back(in);
}

Expr* Transform::post_cast(Cast* in)
{
    return in;
}

Expr* Transform::post_unary_op(Unary_op* in)
{
    return in;
}

Expr* Transform::post_bin_op(Bin_op* in)
{
    return in;
}

Expr* Transform::post_conditional_expr(Conditional_expr* in)
{
    return in;
}

Expr* Transform::post_ignore_errors(Ignore_errors* in)
{
    return in;
}

Expr* Transform::post_constant(Constant* in)
{
    return in;
}

Expr* Transform::post_instanceof(Instanceof* in)
{
    return in;
}

Variable* Transform::post_variable(Variable* in)
{
    return in;
}

Reflection* Transform::post_reflection(Reflection* in)
{
    return in;
}

Expr* Transform::post_pre_op(Pre_op* in)
{
    return in;
}

Expr* Transform::post_post_op(Post_op* in)
{
    return in;
}

Expr* Transform::post_array(Array* in)
{
    return in;
}

void Transform::post_array_elem(Array_elem* in, Array_elem_list* out)
{
    out->push_back(in);
}

Expr* Transform::post_method_invocation(Method_invocation* in)
{
    return in;
}

void Transform::post_actual_parameter(Actual_parameter* in, Actual_parameter_list* out)
{
    out->push_back(in);
}

Expr* Transform::post_new(New* in)
{
    return in;
}

FOREIGN* Transform::post_foreign(FOREIGN* in)
{
    return in;
}

CLASS_NAME* Transform::post_class_name(CLASS_NAME* in)
{
    return in;
}

INTERFACE_NAME* Transform::post_interface_name(INTERFACE_NAME* in)
{
    return in;
}

METHOD_NAME* Transform::post_method_name(METHOD_NAME* in)
{
    return in;
}

VARIABLE_NAME* Transform::post_variable_name(VARIABLE_NAME* in)
{
    return in;
}

DIRECTIVE_NAME* Transform::post_directive_name(DIRECTIVE_NAME* in)
{
    return in;
}

Expr* Transform::post_int(INT* in)
{
    return in;
}

Expr* Transform::post_real(REAL* in)
{
    return in;
}

Expr* Transform::post_string(STRING* in)
{
    return in;
}

Expr* Transform::post_bool(BOOL* in)
{
    return in;
}

Expr* Transform::post_nil(NIL* in)
{
    return in;
}

OP* Transform::post_op(OP* in)
{
    return in;
}

CAST* Transform::post_cast(CAST* in)
{
    return in;
}

CONSTANT_NAME* Transform::post_constant_name(CONSTANT_NAME* in)
{
    return in;
}

/* Transform the children of the node */
void Transform::children_php_script(PHP_script* in)
{
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_class_def(Class_def* in)
{
    in->class_mod = transform_class_mod(in->class_mod);
    in->class_name = transform_class_name(in->class_name);
    in->extends = transform_class_name(in->extends);
    in->implements = transform_interface_name_list(in->implements);
    in->members = transform_member_list(in->members);
}

void Transform::children_class_mod(Class_mod* in)
{
}

void Transform::children_interface_def(Interface_def* in)
{
    in->interface_name = transform_interface_name(in->interface_name);
    in->extends = transform_interface_name_list(in->extends);
    in->members = transform_member_list(in->members);
}

void Transform::children_method(Method* in)
{
    in->signature = transform_signature(in->signature);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_signature(Signature* in)
{
    in->method_mod = transform_method_mod(in->method_mod);
    in->method_name = transform_method_name(in->method_name);
    in->formal_parameters = transform_formal_parameter_list(in->formal_parameters);
}

void Transform::children_method_mod(Method_mod* in)
{
}

void Transform::children_formal_parameter(Formal_parameter* in)
{
    in->type = transform_type(in->type);
    in->var = transform_name_with_default(in->var);
}

void Transform::children_type(Type* in)
{
    in->class_name = transform_class_name(in->class_name);
}

void Transform::children_attribute(Attribute* in)
{
    in->attr_mod = transform_attr_mod(in->attr_mod);
    in->vars = transform_name_with_default_list(in->vars);
}

void Transform::children_attr_mod(Attr_mod* in)
{
}

void Transform::children_name_with_default(Name_with_default* in)
{
    in->variable_name = transform_variable_name(in->variable_name);
    in->expr = transform_expr(in->expr);
}

void Transform::children_if(If* in)
{
    in->expr = transform_expr(in->expr);
    in->iftrue = transform_statement_list(in->iftrue);
    in->iffalse = transform_statement_list(in->iffalse);
}

void Transform::children_while(While* in)
{
    in->expr = transform_expr(in->expr);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_do(Do* in)
{
    in->statements = transform_statement_list(in->statements);
    in->expr = transform_expr(in->expr);
}

void Transform::children_for(For* in)
{
    in->init = transform_expr(in->init);
    in->cond = transform_expr(in->cond);
    in->incr = transform_expr(in->incr);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_foreach(Foreach* in)
{
    in->expr = transform_expr(in->expr);
    in->key = transform_variable(in->key);
    in->val = transform_variable(in->val);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_switch(Switch* in)
{
    in->expr = transform_expr(in->expr);
    in->switch_cases = transform_switch_case_list(in->switch_cases);
}

void Transform::children_switch_case(Switch_case* in)
{
    in->expr = transform_expr(in->expr);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_break(Break* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_continue(Continue* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_return(Return* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_static_declaration(Static_declaration* in)
{
    in->vars = transform_name_with_default_list(in->vars);
}

void Transform::children_global(Global* in)
{
    in->variable_names = transform_variable_name_list(in->variable_names);
}

void Transform::children_declare(Declare* in)
{
    in->directives = transform_directive_list(in->directives);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_directive(Directive* in)
{
    in->directive_name = transform_directive_name(in->directive_name);
    in->expr = transform_expr(in->expr);
}

void Transform::children_try(Try* in)
{
    in->statements = transform_statement_list(in->statements);
    in->catches = transform_catch_list(in->catches);
}

void Transform::children_catch(Catch* in)
{
    in->class_name = transform_class_name(in->class_name);
    in->variable_name = transform_variable_name(in->variable_name);
    in->statements = transform_statement_list(in->statements);
}

void Transform::children_throw(Throw* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_eval_expr(Eval_expr* in)
{
    in->expr = transform_expr(in->expr);
}

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

void Transform::children_assignment(Assignment* in)
{
    in->variable = transform_variable(in->variable);
    in->expr = transform_expr(in->expr);
}

void Transform::children_op_assignment(Op_assignment* in)
{
    in->variable = transform_variable(in->variable);
    in->op = transform_op(in->op);
    in->expr = transform_expr(in->expr);
}

void Transform::children_list_assignment(List_assignment* in)
{
    in->list_elements = transform_list_element_list(in->list_elements);
    in->expr = transform_expr(in->expr);
}

void Transform::children_nested_list_elements(Nested_list_elements* in)
{
    in->list_elements = transform_list_element_list(in->list_elements);
}

void Transform::children_cast(Cast* in)
{
    in->cast = transform_cast(in->cast);
    in->expr = transform_expr(in->expr);
}

void Transform::children_unary_op(Unary_op* in)
{
    in->op = transform_op(in->op);
    in->expr = transform_expr(in->expr);
}

void Transform::children_bin_op(Bin_op* in)
{
    in->left = transform_expr(in->left);
    in->op = transform_op(in->op);
    in->right = transform_expr(in->right);
}

void Transform::children_conditional_expr(Conditional_expr* in)
{
    in->cond = transform_expr(in->cond);
    in->iftrue = transform_expr(in->iftrue);
    in->iffalse = transform_expr(in->iffalse);
}

void Transform::children_ignore_errors(Ignore_errors* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_constant(Constant* in)
{
    in->class_name = transform_class_name(in->class_name);
    in->constant_name = transform_constant_name(in->constant_name);
}

void Transform::children_instanceof(Instanceof* in)
{
    in->expr = transform_expr(in->expr);
    in->class_name = transform_class_name(in->class_name);
}

void Transform::children_variable(Variable* in)
{
    in->target = transform_target(in->target);
    in->variable_name = transform_variable_name(in->variable_name);
    in->array_indices = transform_expr_list(in->array_indices);
}

void Transform::children_reflection(Reflection* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_pre_op(Pre_op* in)
{
    in->op = transform_op(in->op);
    in->variable = transform_variable(in->variable);
}

void Transform::children_post_op(Post_op* in)
{
    in->variable = transform_variable(in->variable);
    in->op = transform_op(in->op);
}

void Transform::children_array(Array* in)
{
    in->array_elems = transform_array_elem_list(in->array_elems);
}

void Transform::children_array_elem(Array_elem* in)
{
    in->key = transform_expr(in->key);
    in->val = transform_expr(in->val);
}

void Transform::children_method_invocation(Method_invocation* in)
{
    in->target = transform_target(in->target);
    in->method_name = transform_method_name(in->method_name);
    in->actual_parameters = transform_actual_parameter_list(in->actual_parameters);
}

void Transform::children_actual_parameter(Actual_parameter* in)
{
    in->expr = transform_expr(in->expr);
}

void Transform::children_new(New* in)
{
    in->class_name = transform_class_name(in->class_name);
    in->actual_parameters = transform_actual_parameter_list(in->actual_parameters);
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Call the pre-transform, transform-children post-transform methods in order */
/* Do not override unless you know what you are doing */
Statement_list* Transform::transform_statement_list(Statement_list* in)
{
    Statement_list::const_iterator i;
    Statement_list* out = new Statement_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_statement(*i));
    }
    
    return out;
}

Statement_list* Transform::transform_statement(Statement* in)
{
    Statement_list::const_iterator i;
    Statement_list* out1 = new Statement_list;
    Statement_list* out2 = new Statement_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_statement(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_statement(*i);
            post_statement(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

Class_mod* Transform::transform_class_mod(Class_mod* in)
{
    if(in == NULL) return NULL;
    
    Class_mod* out;
    
    out = pre_class_mod(in);
    if(out != NULL)
    {
        children_class_mod(out);
        out = post_class_mod(out);
    }
    
    return out;
}

CLASS_NAME* Transform::transform_class_name(CLASS_NAME* in)
{
    if(in == NULL) return NULL;
    
    CLASS_NAME* out;
    
    out = pre_class_name(in);
    if(out != NULL)
    {
        children_class_name(out);
        out = post_class_name(out);
    }
    
    return out;
}

INTERFACE_NAME_list* Transform::transform_interface_name_list(INTERFACE_NAME_list* in)
{
    INTERFACE_NAME_list::const_iterator i;
    INTERFACE_NAME_list* out = new INTERFACE_NAME_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back(transform_interface_name(*i));
    }
    
    return out;
}

Member_list* Transform::transform_member_list(Member_list* in)
{
    Member_list::const_iterator i;
    Member_list* out = new Member_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_member(*i));
    }
    
    return out;
}

Member_list* Transform::transform_member(Member* in)
{
    Member_list::const_iterator i;
    Member_list* out1 = new Member_list;
    Member_list* out2 = new Member_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_member(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_member(*i);
            post_member(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

INTERFACE_NAME* Transform::transform_interface_name(INTERFACE_NAME* in)
{
    if(in == NULL) return NULL;
    
    INTERFACE_NAME* out;
    
    out = pre_interface_name(in);
    if(out != NULL)
    {
        children_interface_name(out);
        out = post_interface_name(out);
    }
    
    return out;
}

Signature* Transform::transform_signature(Signature* in)
{
    if(in == NULL) return NULL;
    
    Signature* out;
    
    out = pre_signature(in);
    if(out != NULL)
    {
        children_signature(out);
        out = post_signature(out);
    }
    
    return out;
}

Method_mod* Transform::transform_method_mod(Method_mod* in)
{
    if(in == NULL) return NULL;
    
    Method_mod* out;
    
    out = pre_method_mod(in);
    if(out != NULL)
    {
        children_method_mod(out);
        out = post_method_mod(out);
    }
    
    return out;
}

METHOD_NAME* Transform::transform_method_name(METHOD_NAME* in)
{
    if(in == NULL) return NULL;
    
    METHOD_NAME* out;
    
    out = pre_method_name(in);
    if(out != NULL)
    {
        children_method_name(out);
        out = post_method_name(out);
    }
    
    return out;
}

Formal_parameter_list* Transform::transform_formal_parameter_list(Formal_parameter_list* in)
{
    Formal_parameter_list::const_iterator i;
    Formal_parameter_list* out = new Formal_parameter_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_formal_parameter(*i));
    }
    
    return out;
}

Formal_parameter_list* Transform::transform_formal_parameter(Formal_parameter* in)
{
    Formal_parameter_list::const_iterator i;
    Formal_parameter_list* out1 = new Formal_parameter_list;
    Formal_parameter_list* out2 = new Formal_parameter_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_formal_parameter(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_formal_parameter(*i);
            post_formal_parameter(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

Type* Transform::transform_type(Type* in)
{
    if(in == NULL) return NULL;
    
    Type* out;
    
    out = pre_type(in);
    if(out != NULL)
    {
        children_type(out);
        out = post_type(out);
    }
    
    return out;
}

Name_with_default* Transform::transform_name_with_default(Name_with_default* in)
{
    if(in == NULL) return NULL;
    
    Name_with_default* out;
    
    out = pre_name_with_default(in);
    if(out != NULL)
    {
        children_name_with_default(out);
        out = post_name_with_default(out);
    }
    
    return out;
}

Attr_mod* Transform::transform_attr_mod(Attr_mod* in)
{
    if(in == NULL) return NULL;
    
    Attr_mod* out;
    
    out = pre_attr_mod(in);
    if(out != NULL)
    {
        children_attr_mod(out);
        out = post_attr_mod(out);
    }
    
    return out;
}

Name_with_default_list* Transform::transform_name_with_default_list(Name_with_default_list* in)
{
    Name_with_default_list::const_iterator i;
    Name_with_default_list* out = new Name_with_default_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back(transform_name_with_default(*i));
    }
    
    return out;
}

VARIABLE_NAME* Transform::transform_variable_name(VARIABLE_NAME* in)
{
    if(in == NULL) return NULL;
    
    VARIABLE_NAME* out;
    
    out = pre_variable_name(in);
    if(out != NULL)
    {
        children_variable_name(out);
        out = post_variable_name(out);
    }
    
    return out;
}

Expr* Transform::transform_expr(Expr* in)
{
    if(in == NULL) return NULL;
    
    Expr* out;
    
    out = pre_expr(in);
    if(out != NULL)
    {
        children_expr(out);
        out = post_expr(out);
    }
    
    return out;
}

Variable* Transform::transform_variable(Variable* in)
{
    if(in == NULL) return NULL;
    
    Variable* out;
    
    out = pre_variable(in);
    if(out != NULL)
    {
        children_variable(out);
        out = post_variable(out);
    }
    
    return out;
}

Switch_case_list* Transform::transform_switch_case_list(Switch_case_list* in)
{
    Switch_case_list::const_iterator i;
    Switch_case_list* out = new Switch_case_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_switch_case(*i));
    }
    
    return out;
}

Switch_case_list* Transform::transform_switch_case(Switch_case* in)
{
    Switch_case_list::const_iterator i;
    Switch_case_list* out1 = new Switch_case_list;
    Switch_case_list* out2 = new Switch_case_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_switch_case(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_switch_case(*i);
            post_switch_case(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

Variable_name_list* Transform::transform_variable_name_list(Variable_name_list* in)
{
    Variable_name_list::const_iterator i;
    Variable_name_list* out = new Variable_name_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back(transform_variable_name(*i));
    }
    
    return out;
}

Directive_list* Transform::transform_directive_list(Directive_list* in)
{
    Directive_list::const_iterator i;
    Directive_list* out = new Directive_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_directive(*i));
    }
    
    return out;
}

Directive_list* Transform::transform_directive(Directive* in)
{
    Directive_list::const_iterator i;
    Directive_list* out1 = new Directive_list;
    Directive_list* out2 = new Directive_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_directive(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_directive(*i);
            post_directive(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

DIRECTIVE_NAME* Transform::transform_directive_name(DIRECTIVE_NAME* in)
{
    if(in == NULL) return NULL;
    
    DIRECTIVE_NAME* out;
    
    out = pre_directive_name(in);
    if(out != NULL)
    {
        children_directive_name(out);
        out = post_directive_name(out);
    }
    
    return out;
}

Catch_list* Transform::transform_catch_list(Catch_list* in)
{
    Catch_list::const_iterator i;
    Catch_list* out = new Catch_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_catch(*i));
    }
    
    return out;
}

Catch_list* Transform::transform_catch(Catch* in)
{
    Catch_list::const_iterator i;
    Catch_list* out1 = new Catch_list;
    Catch_list* out2 = new Catch_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_catch(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_catch(*i);
            post_catch(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

OP* Transform::transform_op(OP* in)
{
    if(in == NULL) return NULL;
    
    OP* out;
    
    out = pre_op(in);
    if(out != NULL)
    {
        children_op(out);
        out = post_op(out);
    }
    
    return out;
}

List_element_list* Transform::transform_list_element_list(List_element_list* in)
{
    List_element_list::const_iterator i;
    List_element_list* out = new List_element_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_list_element(*i));
    }
    
    return out;
}

List_element_list* Transform::transform_list_element(List_element* in)
{
    List_element_list::const_iterator i;
    List_element_list* out1 = new List_element_list;
    List_element_list* out2 = new List_element_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_list_element(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_list_element(*i);
            post_list_element(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

CAST* Transform::transform_cast(CAST* in)
{
    if(in == NULL) return NULL;
    
    CAST* out;
    
    out = pre_cast(in);
    if(out != NULL)
    {
        children_cast(out);
        out = post_cast(out);
    }
    
    return out;
}

CONSTANT_NAME* Transform::transform_constant_name(CONSTANT_NAME* in)
{
    if(in == NULL) return NULL;
    
    CONSTANT_NAME* out;
    
    out = pre_constant_name(in);
    if(out != NULL)
    {
        children_constant_name(out);
        out = post_constant_name(out);
    }
    
    return out;
}

Class_name* Transform::transform_class_name(Class_name* in)
{
    if(in == NULL) return NULL;
    
    Class_name* out;
    
    out = pre_class_name(in);
    if(out != NULL)
    {
        children_class_name(out);
        out = post_class_name(out);
    }
    
    return out;
}

Target* Transform::transform_target(Target* in)
{
    if(in == NULL) return NULL;
    
    Target* out;
    
    out = pre_target(in);
    if(out != NULL)
    {
        children_target(out);
        out = post_target(out);
    }
    
    return out;
}

Variable_name* Transform::transform_variable_name(Variable_name* in)
{
    if(in == NULL) return NULL;
    
    Variable_name* out;
    
    out = pre_variable_name(in);
    if(out != NULL)
    {
        children_variable_name(out);
        out = post_variable_name(out);
    }
    
    return out;
}

Expr_list* Transform::transform_expr_list(Expr_list* in)
{
    Expr_list::const_iterator i;
    Expr_list* out = new Expr_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back(transform_expr(*i));
    }
    
    return out;
}

Array_elem_list* Transform::transform_array_elem_list(Array_elem_list* in)
{
    Array_elem_list::const_iterator i;
    Array_elem_list* out = new Array_elem_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_array_elem(*i));
    }
    
    return out;
}

Array_elem_list* Transform::transform_array_elem(Array_elem* in)
{
    Array_elem_list::const_iterator i;
    Array_elem_list* out1 = new Array_elem_list;
    Array_elem_list* out2 = new Array_elem_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_array_elem(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_array_elem(*i);
            post_array_elem(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

Method_name* Transform::transform_method_name(Method_name* in)
{
    if(in == NULL) return NULL;
    
    Method_name* out;
    
    out = pre_method_name(in);
    if(out != NULL)
    {
        children_method_name(out);
        out = post_method_name(out);
    }
    
    return out;
}

Actual_parameter_list* Transform::transform_actual_parameter_list(Actual_parameter_list* in)
{
    Actual_parameter_list::const_iterator i;
    Actual_parameter_list* out = new Actual_parameter_list;
    
    if(in == NULL)
        return NULL;
    
    for(i = in->begin(); i != in->end(); i++)
    {
        out->push_back_all(transform_actual_parameter(*i));
    }
    
    return out;
}

Actual_parameter_list* Transform::transform_actual_parameter(Actual_parameter* in)
{
    Actual_parameter_list::const_iterator i;
    Actual_parameter_list* out1 = new Actual_parameter_list;
    Actual_parameter_list* out2 = new Actual_parameter_list;
    
    if(in == NULL) out1->push_back(NULL);
    else pre_actual_parameter(in, out1);
    for(i = out1->begin(); i != out1->end(); i++)
    {
        if(*i != NULL)
        {
            children_actual_parameter(*i);
            post_actual_parameter(*i, out2);
        }
        else out2->push_back(NULL);
    }
    
    return out2;
}

PHP_script* Transform::transform_php_script(PHP_script* in)
{
    if(in == NULL) return NULL;
    
    PHP_script* out;
    
    out = pre_php_script(in);
    if(out != NULL)
    {
        children_php_script(out);
        out = post_php_script(out);
    }
    
    return out;
}

/* Invoke the right pre-transform (manual dispatching) */
/* Do not override unless you know what you are doing */
void Transform::pre_statement(Statement* in, Statement_list* out)
{
    switch(in->classid())
    {
    case Class_def::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_class_def(dynamic_cast<Class_def*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Interface_def::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_interface_def(dynamic_cast<Interface_def*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Method::ID: 
        {
            Method_list* local_out = new Method_list;
            Method_list::const_iterator i;
            pre_method(dynamic_cast<Method*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Return::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_return(dynamic_cast<Return*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Static_declaration::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_static_declaration(dynamic_cast<Static_declaration*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Global::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_global(dynamic_cast<Global*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Try::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_try(dynamic_cast<Try*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Throw::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_throw(dynamic_cast<Throw*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Eval_expr::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_eval_expr(dynamic_cast<Eval_expr*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case If::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_if(dynamic_cast<If*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case While::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_while(dynamic_cast<While*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Do::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_do(dynamic_cast<Do*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case For::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_for(dynamic_cast<For*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Foreach::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_foreach(dynamic_cast<Foreach*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Switch::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_switch(dynamic_cast<Switch*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Break::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_break(dynamic_cast<Break*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Continue::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_continue(dynamic_cast<Continue*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Declare::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_declare(dynamic_cast<Declare*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Nop::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            pre_nop(dynamic_cast<Nop*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case FOREIGN::ID: 
        out->push_back(pre_foreign(dynamic_cast<FOREIGN*>(in)));
        return;
    }
    assert(0);
}

void Transform::pre_member(Member* in, Member_list* out)
{
    switch(in->classid())
    {
    case Method::ID: 
        {
            Method_list* local_out = new Method_list;
            Method_list::const_iterator i;
            pre_method(dynamic_cast<Method*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Attribute::ID: 
        {
            Member_list* local_out = new Member_list;
            Member_list::const_iterator i;
            pre_attribute(dynamic_cast<Attribute*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    }
    assert(0);
}

Expr* Transform::pre_expr(Expr* in)
{
    switch(in->classid())
    {
    case Assignment::ID: return pre_assignment(dynamic_cast<Assignment*>(in));
    case Cast::ID: return pre_cast(dynamic_cast<Cast*>(in));
    case Unary_op::ID: return pre_unary_op(dynamic_cast<Unary_op*>(in));
    case Bin_op::ID: return pre_bin_op(dynamic_cast<Bin_op*>(in));
    case Constant::ID: return pre_constant(dynamic_cast<Constant*>(in));
    case Instanceof::ID: return pre_instanceof(dynamic_cast<Instanceof*>(in));
    case Variable::ID: return pre_variable(dynamic_cast<Variable*>(in));
    case Pre_op::ID: return pre_pre_op(dynamic_cast<Pre_op*>(in));
    case Method_invocation::ID: return pre_method_invocation(dynamic_cast<Method_invocation*>(in));
    case New::ID: return pre_new(dynamic_cast<New*>(in));
    case INT::ID: return pre_int(dynamic_cast<INT*>(in));
    case REAL::ID: return pre_real(dynamic_cast<REAL*>(in));
    case STRING::ID: return pre_string(dynamic_cast<STRING*>(in));
    case BOOL::ID: return pre_bool(dynamic_cast<BOOL*>(in));
    case NIL::ID: return pre_nil(dynamic_cast<NIL*>(in));
    case Op_assignment::ID: return pre_op_assignment(dynamic_cast<Op_assignment*>(in));
    case List_assignment::ID: return pre_list_assignment(dynamic_cast<List_assignment*>(in));
    case Post_op::ID: return pre_post_op(dynamic_cast<Post_op*>(in));
    case Array::ID: return pre_array(dynamic_cast<Array*>(in));
    case Conditional_expr::ID: return pre_conditional_expr(dynamic_cast<Conditional_expr*>(in));
    case Ignore_errors::ID: return pre_ignore_errors(dynamic_cast<Ignore_errors*>(in));
    case FOREIGN::ID: return pre_foreign(dynamic_cast<FOREIGN*>(in));
    }
    assert(0);
}

Variable_name* Transform::pre_variable_name(Variable_name* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID: return pre_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
    case Reflection::ID: return pre_reflection(dynamic_cast<Reflection*>(in));
    }
    assert(0);
}

void Transform::pre_list_element(List_element* in, List_element_list* out)
{
    switch(in->classid())
    {
    case Variable::ID: 
        out->push_back(pre_variable(dynamic_cast<Variable*>(in)));
        return;
    case Nested_list_elements::ID: 
        {
            List_element_list* local_out = new List_element_list;
            List_element_list::const_iterator i;
            pre_nested_list_elements(dynamic_cast<Nested_list_elements*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    }
    assert(0);
}

Class_name* Transform::pre_class_name(Class_name* in)
{
    switch(in->classid())
    {
    case CLASS_NAME::ID: return pre_class_name(dynamic_cast<CLASS_NAME*>(in));
    case Reflection::ID: return pre_reflection(dynamic_cast<Reflection*>(in));
    }
    assert(0);
}

Target* Transform::pre_target(Target* in)
{
    switch(in->classid())
    {
    case Assignment::ID: return pre_assignment(dynamic_cast<Assignment*>(in));
    case Cast::ID: return pre_cast(dynamic_cast<Cast*>(in));
    case Unary_op::ID: return pre_unary_op(dynamic_cast<Unary_op*>(in));
    case Bin_op::ID: return pre_bin_op(dynamic_cast<Bin_op*>(in));
    case Constant::ID: return pre_constant(dynamic_cast<Constant*>(in));
    case Instanceof::ID: return pre_instanceof(dynamic_cast<Instanceof*>(in));
    case Variable::ID: return pre_variable(dynamic_cast<Variable*>(in));
    case Pre_op::ID: return pre_pre_op(dynamic_cast<Pre_op*>(in));
    case Method_invocation::ID: return pre_method_invocation(dynamic_cast<Method_invocation*>(in));
    case New::ID: return pre_new(dynamic_cast<New*>(in));
    case INT::ID: return pre_int(dynamic_cast<INT*>(in));
    case REAL::ID: return pre_real(dynamic_cast<REAL*>(in));
    case STRING::ID: return pre_string(dynamic_cast<STRING*>(in));
    case BOOL::ID: return pre_bool(dynamic_cast<BOOL*>(in));
    case NIL::ID: return pre_nil(dynamic_cast<NIL*>(in));
    case Op_assignment::ID: return pre_op_assignment(dynamic_cast<Op_assignment*>(in));
    case List_assignment::ID: return pre_list_assignment(dynamic_cast<List_assignment*>(in));
    case Post_op::ID: return pre_post_op(dynamic_cast<Post_op*>(in));
    case Array::ID: return pre_array(dynamic_cast<Array*>(in));
    case Conditional_expr::ID: return pre_conditional_expr(dynamic_cast<Conditional_expr*>(in));
    case Ignore_errors::ID: return pre_ignore_errors(dynamic_cast<Ignore_errors*>(in));
    case FOREIGN::ID: return pre_foreign(dynamic_cast<FOREIGN*>(in));
    case CLASS_NAME::ID: return pre_class_name(dynamic_cast<CLASS_NAME*>(in));
    }
    assert(0);
}

Method_name* Transform::pre_method_name(Method_name* in)
{
    switch(in->classid())
    {
    case METHOD_NAME::ID: return pre_method_name(dynamic_cast<METHOD_NAME*>(in));
    case Reflection::ID: return pre_reflection(dynamic_cast<Reflection*>(in));
    }
    assert(0);
}

/* Invoke the right post-transform (manual dispatching) */
/* Do not override unless you know what you are doing */
void Transform::post_statement(Statement* in, Statement_list* out)
{
    switch(in->classid())
    {
    case Class_def::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_class_def(dynamic_cast<Class_def*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Interface_def::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_interface_def(dynamic_cast<Interface_def*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Method::ID: 
        {
            Method_list* local_out = new Method_list;
            Method_list::const_iterator i;
            post_method(dynamic_cast<Method*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Return::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_return(dynamic_cast<Return*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Static_declaration::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_static_declaration(dynamic_cast<Static_declaration*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Global::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_global(dynamic_cast<Global*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Try::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_try(dynamic_cast<Try*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Throw::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_throw(dynamic_cast<Throw*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Eval_expr::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_eval_expr(dynamic_cast<Eval_expr*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case If::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_if(dynamic_cast<If*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case While::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_while(dynamic_cast<While*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Do::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_do(dynamic_cast<Do*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case For::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_for(dynamic_cast<For*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Foreach::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_foreach(dynamic_cast<Foreach*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Switch::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_switch(dynamic_cast<Switch*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Break::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_break(dynamic_cast<Break*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Continue::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_continue(dynamic_cast<Continue*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Declare::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_declare(dynamic_cast<Declare*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Nop::ID: 
        {
            Statement_list* local_out = new Statement_list;
            Statement_list::const_iterator i;
            post_nop(dynamic_cast<Nop*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case FOREIGN::ID: 
        out->push_back(post_foreign(dynamic_cast<FOREIGN*>(in)));
        return;
    }
    assert(0);
}

void Transform::post_member(Member* in, Member_list* out)
{
    switch(in->classid())
    {
    case Method::ID: 
        {
            Method_list* local_out = new Method_list;
            Method_list::const_iterator i;
            post_method(dynamic_cast<Method*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    case Attribute::ID: 
        {
            Member_list* local_out = new Member_list;
            Member_list::const_iterator i;
            post_attribute(dynamic_cast<Attribute*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    }
    assert(0);
}

Expr* Transform::post_expr(Expr* in)
{
    switch(in->classid())
    {
    case Assignment::ID: return post_assignment(dynamic_cast<Assignment*>(in));
    case Cast::ID: return post_cast(dynamic_cast<Cast*>(in));
    case Unary_op::ID: return post_unary_op(dynamic_cast<Unary_op*>(in));
    case Bin_op::ID: return post_bin_op(dynamic_cast<Bin_op*>(in));
    case Constant::ID: return post_constant(dynamic_cast<Constant*>(in));
    case Instanceof::ID: return post_instanceof(dynamic_cast<Instanceof*>(in));
    case Variable::ID: return post_variable(dynamic_cast<Variable*>(in));
    case Pre_op::ID: return post_pre_op(dynamic_cast<Pre_op*>(in));
    case Method_invocation::ID: return post_method_invocation(dynamic_cast<Method_invocation*>(in));
    case New::ID: return post_new(dynamic_cast<New*>(in));
    case INT::ID: return post_int(dynamic_cast<INT*>(in));
    case REAL::ID: return post_real(dynamic_cast<REAL*>(in));
    case STRING::ID: return post_string(dynamic_cast<STRING*>(in));
    case BOOL::ID: return post_bool(dynamic_cast<BOOL*>(in));
    case NIL::ID: return post_nil(dynamic_cast<NIL*>(in));
    case Op_assignment::ID: return post_op_assignment(dynamic_cast<Op_assignment*>(in));
    case List_assignment::ID: return post_list_assignment(dynamic_cast<List_assignment*>(in));
    case Post_op::ID: return post_post_op(dynamic_cast<Post_op*>(in));
    case Array::ID: return post_array(dynamic_cast<Array*>(in));
    case Conditional_expr::ID: return post_conditional_expr(dynamic_cast<Conditional_expr*>(in));
    case Ignore_errors::ID: return post_ignore_errors(dynamic_cast<Ignore_errors*>(in));
    case FOREIGN::ID: return post_foreign(dynamic_cast<FOREIGN*>(in));
    }
    assert(0);
}

Variable_name* Transform::post_variable_name(Variable_name* in)
{
    switch(in->classid())
    {
    case VARIABLE_NAME::ID: return post_variable_name(dynamic_cast<VARIABLE_NAME*>(in));
    case Reflection::ID: return post_reflection(dynamic_cast<Reflection*>(in));
    }
    assert(0);
}

void Transform::post_list_element(List_element* in, List_element_list* out)
{
    switch(in->classid())
    {
    case Variable::ID: 
        out->push_back(post_variable(dynamic_cast<Variable*>(in)));
        return;
    case Nested_list_elements::ID: 
        {
            List_element_list* local_out = new List_element_list;
            List_element_list::const_iterator i;
            post_nested_list_elements(dynamic_cast<Nested_list_elements*>(in), local_out);
            for(i = local_out->begin(); i != local_out->end(); i++)
                out->push_back(*i);
        }
        return;
    }
    assert(0);
}

Class_name* Transform::post_class_name(Class_name* in)
{
    switch(in->classid())
    {
    case CLASS_NAME::ID: return post_class_name(dynamic_cast<CLASS_NAME*>(in));
    case Reflection::ID: return post_reflection(dynamic_cast<Reflection*>(in));
    }
    assert(0);
}

Target* Transform::post_target(Target* in)
{
    switch(in->classid())
    {
    case Assignment::ID: return post_assignment(dynamic_cast<Assignment*>(in));
    case Cast::ID: return post_cast(dynamic_cast<Cast*>(in));
    case Unary_op::ID: return post_unary_op(dynamic_cast<Unary_op*>(in));
    case Bin_op::ID: return post_bin_op(dynamic_cast<Bin_op*>(in));
    case Constant::ID: return post_constant(dynamic_cast<Constant*>(in));
    case Instanceof::ID: return post_instanceof(dynamic_cast<Instanceof*>(in));
    case Variable::ID: return post_variable(dynamic_cast<Variable*>(in));
    case Pre_op::ID: return post_pre_op(dynamic_cast<Pre_op*>(in));
    case Method_invocation::ID: return post_method_invocation(dynamic_cast<Method_invocation*>(in));
    case New::ID: return post_new(dynamic_cast<New*>(in));
    case INT::ID: return post_int(dynamic_cast<INT*>(in));
    case REAL::ID: return post_real(dynamic_cast<REAL*>(in));
    case STRING::ID: return post_string(dynamic_cast<STRING*>(in));
    case BOOL::ID: return post_bool(dynamic_cast<BOOL*>(in));
    case NIL::ID: return post_nil(dynamic_cast<NIL*>(in));
    case Op_assignment::ID: return post_op_assignment(dynamic_cast<Op_assignment*>(in));
    case List_assignment::ID: return post_list_assignment(dynamic_cast<List_assignment*>(in));
    case Post_op::ID: return post_post_op(dynamic_cast<Post_op*>(in));
    case Array::ID: return post_array(dynamic_cast<Array*>(in));
    case Conditional_expr::ID: return post_conditional_expr(dynamic_cast<Conditional_expr*>(in));
    case Ignore_errors::ID: return post_ignore_errors(dynamic_cast<Ignore_errors*>(in));
    case FOREIGN::ID: return post_foreign(dynamic_cast<FOREIGN*>(in));
    case CLASS_NAME::ID: return post_class_name(dynamic_cast<CLASS_NAME*>(in));
    }
    assert(0);
}

Method_name* Transform::post_method_name(Method_name* in)
{
    switch(in->classid())
    {
    case METHOD_NAME::ID: return post_method_name(dynamic_cast<METHOD_NAME*>(in));
    case Reflection::ID: return post_reflection(dynamic_cast<Reflection*>(in));
    }
    assert(0);
}

/* Invoke the right transform-children (manual dispatching) */
/* Do not override unless you what you are doing */
void Transform::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 Transform::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 Transform::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 Transform::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 Transform::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 Transform::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 Transform::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 Transform::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.0136 ]--