RULE* local = enter_rule( rulename, m ); procedure->module = m; if ( !local_only )
RULE* local = define_rule( m, rulename, m ); local->exported = exported; set_rule_body( local, args, procedure );   if ( procedure->rulename == 0 ) procedure->rulename = global_rule_name( local );   if ( exported )
RULE* new_rule_body( module* m, char* rulename, argument_list* args, PARSE* procedure, int local_only ){    RULE* local = enter_rule( rulename, m );    procedure->module = m;    if ( !local_only )    {        RULE* global = global_rule( rulename, m );        procedure->rulename = copystr( global->name );        set_rule_body( global, args, procedure );    }    else    {        local->local_only = 1;        procedure->rulename = global_name( rulename, m );    }    set_rule_body( local, args, procedure );    return local;}