/*
ANSI C code generated by SmallEiffel The GNU Eiffel Compiler
Release -0.76 (Saturday 11th november 2000)
Copyright (C), 1994-2000 - LORIA - UHP - CRIN - INRIA - FRANCE
Dominique COLNET and Suzanne COLLIN - colnet@loria.fr
http://SmallEiffel.loria.fr
*/
#ifdef __cplusplus
}
#endif
#include "compile_to_c.h"
#ifdef __cplusplus
extern "C" {
#endif


T6 r17is_flag_cecil(T17* C,T0* a1,T2 a2,T2 a3){
T6 R=0;
/*[IF*/
if(r7is_equal(ms18_218233,a1)){
R=1;
/*[IF*/
if((a2)<(a3)){
r131add_file((T131*)(oBC19cecil_pool),r17argument((a2)+(1)));
}
else{
r38w_put_string(r17command_name());
r38w_put_string(((T0*)ms18_935144013));
exit(1);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r17is_flag_debug_check(T0* a1){
T6 R=0;
/*[IF*/
if(r7is_equal(ms18_874467418,a1)){
R=1;
/*[IRF3.3set_debug_check*/((((T57*)((T57*)(oBC19run_control))))->_level)=(1);
/*]*/
}
/*FI]*/
return R;
}


void r17search_for_cc_flag(T2 a1){
T0* _c_compiler=NULL;
T2 _i=0;
_i=1;
while (!((_i)>(a1)))
{
/*[IF*/
if(r7is_equal((T7*)(((T0*)ms18_1719)),r17argument(_i))){
/*[IF*/
if((_i)<(a1)){
_i=(_i)+(1);
_c_compiler=r17argument(_i);
_i=(a1)+(1);
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
r48set_c_compiler((T48*)(r17system_tools()),_c_compiler);
}


T0* r17id_provider(void){
if(fBC19id_provider==0){fBC19id_provider=1;{
{T42*n=((T42*)se_malloc(sizeof(*n))/*4*/);
*n=M42;
oBC19id_provider=((T0*)n);
r42make(n);
}
}}
return oBC19id_provider;
}


T6 r17is_flag_ensure_check(T17* C,T0* a1){
T6 R=0;
/*[IF*/
if(r7is_equal(ms18_93490068,a1)){
R=1;
/*[IRF3.3set_ensure_check*/((((T57*)((T57*)(oBC19run_control))))->_level)=(-3);
/*]*/
r17check_for_level(C,a1);
}
/*FI]*/
return R;
}


T6 r17is_flag_o(T17* C,T0* a1,T2 a2,T2 a3,T0* a4){
T6 R=0;
T0* _output_name=NULL;
/*[IF*/
if(r7is_equal(ms18_336,a1)){
R=1;
/*[IF*/
if((a2)<(a3)){
_output_name=r17argument((a2)+(1));
/*[IF*/
if(r7has_suffix(((T7*)_output_name),((T0*)ms19_331))){
r38w_put_string(((T0*)ms18_1812938425));
r38w_put_string(_output_name);
r38w_put_string(((T0*)ms18_1009954795));
exit(1);
}
/*FI]*/
/*[IRF3.3set_output_name*/((((T57*)((T57*)(oBC19run_control))))->_output_name)=(_output_name);
/*]*/
}
else{
r38w_put_string(r17command_name());
r38w_put_string(((T0*)ms18_1740192162));
exit(1);
}
/*FI]*/
}
/*FI]*/
return R;
}


void r17check_for_level(T17* C,T0* a1){
/*[IF*/
if(((/*RF2*/(C)->_level_flag/*0*/))!=((void*)(NULL))){
/*[IF*/
if(!(r7is_equal((T7*)((/*RF2*/(C)->_level_flag/*0*/)),a1))){
r38w_put_string(r17command_name());
r38w_put_string(((T0*)ms18_199827552));
r38w_put_string((/*RF2*/(C)->_level_flag/*0*/));
r38w_put_string(((T0*)ms18_546820847));
r38w_put_string(a1);
r38w_put_string(((T0*)ms20_46));
exit(1);
}
/*FI]*/
}
else{
(/*SFN*/C->_level_flag)=a1;
}
/*FI]*/
}


T0* r17argument(T2 a1){
T0* R=NULL;
R=/*(IRF4.6item*/((/*RF2*/((T120*)(r17command_arguments()))->_storage/*4*/))[a1]/*)*/;
return R;
}


T6 r17is_flag_require_check(T17* C,T0* a1){
T6 R=0;
/*[IF*/
if(r7is_equal(ms18_1115094588,a1)){
R=1;
/*[IRF3.3set_require_check*/((((T57*)((T57*)(oBC19run_control))))->_level)=(-4);
/*]*/
r17check_for_level(C,a1);
}
/*FI]*/
return R;
}


T6 r17is_flag_no_check(T17* C,T0* a1){
T6 R=0;
/*[IF*/
if(r7is_equal(ms18_28281127,a1)){
R=1;
/*[IRF3.3set_no_check*/((((T57*)((T57*)(oBC19run_control))))->_level)=(-5);
/*]*/
r17check_for_level(C,a1);
}
/*FI]*/
return R;
}


T6 r17is_flag_no_warning(T0* a1){
T6 R=0;
/*[IF*/
if(r7is_equal(ms18_707328903,a1)){
R=1;
/*[IRF3.3set_no_warning*/((((T82*)((T82*)(oBC19eh))))->_no_warning)=(1);
/*]*/
}
/*FI]*/
return R;
}
T0*oBC131buffer=NULL;


void r131fill_up(T131* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_cecil_files/*0*/))!=((void*)(NULL))){
_i=(/*RF2*/((T489*)((/*RF2*/(C)->_cecil_files/*0*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r488parse((T488*)(/*(IRF4.6item*/((/*RF2*/((T489*)((/*RF2*/(C)->_cecil_files/*0*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
}
/*FI]*/
}


void r131c_define_for(T0* a1,T0* a2){
T0* _rfargs=NULL;
T0* _rfrt=NULL;
T0* _rfct=NULL;
_rfct=/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)a2))->_current_type/*8*/);
_rfrt=X96result_type(a2);
_rfargs=X96arguments(a2);
r131echo_for(a2);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC131buffer))))->_count)=(0);
/*]*/
/*[IF*/
if((_rfrt)!=((void*)(NULL))){
X62c_type_for_external_in(_rfrt,oBC131buffer);
}
else{
r7append((T7*)(oBC131buffer),((T0*)ms20_18150));
}
/*FI]*/
r7extend((T7*)(oBC131buffer),((T3)'\40'));
r7append((T7*)(oBC131buffer),a1);
r7extend((T7*)(oBC131buffer),((T3)'\50'));
X62c_type_for_external_in(_rfct,oBC131buffer);
r7extend((T7*)(oBC131buffer),((T3)'\40'));
r7extend((T7*)(oBC131buffer),((T3)'C'));
/*[IF*/
if((_rfargs)!=((void*)(NULL))){
r7extend((T7*)(oBC131buffer),((T3)'\54'));
r121external_prototype_in(((T121*)_rfargs),oBC131buffer);
}
/*FI]*/
r7extend((T7*)(oBC131buffer),((T3)'\51'));
r83put_c_heading((T83*)(oBC19cpp),oBC131buffer);
/*[IRF3.3swap_on_c*/((((T83*)((T83*)(oBC19cpp))))->_current_out)=(oBC83out_c);
/*]*/
r131define_body_of(a2);
}


void r131add_file(T131* C,T0* a1){
T0* _cecil_file=NULL;
{T488*n=((T488*)se_malloc(sizeof(*n))/*12*/);
*n=M488;
/*[IRF3.3make*/((((T488*)(n)))->_path)=(a1);
/*]*/
_cecil_file=((T0*)n);
}
/*[IF*/
if(((/*RF2*/(C)->_cecil_files/*0*/))==((void*)(NULL))){
{T489*n=((T489*)se_malloc(sizeof(*n))/*12*/);
*n=M489;
r489with_capacity(n,4);
(/*SFN*/C->_cecil_files)=((T0*)n);
}
}
/*FI]*/
r489add_last((T489*)((/*RF2*/(C)->_cecil_files/*0*/)),_cecil_file);
}


void r131afd_check(T131* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_cecil_files/*0*/))!=((void*)(NULL))){
_i=(/*RF2*/((T489*)((/*RF2*/(C)->_cecil_files/*0*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r488afd_check((T488*)(/*(IRF4.6item*/((/*RF2*/((T489*)((/*RF2*/(C)->_cecil_files/*0*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
}
/*FI]*/
}


void r131echo_for(T0* a1){
/*[IF*/
if((/*RF2*/((T38*)(oBC19echo))->_verbose/*0*/)){
r38put_character((T38*)(oBC19echo),((T3)'\11'));
r38put_string((T38*)(oBC19echo),X62run_time_mark(/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)a1))->_current_type/*8*/)));
r38put_character((T38*)(oBC19echo),((T3)'\56'));
r38put_string((T38*)(oBC19echo),X117to_string(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)a1))->_name/*16*/)));
r38put_character((T38*)(oBC19echo),((T3)'\n'));
}
/*FI]*/
}


void r131define_body_of(T0* a1){
T0* _running=NULL;
T0* _cecil_arg_list=NULL;
T0* _cecil_target=NULL;
T0* _rfrt=NULL;
T0* _rfct=NULL;
_rfct=/*SSWARF2*//*X96current_type*/(/*RF2*/(((T154*)a1))->_current_type/*8*/);
_rfrt=X96result_type(a1);
_running=(/*RF2*/((T60*)(X62run_class(_rfct)))->_running/*21*/);
/*[IF*/
if((_running)==((void*)(NULL))){
r82add_type(_rfct,((T0*)ms131_377819028));
/*[IRF3.6append*/{T0* b1=((T0*)ms131_1368666474);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X62run_time_mark(_rfct);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=X117to_key(/*SSWARF2*//*X96name*/(/*RF2*/(((T154*)a1))->_name/*16*/));
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6extend*/{T3 b1=((T3)'\56');
r7extend((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}
else{
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms131_241077355));
/*]*/
}
/*FI]*/
/*[IF*/
if((_rfrt)!=((void*)(NULL))){
/*[IRF3.3clear*/((((T7*)((T7*)(oBC131buffer))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC131buffer),((T3)'\173'));
X62c_type_for_external_in(_rfrt,oBC131buffer);
r7append((T7*)(oBC131buffer),((T0*)ms131_1271));
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),oBC131buffer);
/*]*/
}
/*FI]*/
{T495*n=((T495*)se_malloc(sizeof(*n))/*8*/);
*n=M495;
/*[IRF3.3make*/((((T495*)(n)))->_run_feature)=(a1);
/*]*/
_cecil_target=((T0*)n);
}
/*[IF*/
if((X96arguments(a1))!=((void*)(NULL))){
{T494*n=((T494*)se_malloc(sizeof(*n))/*16*/);
*n=M494;
r494run_feature(n,a1);
_cecil_arg_list=((T0*)n);
}
}
/*FI]*/
/*[IF*/
if(X62is_expanded(_rfct)){
r83push_direct((T83*)(oBC19cpp),a1,_cecil_target,_cecil_arg_list);
X96mapping_c(a1);
r83pop((T83*)(oBC19cpp));
}
else{
r83push_cpc((T83*)(oBC19cpp),a1,_running,_cecil_target,_cecil_arg_list);
}
/*FI]*/
/*[IF*/
if((_rfrt)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_305));
/*]*/
}
/*FI]*/
/*[IF*/
if(r57no_check((T57*)(oBC19run_control))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms131_1172474923));
/*]*/
}
/*FI]*/
/*[IF*/
if((_rfrt)!=((void*)(NULL))){
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms131_1754150081));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IRF3.5put_string*/r58put_string(((T58*)((/*RF2*/((T83*)(oBC19cpp))->_current_out/*63*/))),((T0*)ms20_635));
/*]*/
}


void r131c_define_users(T131* C){
T2 _i=0;
/*[IF*/
if(((/*RF2*/(C)->_cecil_files/*0*/))!=((void*)(NULL))){
_i=(/*RF2*/((T489*)((/*RF2*/(C)->_cecil_files/*0*/)))->_upper/*8*/);
while (!((_i)<(0)))
{
r488c_define_users((T488*)(/*(IRF4.6item*/((/*RF2*/((T489*)((/*RF2*/(C)->_cecil_files/*0*/)))->_storage/*0*/))[_i]/*)*/));
_i=(_i)-(1);
}
}
/*FI]*/
}


T0* r292to_deferred_routine(T292* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T382*n=((T382*)se_malloc(sizeof(*n))/*40*/);
*n=M382;
/*[IRF3.6make*/{T382* C1=n;
T0* b1=r292n();
T0* b2=(/*RF2*/(*C)._arguments/*0*/);
T0* b3=(/*RF2*/(*C)._obsolete_mark/*12*/);
T0* b4=(/*RF2*/(*C)._header_comment/*8*/);
T0* b5=(/*RF2*/(*C)._require_assertion/*16*/);
r382make_routine(C1,b1,b2,b3,b4,b5);
}/*]*/
R=((T0*)n);
}
}
else{
{T384*n=((T384*)se_malloc(sizeof(*n))/*44*/);
*n=M384;
r384make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._type/*4*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/));
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r292add_synonym(T0* a1){
/*[IF*/
if((X117to_string(a1))==((void*)(((T0*)ms21_14150)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(a1),&se_tmp0)));
}
r292fatal_error(((T0*)ms292_900887704));
}
/*FI]*/
r175add_last((T175*)(oBC292names),a1);
}


T0* r292to_external_routine(T292* C,T0* a1,T0* a2){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T116*n=((T116*)se_malloc(sizeof(*n))/*48*/);
*n=M116;
r116make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/),a1,a2);
R=((T0*)n);
}
}
else{
{T119*n=((T119*)se_malloc(sizeof(*n))/*52*/);
*n=M119;
r119make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._type/*4*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/),a1,a2);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r292to_cst_att_unique(T292* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(/*(IRF4.6first*/((/*RF2*/((T175*)(oBC292names))->_storage/*0*/))[0]/*)*/),&se_tmp0)));
}
r292fatal_error(((T0*)ms292_789877170));
}
 else if(X62is_integer((/*RF2*/(*C)._type/*4*/))){
{T293*n=((T293*)se_malloc(sizeof(*n))/*28*/);
*n=M293;
r293make(n,r292n(),(/*RF2*/(*C)._type/*4*/));
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)));
}
r292fatal_error(((T0*)ms292_789877170));
}
/*FI]*/
return R;
}


void r292error(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}


T0* r292to_writable_attribute(T292* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T104 se_tmp0;
r292error((*(se_tmp0=X117start_position(/*(IRF4.6first*/((/*RF2*/((T175*)(oBC292names))->_storage/*0*/))[0]/*)*/),&se_tmp0)),((T0*)ms292_1845353597));
}
}
 else if(((/*RF2*/(*C)._arguments/*0*/))!=((void*)(NULL))){
/*[IRF3.6ecp*/{T37* C1=(T37*)(oBC19eiffel_parser);
T0* b1=((T0*)ms292_539917548);
{T104 se_tmp0;
r37error((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
{T153*n=((T153*)se_malloc(sizeof(*n))/*24*/);
*n=M153;
r153make(n,r292n(),(/*RF2*/(*C)._type/*4*/));
R=((T0*)n);
}
return R;
}
T0*oBC292names=NULL;


void r292fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


T0* r292to_cst_att_character(T292* C,T0* a1){
T0* R=NULL;
r292to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_character((/*RF2*/(*C)._type/*4*/))){
{T300*n=((T300*)se_malloc(sizeof(*n))/*28*/);
*n=M300;
r300make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r292error((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)),((T0*)ms292_1573210512));
}
}
/*FI]*/
return R;
}


T0* r292to_cst_att_boolean(T292* C,T0* a1){
T0* R=NULL;
r292to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_boolean((/*RF2*/(*C)._type/*4*/))){
{T299*n=((T299*)se_malloc(sizeof(*n))/*28*/);
*n=M299;
r299make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r292error((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)),((T0*)ms292_1952642401));
}
}
/*FI]*/
return R;
}


T0* r292n(void){
T0* R=NULL;
{T118*n=((T118*)se_malloc(sizeof(*n))/*8*/);
*n=M118;
r118make_n(n,oBC292names);
R=((T0*)n);
}
return R;
}


T0* r292to_cst_att_bit(T292* C,T0* a1){
T0* R=NULL;
r292to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_bit((/*RF2*/(*C)._type/*4*/))){
{T306*n=((T306*)se_malloc(sizeof(*n))/*28*/);
*n=M306;
r306make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r292error((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)),((T0*)ms292_2044092858));
}
}
/*FI]*/
return R;
}


void r292to_cst_att_check_result_type(T292* C){
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X117start_position(/*(IRF4.6first*/((/*RF2*/((T175*)(oBC292names))->_storage/*0*/))[0]/*)*/),&se_tmp0)));
}
r292fatal_error(((T0*)ms292_1775768883));
}
 else if(!(X62is_run_type((/*RF2*/(*C)._type/*4*/)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)));
}
r292fatal_error(((T0*)ms292_1141945772));
}
/*FI]*/
}


T0* r292to_procedure_or_function(T292* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T150*n=((T150*)se_malloc(sizeof(*n))/*56*/);
*n=M150;
r150make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/),(/*RF2*/(*C)._local_vars/*20*/),(/*RF2*/(*C)._routine_body/*24*/));
R=((T0*)n);
}
}
else{
{T393*n=((T393*)se_malloc(sizeof(*n))/*60*/);
*n=M393;
r393make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._type/*4*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/),(/*RF2*/(*C)._local_vars/*20*/),(/*RF2*/(*C)._routine_body/*24*/));
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r292to_cst_att_string(T292* C,T0* a1){
T0* R=NULL;
r292to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_string((/*RF2*/(*C)._type/*4*/))){
{T301*n=((T301*)se_malloc(sizeof(*n))/*32*/);
*n=M301;
r301make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r292error((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)),((T0*)ms292_2108232434));
}
}
/*FI]*/
return R;
}


T0* r292to_once_routine(T292* C){
T0* R=NULL;
/*[IF*/
if(((/*RF2*/(*C)._type/*4*/))==((void*)(NULL))){
{T395*n=((T395*)se_malloc(sizeof(*n))/*56*/);
*n=M395;
r395make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/),(/*RF2*/(*C)._local_vars/*20*/),(/*RF2*/(*C)._routine_body/*24*/));
R=((T0*)n);
}
}
else{
{T396*n=((T396*)se_malloc(sizeof(*n))/*60*/);
*n=M396;
r396make(n,r292n(),(/*RF2*/(*C)._arguments/*0*/),(/*RF2*/(*C)._type/*4*/),(/*RF2*/(*C)._obsolete_mark/*12*/),(/*RF2*/(*C)._header_comment/*8*/),(/*RF2*/(*C)._require_assertion/*16*/),(/*RF2*/(*C)._local_vars/*20*/),(/*RF2*/(*C)._routine_body/*24*/));
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r292initialize(T292* C){
/*[IRF3.3clear*/((((T175*)((T175*)(oBC292names))))->_upper)=(-(1));
/*]*/
(/*SFN*/C->_arguments)=NULL;
(/*SFN*/C->_type)=NULL;
(/*SFN*/C->_header_comment)=NULL;
(/*SFN*/C->_obsolete_mark)=NULL;
(/*SFN*/C->_require_assertion)=NULL;
(/*SFN*/C->_local_vars)=NULL;
(/*SFN*/C->_routine_body)=NULL;
}


void r292set_require_else(T292* C,T104 a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T383*n=((T383*)se_malloc(sizeof(*n))/*25*/);
*n=M383;
r383make(n,a1,a2,a3);
(/*SFN*/C->_require_assertion)=((T0*)n);
}
/*[IRF3.3set_require_else*/((((T383*)((T383*)((/*RF2*/(*C)._require_assertion/*16*/)))))->_is_require_else)=(1);
/*]*/
}
/*FI]*/
}


void r292set_require(T292* C,T104 a1,T0* a2,T0* a3){
/*[IF*/
if(((a2)!=((void*)(NULL)))||((a3)!=((void*)(NULL)))){
{T383*n=((T383*)se_malloc(sizeof(*n))/*25*/);
*n=M383;
r383make(n,a1,a2,a3);
(/*SFN*/C->_require_assertion)=((T0*)n);
}
}
/*FI]*/
}


T0* r292to_cst_att_integer(T292* C,T0* a1){
T0* R=NULL;
r292to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_integer((/*RF2*/(*C)._type/*4*/))){
{T140*n=((T140*)se_malloc(sizeof(*n))/*28*/);
*n=M140;
r140make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
 else if(X62is_real((/*RF2*/(*C)._type/*4*/))){
{T307*n=((T307*)se_malloc(sizeof(*n))/*28*/);
*n=M307;
r307make(n,r292n(),(/*RF2*/(*C)._type/*4*/),r265to_real_constant(((T265*)a1)));
R=((T0*)n);
}
}
 else if(X62is_double((/*RF2*/(*C)._type/*4*/))){
{T308*n=((T308*)se_malloc(sizeof(*n))/*28*/);
*n=M308;
r308make(n,r292n(),(/*RF2*/(*C)._type/*4*/),r265to_real_constant(((T265*)a1)));
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r292error((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)),((T0*)ms292_324521195));
}
}
/*FI]*/
return R;
}


T0* r292to_cst_att_real(T292* C,T0* a1){
T0* R=NULL;
r292to_cst_att_check_result_type(C);
/*[IF*/
if(X62is_real((/*RF2*/(*C)._type/*4*/))){
{T307*n=((T307*)se_malloc(sizeof(*n))/*28*/);
*n=M307;
r307make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
 else if(X62is_double((/*RF2*/(*C)._type/*4*/))){
{T308*n=((T308*)se_malloc(sizeof(*n))/*28*/);
*n=M308;
r308make(n,r292n(),(/*RF2*/(*C)._type/*4*/),a1);
R=((T0*)n);
}
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=X62start_position((/*RF2*/(*C)._type/*4*/)),&se_tmp0)));
}
r292fatal_error(((T0*)ms292_1369508129));
}
/*FI]*/
return R;
}


T0* r37a_routine(T37* C){
T0* R=NULL;
T0* _ea=NULL;
T0* _al=NULL;
T0* _hc=NULL;
T104 _sp={NULL,0};
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_10648581))){
/*[IF*/
if(r37a_manifest_string(C)){
{T292 se_tmp0;
/*[IRF3.3set_obsolete_mark*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_obsolete_mark)=((/*RF2*/(C)->_last_manifest_string/*116*/));
/*]*/
}
}
else{
r37fcp(C,((T0*)ms37_1208507031));
}
/*FI]*/
}
/*FI]*/
{T292 se_tmp0;
/*[IRF3.3set_header_comment*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_header_comment)=(r37get_comment(C));
/*]*/
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_2185421))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16001))){
_hc=r37get_comment(C);
{T292 se_tmp0;
r292set_require_else(&((/*RF2*/(C)->_tmp_feature/*157*/)),_sp,_hc,r37a_assertion(C));
}
}
else{
_hc=r37get_comment(C);
{T292 se_tmp0;
r292set_require(&((/*RF2*/(C)->_tmp_feature/*157*/)),_sp,_hc,r37a_assertion(C));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_84443))){
r37a_local_var_list(C);
}
/*FI]*/
R=r37a_routine_body(C);
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_402346))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
(/*SFN*/C->_in_ensure)=1;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_17715))){
_hc=r37get_comment(C);
_al=r37a_assertion(C);
/*[IF*/
if(((_hc)!=((void*)(NULL)))||((_al)!=((void*)(NULL)))){
{T309*n=((T309*)se_malloc(sizeof(*n))/*25*/);
*n=M309;
r309make(n,_sp,_hc,_al);
_ea=((T0*)n);
}
/*[IRF3.3set_ensure_then*/((((T309*)(((T309*)_ea))))->_is_ensure_then)=(1);
/*]*/
}
/*FI]*/
X98set_ensure_assertion(R,_ea);
}
else{
_hc=r37get_comment(C);
_al=r37a_assertion(C);
/*[IF*/
if(((_hc)!=((void*)(NULL)))||((_al)!=((void*)(NULL)))){
{T309*n=((T309*)se_malloc(sizeof(*n))/*25*/);
*n=M309;
r309make(n,_sp,_hc,_al);
_ea=((T0*)n);
}
}
/*FI]*/
X98set_ensure_assertion(R,_ea);
}
/*FI]*/
(/*SFN*/C->_in_ensure)=0;
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_436911))){
(/*SFN*/C->_in_rescue)=1;
X98set_rescue_compound(R,r37a_compound2(C,((T0*)ms20_436911),((T0*)ms20_3175)));
(/*SFN*/C->_in_rescue)=0;
}
 else if(!(r37a_keyword(C,((T0*)ms20_3175)))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1275558331);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
(/*SFN*/C->_local_vars)=NULL;
return R;
}


void r37a_after_a_dot(T37* C,T6 a1,T0* a2){
T0* _eal=NULL;
T0* _sfn=NULL;
/*[IF*/
if(r37a_identifier(C)){
/*[IF*/
if(((r37a_result(C))||(r37a_void(C)))||(r37a_current(C))){
{T104 se_tmp0;
r37error((*(se_tmp0=X126start_position((/*RF2*/(C)->_last_expression/*72*/)),&se_tmp0)),((T0*)ms37_400716256));
}
}
/*FI]*/
{T211 se_tmp0;
_sfn=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
_eal=r37a_actuals(C);
r37a_r10(C,a1,a2,_sfn,_eal);
}
else{
r37fcp(C,((T0*)ms37_1532919189));
}
/*FI]*/
}


T6 r37a_current(T37* C){
T6 R=0;
{T211 se_tmp0;
/*[IF*/
if(r211is_current()){
{T211 se_tmp2;
T104 se_tmp1;
T211 se_tmp0;
{T253*n=((T253*)se_malloc(sizeof(*n))/*16*/);
*n=M253;
/*[IRF3.3make*/((((T253*)(n)))->_start_position)=((/*RF2*/((/*RF2*/(C)->_tmp_name/*24*/))._start_position/*0*/));
/*]*/
(/*SFN*/C->_last_expression)=((T0*)n);
}
}
{T211 se_tmp2;
T104 se_tmp1;
T211 se_tmp0;
R=1;
}
}
/*FI]*/
}
return R;
}


void r37a_assignment_aux(T37* C,T6 a1){
T0* _rhs=NULL;
T0* _writable=NULL;
/*[IF*/
if(r37a_current(C)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_last_expression/*72*/)),&se_tmp0)));
}
r37fatal_error(((T0*)ms37_1978896036));
}
 else if(r37a_void(C)){
{T211 se_tmp1;
T104 se_tmp0;
r82add_position((/*RF2*/((/*RF2*/(C)->_tmp_name/*24*/))._start_position/*0*/));
}
r37fatal_error(((T0*)ms37_256295585));
}
 else if(r37a_argument(C)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_last_expression/*72*/)),&se_tmp0)));
}
r37fatal_error(((T0*)ms37_377533302));
}
else{
{T211 se_tmp0;
/*[IF*/
if(r211is_result()){
{T211 se_tmp0;
_writable=r37last_result(C);
}
}
 else if(r37a_local_variable(C)){
{T211 se_tmp0;
_writable=(/*RF2*/(C)->_last_expression/*72*/);
}
}
else{
{T211 se_tmp1;
T211 se_tmp0;
_writable=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
}
/*FI]*/
}
/*[IF*/
if(r37a_expression(C)){
_rhs=(/*RF2*/(C)->_last_expression/*72*/);
/*[IF*/
if(a1){
{T379*n=((T379*)se_malloc(sizeof(*n))/*12*/);
*n=M379;
r379make(n,_writable,_rhs);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
else{
{T380*n=((T380*)se_malloc(sizeof(*n))/*16*/);
*n=M380;
r380make(n,_writable,_rhs);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_273016233));
}
/*FI]*/
}
/*FI]*/
}


T6 r37a_then_part(T37* C,T0* a1){
T6 R=0;
T0* _expression=NULL;
/*[IF*/
if(r37a_expression(C)){
R=1;
_expression=X126add_comment((/*RF2*/(C)->_last_expression/*72*/),r37get_comment(C));
/*[IF*/
if(!(r37a_keyword(C,((T0*)ms20_17715)))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_493481611);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
r313add_if_then(((T313*)a1),_expression,r37a_compound1(C));
}
/*FI]*/
return R;
}


void r37show_nb(T2 a1,T0* a2){
/*[IF*/
if((a1)>(0)){
r38w_put_string(((T0*)ms20_820292));
r38w_put_integer(a1);
r38w_put_string(a2);
}
/*FI]*/
}


T104 r37current_position(T37* C){
T104 R={NULL,0};
{T104 se_tmp0;
R=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_line/*148*/),(/*RF2*/(C)->_column/*144*/)),&se_tmp0));
}
return R;
}


void r37warning(T104 a1,T0* a2){
r82add_position(a1);
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
}


T0* r37a_compound1(T37* C){
T0* R=NULL;
T0* _remainder=NULL;
T0* _first_one=NULL;
T0* _instruction=NULL;
T0* _hc=NULL;
_hc=r37get_comment(C);
while (!(((/*RF2*/(C)->_cc/*156*/))!=(((T3)'\73'))))
{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
while (!((!(r37a_instruction(C)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_instruction=(/*RF2*/(C)->_last_instruction/*104*/);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\50'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_175744691);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
while (!(((/*RF2*/(C)->_cc/*156*/))!=(((T3)'\73'))))
{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
_instruction=X160add_comment(_instruction,r37get_comment(C));
/*[IF*/
if((_first_one)==((void*)(NULL))){
_first_one=_instruction;
}
else{
/*[IF*/
if((_remainder)==((void*)(NULL))){
{T161*n=((T161*)se_malloc(sizeof(*n))/*12*/);
*n=M161;
r161with_capacity(n,4);
_remainder=((T0*)n);
}
}
/*FI]*/
r161add_last(((T161*)_remainder),_instruction);
}
/*FI]*/
}
/*FI]*/
}
/*[IF*/
if(((_hc)!=((void*)(NULL)))||((_first_one)!=((void*)(NULL)))){
{T159*n=((T159*)se_malloc(sizeof(*n))/*16*/);
*n=M159;
r159make(n,_hc,_first_one,_remainder);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r37a_compound2(T37* C,T0* a1,T0* a2){
T0* R=NULL;
T0* _remainder=NULL;
T0* _first_one=NULL;
T0* _instruction=NULL;
T0* _hc=NULL;
_hc=r37get_comment(C);
while (!(((/*RF2*/(C)->_cc/*156*/))!=(((T3)'\73'))))
{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
while (!((!(r37a_instruction(C)))||((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0))))
{
_instruction=(/*RF2*/(C)->_last_instruction/*104*/);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\50'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_175744691);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
while (!(((/*RF2*/(C)->_cc/*156*/))!=(((T3)'\73'))))
{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)==(0)){
_instruction=X160add_comment(_instruction,r37get_comment(C));
/*[IF*/
if((_first_one)==((void*)(NULL))){
_first_one=_instruction;
}
else{
/*[IF*/
if((_remainder)==((void*)(NULL))){
{T161*n=((T161*)se_malloc(sizeof(*n))/*12*/);
*n=M161;
r161with_capacity(n,4);
_remainder=((T0*)n);
}
}
/*FI]*/
r161add_last(((T161*)_remainder),_instruction);
}
/*FI]*/
}
/*FI]*/
}
/*[IF*/
if(!(r37a_keyword(C,a2))){
/*[IRF3.6append*/{T0* b1=((T0*)ms37_2016523575);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms37_1296817101);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r37fcp(C,((T0*)ms37_445504446a));
}
/*FI]*/
/*[IF*/
if(((_hc)!=((void*)(NULL)))||((_first_one)!=((void*)(NULL)))){
{T159*n=((T159*)se_malloc(sizeof(*n))/*16*/);
*n=M159;
r159make(n,_hc,_first_one,_remainder);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


void r37a_formal_arg_list(T37* C){
T2 _state=0;
T0* _list=NULL;
T0* _declaration=NULL;
T0* _name_list=NULL;
T0* _name=NULL;
(/*SFN*/C->_arguments)=NULL;
/*[IF*/
if(r37skip1(C,((T3)'\50'))){
while (!((_state)>(4)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
_name=r211to_argument_name1(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
_state=1;
}
 else if(r37skip1(C,((T3)'\51'))){
_state=5;
}
else{
_state=6;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37skip1(C,((T3)'\72'))){
/*[IF*/
if((_name_list)!=((void*)(NULL))){
r128add_last(((T128*)_name_list),_name);
_name=NULL;
}
/*FI]*/
_state=3;
}
else{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
/*[IF*/
if((_name_list)==((void*)(NULL))){
{T128*n=((T128*)se_malloc(sizeof(*n))/*20*/);
*n=M128;
r128with_capacity(n,2,1);
_name_list=((T0*)n);
}
}
/*FI]*/
r128add_last(((T128*)_name_list),_name);
_name=NULL;
_state=2;
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
_name=r211to_argument_name1(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
_state=1;
}
 else if((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73')))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_372047073);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=(r37skip1(C,((T3)'\54')))||(r37skip1(C,((T3)'\73')));
}
else{
_state=6;
}
/*FI]*/
break;
case 3:
/*[IF*/
if(r37a_type(C)){
/*[IF*/
if((_name_list)!=((void*)(NULL))){
{T403*n=((T403*)se_malloc(sizeof(*n))/*8*/);
*n=M403;
r403make(n,_name_list,(/*RF2*/(C)->_last_type/*128*/));
_declaration=((T0*)n);
}
_name_list=NULL;
}
else{
{T407*n=((T407*)se_malloc(sizeof(*n))/*8*/);
*n=M407;
r407make(n,_name,(/*RF2*/(C)->_last_type/*128*/));
_declaration=((T0*)n);
}
_name=NULL;
}
/*FI]*/
/*[IF*/
if((_list)==((void*)(NULL))){
{T398*n=((T398*)se_malloc(sizeof(*n))/*20*/);
*n=M398;
r398with_capacity(n,2,1);
_list=((T0*)n);
}
}
/*FI]*/
X398add_last(_list,_declaration);
_declaration=NULL;
_state=4;
}
else{
_state=6;
}
/*FI]*/
break;
default:;
/*[IF*/
if(r37skip1(C,((T3)'\51'))){
_state=5;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_2047202317a);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
_state=0;
}
else{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
_state=0;
}
/*FI]*/
}
}/*INSPECT]*/
}
/*[IF*/
if((_state)==(6)){
r37fcp(C,((T0*)ms37_1301660112));
}
 else if((_list)==((void*)(NULL))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_2141291014);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
else{
{T121*n=((T121*)se_malloc(sizeof(*n))/*12*/);
*n=M121;
r121make(n,_list);
(/*SFN*/C->_arguments)=((T0*)n);
}
{T292 se_tmp0;
/*[IRF3.3set_arguments*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_arguments)=((/*RF2*/(C)->_arguments/*15*/));
/*]*/
}
}
/*FI]*/
}
/*FI]*/
}


T6 r37a_real_constant(T37* C){
T6 R=0;
T2 _c=0;
T2 _l=0;
_l=(/*RF2*/(C)->_line/*148*/);
_c=(/*RF2*/(C)->_column/*144*/);
/*[IF*/
if(r37skip1(C,((T3)'\53'))){
/*[IF*/
if(r37a_real(C)){
R=1;
}
else{
r37go_back_at(C,_l,_c);
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\55'))){
/*[IF*/
if(r37a_real(C)){
/*[IRF3.5unary_minus*/r7add_first(((T7*)((/*RF2*/((T264*)((/*RF2*/(C)->_last_real_constant/*124*/)))->_to_string/*12*/))),((T3)'\55'));
/*]*/
R=1;
}
else{
r37go_back_at(C,_l,_c);
}
/*FI]*/
}
 else if(r37a_real(C)){
R=1;
}
/*FI]*/
return R;
}


T6 r37a_tag_mark(T37* C){
T6 R=0;
T2 _c=0;
T2 _l=0;
_l=(/*RF2*/(C)->_line/*148*/);
_c=(/*RF2*/(C)->_column/*144*/);
/*[IF*/
if(r37a_identifier(C)){
/*[IF*/
if(r37skip1(C,((T3)'\72'))){
R=1;
{T211 se_tmp0;
(/*SFN*/C->_last_tag_mark)=r211to_tag_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
}
else{
r37go_back_at(C,_l,_c);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_instruction(T37* C){
T6 R=0;
R=1;
/*[IF*/
if(r37a_check(C)){
}
 else if(r37a_debug(C)){
}
 else if(r37a_conditional(C)){
}
 else if(r37a_retry(C)){
}
 else if(r37a_inspect(C)){
}
 else if(r37a_loop(C)){
}
 else if(r37a_create_instruction(C)){
}
 else if(r37a_assignment_or_call(C)){
}
 else if(r37a_creation(C)){
}
else{
R=0;
}
/*FI]*/
return R;
}


void r37fcp(T37* C,T0* a1){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r37current_position(C),&se_tmp0)));
}
r37fatal_error(a1);
}


void r37go_back_at(T37* C,T2 a1,T2 a2){
(/*SFN*/C->_line)=a1;
(/*SFN*/C->_column)=a2;
(/*SFN*/C->_current_line)=r178item(a1);
(/*SFN*/C->_cc)=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[(a2)-(1)]/*)*/;
(/*SFN*/C->_last_comment)=NULL;
}


void r37fatal_error(T0* a1){
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}


void r37a_function_call(T37* C){
T0* _implicit_current=NULL;
T0* _sfn=NULL;
{T211 se_tmp0;
_sfn=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
{T104 se_tmp0;
{T169*n=((T169*)se_malloc(sizeof(*n))/*16*/);
*n=M169;
/*[IRF3.3make*/((((T169*)(n)))->_start_position)=((/*RF2*/(((T143*)_sfn))->_start_position/*4*/));
/*]*/
_implicit_current=((T0*)n);
}
}
r37a_r10(C,0,_implicit_current,_sfn,r37a_actuals(C));
}


T0* r37a_routine_body(T37* C){
T0* R=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_9790205))){
r61set_is_deferred((T61*)((/*RF2*/(C)->_last_base_class/*40*/)));
{T292 se_tmp0;
R=r292to_deferred_routine(&((/*RF2*/(C)->_tmp_feature/*157*/)));
}
}
 else if(r37a_keyword(C,((T0*)ms20_10208843))){
R=r37a_external(C);
}
 else if(r37a_keyword(C,((T0*)ms20_611))){
{T292 se_tmp0;
/*[IRF3.3set_routine_body*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_routine_body)=(r37a_compound1(C));
/*]*/
}
{T292 se_tmp0;
R=r292to_procedure_or_function(&((/*RF2*/(C)->_tmp_feature/*157*/)));
}
}
 else if(r37a_keyword(C,((T0*)ms20_17221))){
(/*SFN*/C->_inside_once_function)=1;
{T292 se_tmp0;
/*[IRF3.3set_routine_body*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_routine_body)=(r37a_compound1(C));
/*]*/
}
{T292 se_tmp0;
R=r292to_once_routine(&((/*RF2*/(C)->_tmp_feature/*157*/)));
}
}
else{
r37fcp(C,((T0*)ms37_1910692676));
}
/*FI]*/
return R;
}


T6 r37a_result(T37* C){
T6 R=0;
{T211 se_tmp0;
/*[IF*/
if(r211is_result()){
{T211 se_tmp0;
(/*SFN*/C->_last_expression)=r37last_result(C);
}
{T211 se_tmp0;
R=1;
}
}
/*FI]*/
}
return R;
}


T0* r37a_assertion(T37* C){
T0* R=NULL;
T2 _state=0;
T0* _assertion=NULL;
T0* _expression=NULL;
T0* _tag=NULL;
r204clear((T204*)(oBC37a_assertion_buffer));
while (!((_state)>(3)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
 else if(((/*RF2*/(C)->_last_comment/*3*/))!=((void*)(NULL))){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,NULL,NULL,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
}
 else if(r37a_tag_mark(C)){
_tag=(/*RF2*/(C)->_last_tag_mark/*132*/);
_state=1;
}
 else if(r37a_expression(C)){
_expression=(/*RF2*/(C)->_last_expression/*72*/);
_state=2;
}
else{
_state=4;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37skip1(C,((T3)'\73'))){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,NULL,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_state=0;
}
 else if(r37a_tag_mark(C)){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,NULL,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_tag=(/*RF2*/(C)->_last_tag_mark/*132*/);
}
 else if(r37a_expression(C)){
_expression=(/*RF2*/(C)->_last_expression/*72*/);
_state=3;
}
else{
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,NULL,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_state=4;
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r37skip1(C,((T3)'\73'))){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,NULL,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_state=0;
}
 else if(r37a_tag_mark(C)){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,NULL,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_tag=(/*RF2*/(C)->_last_tag_mark/*132*/);
_state=1;
}
 else if(r37a_expression(C)){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,NULL,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_expression=(/*RF2*/(C)->_last_expression/*72*/);
_state=2;
}
else{
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,NULL,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_state=4;
}
/*FI]*/
break;
default:;
/*[IF*/
if(r37skip1(C,((T3)'\73'))){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_state=0;
}
 else if(r37a_tag_mark(C)){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_tag=(/*RF2*/(C)->_last_tag_mark/*132*/);
_state=1;
}
 else if(r37a_expression(C)){
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_expression=(/*RF2*/(C)->_last_expression/*72*/);
_state=2;
}
else{
{T203*n=((T203*)se_malloc(sizeof(*n))/*16*/);
*n=M203;
r203make(n,_tag,_expression,r37get_comment(C));
_assertion=((T0*)n);
}
r204add_last((T204*)(oBC37a_assertion_buffer),_assertion);
_state=4;
}
/*FI]*/
}
}/*INSPECT]*/
}
/*[IF*/
if(!(r204is_empty((T204*)(oBC37a_assertion_buffer)))){
R=r204twin((T204*)(oBC37a_assertion_buffer));
}
/*FI]*/
return R;
}
T0*oBC37buffer=NULL;


void r37a_feature_clause(T37* C){
T0* _comment=NULL;
T0* _clients=NULL;
T0* _feature_clause=NULL;
_clients=r37a_clients(C);
_comment=r37get_comment(C);
/*SSPRF3*//*X199clear*//*[IRF3.3clear*/((((T100*)((T100*)(oBC37faof))))->_upper)=(-(1));
/*]*/
while (!(!(r37a_feature_declaration(C))))
{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
/*[IF*/
if(((/*RF2*/(C)->_last_feature_declaration/*76*/))!=((void*)(NULL))){
X199add_last(oBC37faof,(/*RF2*/(C)->_last_feature_declaration/*76*/));
X99set_header_comment((/*RF2*/(C)->_last_feature_declaration/*76*/),r37get_comment(C));
}
/*FI]*/
}
/*[IF*/
if(!(/*SSFRF4*//*X199is_empty*//*(IRF4.6is_empty*/((/*RF2*/((T100*)(oBC37faof))->_upper/*12*/))<(0)/*)*/)){
{T195*n=((T195*)se_malloc(sizeof(*n))/*12*/);
*n=M195;
r195make(n,_clients,_comment,X199twin(oBC37faof));
_feature_clause=((T0*)n);
}
r61add_feature_clause((T61*)((/*RF2*/(C)->_last_base_class/*40*/)),_feature_clause);
}
 else if((_comment)!=((void*)(NULL))){
{T195*n=((T195*)se_malloc(sizeof(*n))/*12*/);
*n=M195;
r195make(n,_clients,_comment,NULL);
_feature_clause=((T0*)n);
}
r61add_feature_clause((T61*)((/*RF2*/(C)->_last_base_class/*40*/)),_feature_clause);
}
/*FI]*/
}


T6 r37a_index_clause(T37* C){
T6 R=0;
T0* _index_clause=NULL;
/*[IF*/
if(r37a_identifier(C)){
R=1;
/*[IF*/
if(r37skip1(C,((T3)'\72'))){
{T211 se_tmp0;
{T420*n=((T420*)se_malloc(sizeof(*n))/*8*/);
*n=M420;
/*[IRF3.3with_tag*/((((T420*)(n)))->_tag)=(r211aliased_string(&((/*RF2*/(C)->_tmp_name/*24*/))));
/*]*/
_index_clause=((T0*)n);
}
}
/*[IF*/
if(r37a_index_value(C)){
r420add_last(((T420*)_index_clause),(/*RF2*/(C)->_last_index_value/*108*/));
}
else{
r37fcp(C,((T0*)ms37_1538234998));
}
/*FI]*/
}
else{
{T211 se_tmp0;
{T420*n=((T420*)se_malloc(sizeof(*n))/*8*/);
*n=M420;
/*[IRF3.6without_tag*/{T420* C1=n;
T0* b1=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
{T211 se_tmp0;
r420add_last(C1,b1);
}
}/*]*/
_index_clause=((T0*)n);
}
}
}
/*FI]*/
}
 else if(r37a_manifest_constant(C)){
R=1;
{T420*n=((T420*)se_malloc(sizeof(*n))/*8*/);
*n=M420;
/*[IRF3.6without_tag*/{T420* C1=n;
T0* b1=(/*RF2*/(C)->_last_manifest_constant/*112*/);
r420add_last(C1,b1);
}/*]*/
_index_clause=((T0*)n);
}
}
/*FI]*/
/*[IF*/
if(R){
while (!(!(r37skip1(C,((T3)'\54')))))
{
/*[IF*/
if(r37a_index_value(C)){
r420add_last(((T420*)_index_clause),(/*RF2*/(C)->_last_index_value/*108*/));
}
else{
r37fcp(C,((T0*)ms37_1538234998));
}
/*FI]*/
}
r61add_index_clause((T61*)((/*RF2*/(C)->_last_base_class/*40*/)),_index_clause);
}
/*FI]*/
return R;
}


void r37a_rename_list(T37* C){
while (!(!(r37a_rename_pair(C))))
{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
}


void r37a_creation_clause(T37* C,T104 a1){
T0* _creation_clause=NULL;
T0* _comments=NULL;
T0* _clients=NULL;
_clients=r37a_clients(C);
_comments=r37get_comment(C);
/*[IF*/
if(r37a_feature_name_list(C)){
}
/*FI]*/
{T180*n=((T180*)se_malloc(sizeof(*n))/*20*/);
*n=M180;
r180make(n,a1,_clients,_comments,(/*RF2*/(C)->_last_feature_name_list/*84*/));
_creation_clause=((T0*)n);
}
r61add_creation_clause((T61*)((/*RF2*/(C)->_last_base_class/*40*/)),_creation_clause);
}


T0* r37a_alias(T37* C){
T0* R=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_77350))){
/*[IF*/
if(!(r37skip1(C,((T3)'\42')))){
r37fcp(C,((T0*)ms37_390809736));
}
/*FI]*/
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,24);
R=((T0*)n);
}
while (!(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\42'))))
{
r7extend(((T7*)R),(/*RF2*/(C)->_cc/*156*/));
r37next_char(C);
}
/*[IF*/
if(!(r37skip1(C,((T3)'\42')))){
r37fcp(C,((T0*)ms37_390809736));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_manifest_string(T37* C){
T6 R=0;
T2 _state=0;
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\42'))){
R=1;
{T104 se_tmp0;
{T262*n=((T262*)se_malloc(sizeof(*n))/*32*/);
*n=M262;
r262make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_line/*148*/),(/*RF2*/(C)->_column/*144*/)),&se_tmp0)));
(/*SFN*/C->_last_manifest_string)=((T0*)n);
}
}
while (!((_state)>(3)))
{
r37next_char(C);
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 10:
r37fcp(C,((T0*)ms37_181806522));
break;
case 34:
_state=4;
break;
case 37:
_state=1;
break;
default:;
/*[IRF3.5add*/r7extend(((T7*)((/*RF2*/((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)))->_to_string/*12*/))),(/*RF2*/(C)->_cc/*156*/));
/*]*/
}
}/*INSPECT]*/
break;
case 1:
_state=0;
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 10:
_state=3;
break;
case 65:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\100'));
break;
case 66:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\10'));
break;
case 67:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\136'));
break;
case 68:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\44'));
break;
case 70:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\14'));
break;
case 72:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\134'));
break;
case 76:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\176'));
break;
case 78:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\n'));
break;
case 81:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\140'));
break;
case 82:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\15'));
break;
case 83:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\43'));
break;
case 84:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\11'));
break;
case 85:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\0'));
break;
case 86:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\174'));
break;
case 37:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\45'));
break;
case 39:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\47'));
break;
case 34:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\42'));
break;
case 40:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\133'));
break;
case 41:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\135'));
break;
case 60:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\173'));
break;
case 62:
r262add_percent((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)'\175'));
break;
case 47:
r37a_ascii_code(C);
r262add_ascii((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)),((T3)((/*RF2*/(C)->_last_ascii_code/*36*/))));
break;
case 9:
case 32:
_state=2;
break;
default:;
r37fcp(C,((T0*)ms37_116346440a));
_state=0;
}
}/*INSPECT]*/
break;
case 2:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 10:
_state=3;
break;
case 9:
case 32:
break;
default:;
r37fcp(C,((T0*)ms37_1382075996));
}
}/*INSPECT]*/
break;
default:;
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 9:
case 32:
break;
case 37:
r262break_line((T262*)((/*RF2*/(C)->_last_manifest_string/*116*/)));
_state=0;
break;
case 10:
r37fcp(C,((T0*)ms37_181806522));
_state=0;
break;
default:;
r37fcp(C,((T0*)ms37_176469602));
_state=0;
}
}/*INSPECT]*/
}
}/*INSPECT]*/
}
r37next_char(C);
r37skip_comments(C);
}
/*FI]*/
return R;
}


T6 r37a_retry(T37* C){
T6 R=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_87466))){
/*[IF*/
if(!((/*RF2*/(C)->_in_rescue/*14*/))){
{T104 se_tmp0;
r37error((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)),((T0*)ms37_762747069));
}
}
/*FI]*/
{T104 se_tmp0;
{T324*n=((T324*)se_malloc(sizeof(*n))/*16*/);
*n=M324;
/*[IRF3.3make*/((((T324*)(n)))->_start_position)=((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
/*]*/
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
R=1;
}
/*FI]*/
return R;
}


T6 r37a_binary(T37* C,T104 a1){
T6 R=0;
R=1;
/*[IF*/
if(r37skip2(C,((T3)'\74'),((T3)'\75'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_361),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip2(C,((T3)'\76'),((T3)'\75'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_371),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip2(C,((T3)'\57'),((T3)'\57'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_282),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip2(C,((T3)'\134'),((T3)'\134'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_552),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\53'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_43),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\55'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_45),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\52'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_42),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\57'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_47),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\76'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_62),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\74'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_60),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37skip1(C,((T3)'\136'))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_94),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37a_keyword(C,((T0*)ms21_3669))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_3669),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37a_keyword(C,((T0*)ms21_2067995))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_2067995),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
 else if(r37a_keyword(C,((T0*)ms21_3075))){
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_17715))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_9647090),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
else{
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_3075),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
/*FI]*/
}
 else if(r37a_keyword(C,((T0*)ms21_669))){
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16001))){
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_2126626),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
else{
{T235*n=((T235*)se_malloc(sizeof(*n))/*20*/);
*n=M235;
r235make(n,((T0*)ms21_669),a1);
(/*SFN*/C->_last_binary)=((T0*)n);
}
}
/*FI]*/
}
else{
(/*SFN*/C->_last_binary)=NULL;
R=0;
}
/*FI]*/
return R;
}


void r37a_new_export_list(T37* C){
T2 _state=0;
T0* _new_export_item=NULL;
T0* _items=NULL;
T0* _clients=NULL;
T104 _sp={NULL,0};
T0* _export_list=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_408086))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
while (!((_state)>(3)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\173'))){
_clients=r37a_clients(C);
_state=1;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
else{
/*[IF*/
if((_items)!=((void*)(NULL))){
{T413*n=((T413*)se_malloc(sizeof(*n))/*12*/);
*n=M413;
r413make(n,_sp,_items);
_export_list=((T0*)n);
}
/*[IRF3.3set_export*/((((T73*)((T73*)((/*RF2*/(C)->_last_parent/*120*/)))))->_export_list)=(_export_list);
/*]*/
}
/*FI]*/
_state=4;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_3073))){
{T411*n=((T411*)se_malloc(sizeof(*n))/*8*/);
*n=M411;
r411make_all(n,_clients);
_new_export_item=((T0*)n);
}
/*[IF*/
if((_items)==((void*)(NULL))){
{T412*n=((T412*)se_malloc(sizeof(*n))/*16*/);
*n=M412;
r412with_capacity(n,2,1);
_items=((T0*)n);
}
}
/*FI]*/
r412add_last(((T412*)_items),_new_export_item);
_state=2;
}
else{
/*[IF*/
if(r37a_feature_name_list(C)){
{T411*n=((T411*)se_malloc(sizeof(*n))/*8*/);
*n=M411;
r411make(n,_clients,(/*RF2*/(C)->_last_feature_name_list/*84*/));
_new_export_item=((T0*)n);
}
/*[IF*/
if((_items)==((void*)(NULL))){
{T412*n=((T412*)se_malloc(sizeof(*n))/*16*/);
*n=M412;
r412with_capacity(n,2,1);
_items=((T0*)n);
}
}
/*FI]*/
r412add_last(((T412*)_items),_new_export_item);
_state=2;
}
else{
_state=3;
}
/*FI]*/
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r37skip1(C,((T3)'\73'))){
_state=0;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\173'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_175744691);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
_state=0;
}
else{
/*[IF*/
if((_items)!=((void*)(NULL))){
{T413*n=((T413*)se_malloc(sizeof(*n))/*12*/);
*n=M413;
r413make(n,_sp,_items);
_export_list=((T0*)n);
}
/*[IRF3.3set_export*/((((T73*)((T73*)((/*RF2*/(C)->_last_parent/*120*/)))))->_export_list)=(_export_list);
/*]*/
}
/*FI]*/
_state=4;
}
/*FI]*/
break;
default:;
r37fcp(C,((T0*)ms37_1604340919));
_state=4;
}
}/*INSPECT]*/
}
}
/*FI]*/
}


void r37a_ascii_code(T37* C){
T2 _counter=0;
r37next_char(C);
_counter=0;
(/*SFN*/C->_last_ascii_code)=0;
while (!(((_counter)>(3))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\57')))))
{
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_cc/*156*/);
switch(z1){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
(/*SFN*/C->_last_ascii_code)=(((/*RF2*/(C)->_last_ascii_code/*36*/))*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
break;
default:;
r37fcp(C,((T0*)ms37_1098559967));
}
}/*INSPECT]*/
_counter=(_counter)+(1);
r37next_char(C);
}
/*[IF*/
if((_counter)==(0)){
r37fcp(C,((T0*)ms37_545306000));
}
 else if((_counter)>(3)){
r37fcp(C,((T0*)ms37_1563835599));
}
else{
}
/*FI]*/
}


T6 r37a_identifier(T37* C){
T6 R=0;
/*[IF*/
if((/*RF2*/(C)->_case_insensitive/*0*/)){
R=r37a_identifier1(C);
}
else{
R=r37a_identifier2(C);
}
/*FI]*/
return R;
}


T6 r37a_character_constant(T37* C){
T6 R=0;
T3 _value=0;
T2 _printing_mode=0;
T2 _state=0;
T104 _sp={NULL,0};
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\47'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_line/*148*/),(/*RF2*/(C)->_column/*144*/)),&se_tmp0));
}
R=1;
while (!((_state)>(2)))
{
r37next_char(C);
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 37:
_state=1;
break;
case 39:
r37fcp(C,((T0*)ms37_1358473075));
_state=2;
break;
default:;
_value=(/*RF2*/(C)->_cc/*156*/);
_printing_mode=0;
_state=2;
}
}/*INSPECT]*/
break;
case 1:
_printing_mode=1;
_state=2;
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 65:
_value=((T3)'\100');
break;
case 66:
_value=((T3)'\10');
break;
case 67:
_value=((T3)'\136');
break;
case 68:
_value=((T3)'\44');
break;
case 70:
_value=((T3)'\14');
break;
case 72:
_value=((T3)'\134');
break;
case 76:
_value=((T3)'\176');
break;
case 78:
_value=((T3)'\n');
break;
case 81:
_value=((T3)'\140');
break;
case 82:
_value=((T3)'\15');
break;
case 83:
_value=((T3)'\43');
break;
case 84:
_value=((T3)'\11');
break;
case 85:
_value=((T3)'\0');
break;
case 86:
_value=((T3)'\174');
break;
case 37:
_value=((T3)'\45');
break;
case 39:
_value=((T3)'\47');
break;
case 34:
_value=((T3)'\42');
break;
case 40:
_value=((T3)'\133');
break;
case 41:
_value=((T3)'\135');
break;
case 60:
_value=((T3)'\173');
break;
case 62:
_value=((T3)'\175');
break;
case 47:
r37a_ascii_code(C);
_value=((T3)((/*RF2*/(C)->_last_ascii_code/*36*/)));
_printing_mode=2;
break;
default:;
r37fcp(C,((T0*)ms37_116346440));
}
}/*INSPECT]*/
break;
default:;
_state=3;
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 39:
break;
default:;
r37fcp(C,((T0*)ms37_1358473075));
}
}/*INSPECT]*/
r37next_char(C);
r37skip_comments(C);
}
}/*INSPECT]*/
}
{T261*n=((T261*)se_malloc(sizeof(*n))/*17*/);
*n=M261;
r261make(n,_sp,_value,_printing_mode);
(/*SFN*/C->_last_character_constant)=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r37to_proc_call(T37* C,T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if((a2)==((void*)(NULL))){
r37fcp(C,((T0*)ms37_629850238));
}
 else if((a3)==((void*)(NULL))){
{T166*n=((T166*)se_malloc(sizeof(*n))/*16*/);
*n=M166;
r166make(n,a1,a2);
R=((T0*)n);
}
}
 else if((/*SSFRF4*//*X245count*/r245count(((T245*)a3)))==(1)){
{T255*n=((T255*)se_malloc(sizeof(*n))/*20*/);
*n=M255;
r255make(n,a1,a2,a3);
R=((T0*)n);
}
}
else{
{T256*n=((T256*)se_malloc(sizeof(*n))/*20*/);
*n=M256;
r256make(n,a1,a2,a3);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r37a_keyword(T37* C,T0* a1){
T6 R=0;
T2 _j=0;
T2 _i=0;
T2 _c=0;
_i=(/*RF2*/(C)->_column/*144*/);
_c=(/*RF2*/(((T7*)a1))->_count/*4*/);
/*[IF*/
if(((((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))-(_i))+(1))>=(_c)){
(/*SFN*/C->_start_line)=(/*RF2*/(C)->_line/*148*/);
(/*SFN*/C->_start_column)=_i;
_j=1;
while (!((_c)<=(0)))
{
/*[IF*/
if(r3same_as(/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[(_i)-(1)]/*)*/,/*(IRF4.6item*/((/*RF2*/(((T7*)a1))->_storage/*0*/))[(_j)-(1)]/*)*/)){
_i=(_i)+(1);
_j=(_j)+(1);
_c=(_c)-(1);
}
else{
_c=-(1);
}
/*FI]*/
}
}
/*FI]*/
/*[IF*/
if((_c)==(0)){
/*[IF*/
if((_i)>((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))){
R=1;
(/*SFN*/C->_cc)=((T3)'\n');
(/*SFN*/C->_column)=_i;
r37skip_comments(C);
}
else{
/*[INSPECT*/
{int z1=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[(_i)-(1)]/*)*/;
switch(z1){
case 9:
case 32:
case 45:
R=1;
(/*SFN*/C->_cc)=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[(_i)-(1)]/*)*/;
(/*SFN*/C->_column)=_i;
r37skip_comments(C);
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
case 95:
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
break;
default:;
R=1;
(/*SFN*/C->_cc)=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[(_i)-(1)]/*)*/;
(/*SFN*/C->_column)=_i;
}
}/*INSPECT]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_feature_name_list(T37* C){
T6 R=0;
T2 _state=0;
(/*SFN*/C->_last_feature_name_list)=NULL;
while (!((_state)>=(3)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37a_feature_name(C)){
{T118*n=((T118*)se_malloc(sizeof(*n))/*8*/);
*n=M118;
/*[IRF3.3make_1*/((((T118*)(n)))->_first)=((/*RF2*/(C)->_last_feature_name/*80*/));
/*]*/
(/*SFN*/C->_last_feature_name_list)=((T0*)n);
}
R=1;
_state=1;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_446380143);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
else{
_state=3;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
_state=2;
}
 else if(r37a_feature_name(C)){
{T104 se_tmp0;
r37warning((*(se_tmp0=X117start_position((/*RF2*/(C)->_last_feature_name/*80*/)),&se_tmp0)),((T0*)ms37_175744316));
}
r118add_last((T118*)((/*RF2*/(C)->_last_feature_name_list/*84*/)),(/*RF2*/(C)->_last_feature_name/*80*/));
}
else{
_state=3;
}
/*FI]*/
break;
default:;
/*[IF*/
if(r37a_feature_name(C)){
r118add_last((T118*)((/*RF2*/(C)->_last_feature_name_list/*84*/)),(/*RF2*/(C)->_last_feature_name/*80*/));
_state=1;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_804145850);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
else{
/*[IRF3.6ecp*/{T37* C1=C;
T0* b1=((T0*)ms37_958560710);
{T104 se_tmp0;
r37error((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
_state=3;
}
/*FI]*/
}
}/*INSPECT]*/
}
return R;
}


void r37skip_comments(T37* C){
T6 _stop=0;
T104 _sp={NULL,0};
while (!(_stop))
{
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_cc/*156*/);
switch(z1){
case 9:
case 10:
case 32:
r37next_char(C);
break;
case 45:
r37next_char(C);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\55'))){
/*[IF*/
if((/*RF2*/(C)->_drop_comments/*185*/)){
/*[IF*/
if(((/*RF2*/(C)->_line/*148*/))==((/*RF2*/((T178*)(oBC19parser_buffer))->_count/*4*/))){
(/*SFN*/C->_cc)=((T3)'\0');
_stop=1;
}
else{
(/*SFN*/C->_line)=((/*RF2*/(C)->_line/*148*/))+(1);
(/*SFN*/C->_column)=1;
(/*SFN*/C->_current_line)=r178item((/*RF2*/(C)->_line/*148*/));
/*[IF*/
if(((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))==(0)){
(/*SFN*/C->_cc)=((T3)'\n');
}
else{
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[0]/*)*/;
}
/*FI]*/
}
/*FI]*/
}
else{
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_line/*148*/),((/*RF2*/(C)->_column/*144*/))-(1)),&se_tmp0));
}
r37next_char(C);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC37lcs))))->_count)=(0);
/*]*/
while (!(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\n'))))
{
r7extend((T7*)(oBC37lcs),(/*RF2*/(C)->_cc/*156*/));
r37next_char(C);
}
/*[IF*/
if(((/*RF2*/(C)->_last_comment/*3*/))==((void*)(NULL))){
{T164*n=((T164*)se_malloc(sizeof(*n))/*12*/);
*n=M164;
r164make(n,_sp,r7twin((T7*)(oBC37lcs)));
(/*SFN*/C->_last_comment)=((T0*)n);
}
}
else{
/*[IRF3.5add_last*/r52add_last(((T52*)((/*RF2*/((T164*)((/*RF2*/(C)->_last_comment/*3*/)))->_list/*8*/))),r7twin((T7*)(oBC37lcs)));
/*]*/
}
/*FI]*/
}
/*FI]*/
}
else{
(/*SFN*/C->_cc)=((T3)'\55');
(/*SFN*/C->_column)=((/*RF2*/(C)->_column/*144*/))-(1);
_stop=1;
}
/*FI]*/
break;
default:;
_stop=1;
}
}/*INSPECT]*/
}
}


T6 r37a_parent(T37* C){
T6 R=0;
/*[IF*/
if(r37a_class_type(C)){
R=1;
{T73*n=((T73*)se_malloc(sizeof(*n))/*48*/);
*n=M73;
r73make(n,(/*RF2*/(C)->_last_class_type/*68*/));
(/*SFN*/C->_last_parent)=((T0*)n);
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_436196))){
r37a_rename_list(C);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_924385084);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
/*FI]*/
}
/*FI]*/
r37a_new_export_list(C);
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_11251026))){
/*[IF*/
if(r37a_feature_name_list(C)){
/*[IRF3.3set_undefine*/((((T73*)((T73*)((/*RF2*/(C)->_last_parent/*120*/)))))->_undefine_list)=((/*RF2*/(C)->_last_feature_name_list/*84*/));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_10876026))){
/*[IF*/
if(r37a_feature_name_list(C)){
/*[IRF3.3set_redefine*/((((T73*)((T73*)((/*RF2*/(C)->_last_parent/*120*/)))))->_redefine_list)=((/*RF2*/(C)->_last_feature_name_list/*84*/));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_439136))){
/*[IF*/
if(r37a_feature_name_list(C)){
/*[IRF3.3set_select*/((((T73*)((T73*)((/*RF2*/(C)->_last_parent/*120*/)))))->_select_list)=((/*RF2*/(C)->_last_feature_name_list/*84*/));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((((r37a_keyword(C,((T0*)ms20_436196)))||(r37a_keyword(C,((T0*)ms20_408086))))||(r37a_keyword(C,((T0*)ms20_11251026))))||(r37a_keyword(C,((T0*)ms20_10876026))))||(r37a_keyword(C,((T0*)ms20_439136)))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
}
r37fatal_error(((T0*)ms37_800364721));
}
/*FI]*/
(/*SFN*/C->_ok)=r37a_keyword(C,((T0*)ms20_3175));
}
/*FI]*/
return R;
}


T6 r37a_index_value(T37* C){
T6 R=0;
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
(/*SFN*/C->_last_index_value)=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
R=1;
}
 else if(r37a_manifest_constant(C)){
(/*SFN*/C->_last_index_value)=(/*RF2*/(C)->_last_manifest_constant/*112*/);
R=1;
}
/*FI]*/
return R;
}


T0* r37last_result(T37* C){
T0* R=NULL;
T104 _sp={NULL,0};
{T211 se_tmp1;
T104 se_tmp0;
_sp=(/*RF2*/((/*RF2*/(C)->_tmp_name/*24*/))._start_position/*0*/);
}
/*[IF*/
if((/*RF2*/(C)->_inside_function/*7*/)){
/*[IF*/
if((/*RF2*/(C)->_inside_once_function/*8*/)){
{T250*n=((T250*)se_malloc(sizeof(*n))/*16*/);
*n=M250;
/*[IRF3.3make*/((((T250*)(n)))->_start_position)=(_sp);
/*]*/
R=((T0*)n);
}
}
else{
{T251*n=((T251*)se_malloc(sizeof(*n))/*16*/);
*n=M251;
/*[IRF3.3make*/((((T251*)(n)))->_start_position)=(_sp);
/*]*/
R=((T0*)n);
}
}
/*FI]*/
}
else{
r82add_position(_sp);
r37fatal_error(((T0*)ms37_2053867462));
}
/*FI]*/
return R;
}


T6 r37a_class_type(T37* C){
T6 R=0;
T0* _generic_list=NULL;
T0* _base_class_name=NULL;
T2 _state=0;
/*[IF*/
if(r37a_base_type(C)){
(/*SFN*/C->_last_class_type)=(/*RF2*/(C)->_last_base_type/*44*/);
R=1;
}
 else if(r37a_base_class_name(C)){
R=1;
_base_class_name=(/*RF2*/(C)->_last_class_name/*64*/);
while (!((_state)>(2)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37skip1(C,((T3)'\133'))){
_state=1;
}
else{
{T369*n=((T369*)se_malloc(sizeof(*n))/*16*/);
*n=M369;
/*[IRF3.3make*/((((T369*)(n)))->_base_class_name)=(_base_class_name);
/*]*/
(/*SFN*/C->_last_class_type)=((T0*)n);
}
_state=3;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37a_type(C)){
/*[IF*/
if((_generic_list)==((void*)(NULL))){
{T147*n=((T147*)se_malloc(sizeof(*n))/*16*/);
*n=M147;
r147with_capacity(n,2,1);
_generic_list=((T0*)n);
}
}
/*FI]*/
r147add_last(((T147*)_generic_list),(/*RF2*/(C)->_last_type/*128*/));
_state=2;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_804145850);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\135'))){
_state=2;
}
else{
r37fcp(C,((T0*)ms37_543076045));
_state=2;
}
/*FI]*/
break;
default:;
/*[IF*/
if(r37skip1(C,((T3)'\54'))){
_state=1;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\135'))){
/*[IF*/
if((_generic_list)==((void*)(NULL))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1731250773);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
{T369*n=((T369*)se_malloc(sizeof(*n))/*16*/);
*n=M369;
/*[IRF3.3make*/((((T369*)(n)))->_base_class_name)=(_base_class_name);
/*]*/
(/*SFN*/C->_last_class_type)=((T0*)n);
}
}
else{
{T370*n=((T370*)se_malloc(sizeof(*n))/*28*/);
*n=M370;
r370make(n,_base_class_name,_generic_list);
(/*SFN*/C->_last_class_type)=((T0*)n);
}
}
/*FI]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\135'));
_state=3;
}
 else if(r37a_type(C)){
/*[IF*/
if((_generic_list)==((void*)(NULL))){
{T147*n=((T147*)se_malloc(sizeof(*n))/*16*/);
*n=M147;
r147with_capacity(n,2,1);
_generic_list=((T0*)n);
}
}
/*FI]*/
r147add_last(((T147*)_generic_list),(/*RF2*/(C)->_last_type/*128*/));
{T104 se_tmp0;
r37warning((*(se_tmp0=X62start_position((/*RF2*/(C)->_last_type/*128*/)),&se_tmp0)),((T0*)ms37_175744316));
}
}
else{
r37fcp(C,((T0*)ms37_2006579501));
_state=3;
}
/*FI]*/
}
}/*INSPECT]*/
}
}
/*FI]*/
return R;
}


T6 r37a_strip(T37* C){
T6 R=0;
T104 _sp={NULL,0};
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_89862))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37skip1(C,((T3)'\50'))){
(/*SFN*/C->_ok)=r37a_feature_name_list(C);
{T243*n=((T243*)se_malloc(sizeof(*n))/*24*/);
*n=M243;
r243make(n,_sp,(/*RF2*/(C)->_last_feature_name_list/*84*/));
(/*SFN*/C->_last_expression)=((T0*)n);
}
/*[IF*/
if(!(r37skip1(C,((T3)'\51')))){
r37fcp(C,((T0*)ms37_1250095432));
}
/*FI]*/
R=1;
}
else{
r37fcp(C,((T0*)ms37_988145286));
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_precursor(T37* C,T6 a1){
T6 R=0;
T104 _p={NULL,0};
T0* _args=NULL;
T0* _parent=NULL;
T2 _c=0;
T2 _l=0;
/*[IF*/
if(r37skip1(C,((T3)'\173'))){
R=1;
_l=(/*RF2*/(C)->_start_line/*136*/);
_c=(/*RF2*/(C)->_start_column/*140*/);
/*[IF*/
if(r37skip1(C,((T3)'\173'))){
{T104 se_tmp0;
r37warning((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)),((T0*)ms37_1353966724));
}
}
/*FI]*/
/*[IF*/
if(r37a_base_class_name(C)){
_parent=(/*RF2*/(C)->_last_class_name/*64*/);
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\175')))){
r37fcp(C,((T0*)ms37_595780742));
}
/*FI]*/
/*[IF*/
if(r37skip1(C,((T3)'\175'))){
{T104 se_tmp0;
r37warning((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)),((T0*)ms37_538692491));
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_42134669))){
R=1;
/*[IF*/
if((_l)==(0)){
_l=(/*RF2*/(C)->_start_line/*136*/);
_c=(/*RF2*/(C)->_start_column/*140*/);
}
/*FI]*/
_args=r37a_actuals(C);
}
 else if((_l)>(0)){
r37fcp(C,((T0*)ms37_1062019645));
}
/*FI]*/
/*[IF*/
if(R){
{T104 se_tmp0;
_p=(*(se_tmp0=r37pos(C,_l,_c),&se_tmp0));
}
/*[IF*/
if(r37skip1(C,((T3)'\56'))){
{T266*n=((T266*)se_malloc(sizeof(*n))/*28*/);
*n=M266;
r266make(n,_p,_parent,_args);
(/*SFN*/C->_last_expression)=((T0*)n);
}
r37a_after_a_dot(C,a1,(/*RF2*/(C)->_last_expression/*72*/));
}
 else if(a1){
{T268*n=((T268*)se_malloc(sizeof(*n))/*28*/);
*n=M268;
r268make(n,_p,_parent,_args);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
else{
{T266*n=((T266*)se_malloc(sizeof(*n))/*28*/);
*n=M266;
r266make(n,_p,_parent,_args);
(/*SFN*/C->_last_expression)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_loop(T37* C){
T6 R=0;
T0* _al=NULL;
T0* _hc=NULL;
T0* _lb=NULL;
T0* _ue=NULL;
T0* _vc=NULL;
T0* _ic=NULL;
T0* _i=NULL;
T0* _e_loop=NULL;
T2 _c2=0;
T2 _l2=0;
T2 _c1=0;
T2 _l1=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16264))){
R=1;
_l1=(/*RF2*/(C)->_start_line/*136*/);
_c1=(/*RF2*/(C)->_start_column/*140*/);
_i=r37a_compound1(C);
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_51843716))){
_l2=(/*RF2*/(C)->_start_line/*136*/);
_c2=(/*RF2*/(C)->_start_column/*140*/);
_hc=r37get_comment(C);
_al=r37a_assertion(C);
/*[IF*/
if(((_hc)!=((void*)(NULL)))||((_al)!=((void*)(NULL)))){
{T104 se_tmp0;
{T340*n=((T340*)se_malloc(sizeof(*n))/*24*/);
*n=M340;
r340make(n,(*(se_tmp0=r37pos(C,_l2,_c2),&se_tmp0)),_hc,_al);
_ic=((T0*)n);
}
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_2234341))){
/*[IF*/
if((r37a_tag_mark(C))&&(r37a_expression(C))){
{T342*n=((T342*)se_malloc(sizeof(*n))/*20*/);
*n=M342;
r342make(n,(/*RF2*/(C)->_last_tag_mark/*132*/),(/*RF2*/(C)->_last_expression/*72*/),r37get_comment(C));
_vc=((T0*)n);
}
}
 else if(r37a_expression(C)){
{T343*n=((T343*)se_malloc(sizeof(*n))/*16*/);
*n=M343;
r343make(n,(/*RF2*/(C)->_last_expression/*72*/),r37get_comment(C));
_vc=((T0*)n);
}
}
else{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_922212712);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_90408))){
/*[IF*/
if(r37a_expression(C)){
_ue=X126add_comment((/*RF2*/(C)->_last_expression/*72*/),r37get_comment(C));
}
else{
r37fcp(C,((T0*)ms37_1380562254));
_ue=(/*RF2*/(C)->_last_expression/*72*/);
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_45224899));
_ue=(/*RF2*/(C)->_last_expression/*72*/);
}
/*FI]*/
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1861857328);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
/*FI]*/
/*[IF*/
if(!(r37a_keyword(C,((T0*)ms20_16942)))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1436398529);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
_lb=r37a_compound2(C,((T0*)ms37_52979396),((T0*)ms20_3175));
{T104 se_tmp0;
{T341*n=((T341*)se_malloc(sizeof(*n))/*36*/);
*n=M341;
r341make(n,(*(se_tmp0=r37pos(C,_l1,_c1),&se_tmp0)),_i,_ic,_vc,_ue,_lb);
_e_loop=((T0*)n);
}
}
(/*SFN*/C->_last_instruction)=_e_loop;
}
/*FI]*/
return R;
}


T6 r37a_conditional(T37* C){
T6 R=0;
T0* _ifthenelse=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_627))){
R=1;
{T104 se_tmp0;
{T313*n=((T313*)se_malloc(sizeof(*n))/*24*/);
*n=M313;
/*[IRF3.3make*/((((T313*)(n)))->_start_position)=((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
/*]*/
_ifthenelse=((T0*)n);
}
}
r37a_then_part_list(C,_ifthenelse);
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16001))){
/*[IRF3.3set_else_compound*/((((T313*)(((T313*)_ifthenelse))))->_else_compound)=(r37a_compound2(C,((T0*)ms37_50040236),((T0*)ms20_3175)));
/*]*/
}
else{
/*[IF*/
if(!(r37a_keyword(C,((T0*)ms20_3175)))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_849606800);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
}
/*FI]*/
(/*SFN*/C->_last_instruction)=_ifthenelse;
}
/*FI]*/
return R;
}


T0* r37to_call(T0* a1,T0* a2,T0* a3){
T0* R=NULL;
/*[IF*/
if((a2)==((void*)(NULL))){
R=a1;
}
 else if((a3)==((void*)(NULL))){
{T246*n=((T246*)se_malloc(sizeof(*n))/*16*/);
*n=M246;
r246make(n,a1,a2);
R=((T0*)n);
}
}
 else if((/*SSFRF4*//*X245count*/r245count(((T245*)a3)))==(1)){
{T247*n=((T247*)se_malloc(sizeof(*n))/*20*/);
*n=M247;
r247make(n,a1,a2,a3);
R=((T0*)n);
}
}
else{
{T248*n=((T248*)se_malloc(sizeof(*n))/*20*/);
*n=M248;
r248make(n,a1,a2,a3);
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T6 r37a_feature_name(T37* C){
T6 R=0;
/*[IF*/
if(r37a_prefix(C)){
(/*SFN*/C->_last_feature_name)=(/*RF2*/(C)->_last_prefix/*96*/);
R=1;
}
 else if(r37a_infix(C)){
(/*SFN*/C->_last_feature_name)=(/*RF2*/(C)->_last_infix/*92*/);
R=1;
}
 else if(r37a_identifier(C)){
{T211 se_tmp0;
(/*SFN*/C->_last_feature_name)=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
R=1;
}
/*FI]*/
return R;
}


void r37a_r10(T37* C,T6 a1,T0* a2,T0* a3,T0* a4){
/*[IF*/
if(r37skip1(C,((T3)'\56'))){
/*[IF*/
if(((a2)!=((void*)(NULL)))&&(X126is_void(a2))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position(a2),&se_tmp0)));
}
r37fatal_error(((T0*)ms37_2001790502));
}
/*FI]*/
r37a_after_a_dot(C,a1,r37to_call(a2,a3,a4));
}
else{
/*[IF*/
if(a1){
(/*SFN*/C->_last_instruction)=r37to_proc_call(C,a2,a3,a4);
(/*SFN*/C->_last_expression)=NULL;
}
else{
(/*SFN*/C->_last_expression)=r37to_call(a2,a3,a4);
(/*SFN*/C->_last_instruction)=NULL;
}
/*FI]*/
}
/*FI]*/
}


T6 r37skip1(T37* C,T3 a1){
T6 R=0;
/*[IF*/
if((a1)==((/*RF2*/(C)->_cc/*156*/))){
(/*SFN*/C->_start_line)=(/*RF2*/(C)->_line/*148*/);
(/*SFN*/C->_start_column)=(/*RF2*/(C)->_column/*144*/);
R=1;
r37next_char(C);
r37skip_comments(C);
}
/*FI]*/
return R;
}


T6 r37skip2(T37* C,T3 a1,T3 a2){
T6 R=0;
/*[IF*/
if((a1)==((/*RF2*/(C)->_cc/*156*/))){
(/*SFN*/C->_start_line)=(/*RF2*/(C)->_line/*148*/);
(/*SFN*/C->_start_column)=(/*RF2*/(C)->_column/*144*/);
r37next_char(C);
/*[IF*/
if((a2)==((/*RF2*/(C)->_cc/*156*/))){
R=1;
r37next_char(C);
r37skip_comments(C);
}
else{
(/*SFN*/C->_cc)=a1;
(/*SFN*/C->_column)=(/*RF2*/(C)->_start_column/*140*/);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_create_instruction(T37* C){
T6 R=0;
T0* _call=NULL;
T0* _procedure_name=NULL;
T0* _writable=NULL;
T0* _type=NULL;
T104 _sp={NULL,0};
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_396356))){
R=1;
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37skip1(C,((T3)'\173'))){
/*[IF*/
if(r37a_type(C)){
_type=(/*RF2*/(C)->_last_type/*128*/);
/*[IF*/
if(X62is_anchored(_type)){
{T104 se_tmp0;
r37warning((*(se_tmp0=X62start_position(_type),&se_tmp0)),((T0*)ms37_1697171302));
}
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\175')))){
r37fcp(C,((T0*)ms37_47798174));
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_2037548));
}
/*FI]*/
}
/*FI]*/
_writable=r37mandatory_writable(C);
/*[IF*/
if(r37skip1(C,((T3)'\56'))){
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
_procedure_name=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\50'))){
_call=r37to_proc_call(C,_writable,_procedure_name,r37a_actuals(C));
}
else{
{T166*n=((T166*)se_malloc(sizeof(*n))/*16*/);
*n=M166;
r166make(n,_writable,_procedure_name);
_call=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((_type)==((void*)(NULL)))&&((_call)==((void*)(NULL)))){
{T344*n=((T344*)se_malloc(sizeof(*n))/*20*/);
*n=M344;
r344make(n,_sp,_writable);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
 else if(((_type)!=((void*)(NULL)))&&((_call)==((void*)(NULL)))){
{T347*n=((T347*)se_malloc(sizeof(*n))/*24*/);
*n=M347;
r347make(n,_sp,_type,_writable);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
 else if(((_type)==((void*)(NULL)))&&((_call)!=((void*)(NULL)))){
{T349*n=((T349*)se_malloc(sizeof(*n))/*28*/);
*n=M349;
r349make(n,_sp,_writable,_call);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
else{
{T351*n=((T351*)se_malloc(sizeof(*n))/*32*/);
*n=M351;
r351make(n,_sp,_type,_writable,_call);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_prefix(T37* C){
T6 R=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_437070))){
R=1;
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\42'))){
r37next_char(C);
}
else{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_2127445170);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
/*[IF*/
if(r37a_unary(C)){
}
 else if(r37a_free_operator(C)){
{T211 se_tmp0;
(/*SFN*/C->_last_prefix)=r211to_prefix_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
}
else{
r37fcp(C,((T0*)ms37_1138390195));
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\42')))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_431394186);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_feature_declaration(T37* C){
T6 R=0;
{T292 se_tmp0;
r292initialize(&((/*RF2*/(C)->_tmp_feature/*157*/)));
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_407540))){
/*[IF*/
if(r37a_feature_name(C)){
R=1;
r37to_frozen_feature_name(C);
{T292 se_tmp0;
r292add_synonym((/*RF2*/(C)->_last_feature_name/*80*/));
}
}
else{
r37fcp(C,((T0*)ms37_958560710));
}
/*FI]*/
}
 else if(r37a_feature_name(C)){
R=1;
{T292 se_tmp0;
r292add_synonym((/*RF2*/(C)->_last_feature_name/*80*/));
}
}
/*FI]*/
while (!(!(r37skip1(C,((T3)'\54')))))
{
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_407540))){
/*[IF*/
if(r37a_feature_name(C)){
r37to_frozen_feature_name(C);
{T292 se_tmp0;
r292add_synonym((/*RF2*/(C)->_last_feature_name/*80*/));
}
}
else{
r37fcp(C,((T0*)ms37_505423465));
}
/*FI]*/
}
 else if(r37a_feature_name(C)){
{T292 se_tmp0;
r292add_synonym((/*RF2*/(C)->_last_feature_name/*80*/));
}
}
else{
/*[IRF3.6ecp*/{T37* C1=C;
T0* b1=((T0*)ms37_345260582);
{T104 se_tmp0;
r37error((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
}
/*[IF*/
if(R){
r37a_formal_arg_list(C);
/*[IF*/
if(r37skip1(C,((T3)'\72'))){
/*[IF*/
if(r37a_type(C)){
(/*SFN*/C->_inside_function)=1;
{T292 se_tmp0;
/*[IRF3.3set_type*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_type)=((/*RF2*/(C)->_last_type/*128*/));
/*]*/
}
}
else{
r37fcp(C,((T0*)ms37_543076045));
}
/*FI]*/
}
else{
(/*SFN*/C->_inside_function)=0;
}
/*FI]*/
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_640))){
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_451011))){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_unique(&((/*RF2*/(C)->_tmp_feature/*157*/)));
}
}
 else if(r37a_boolean_constant(C)){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_boolean(&((/*RF2*/(C)->_tmp_feature/*157*/)),(/*RF2*/(C)->_last_boolean_constant/*56*/));
}
}
 else if(r37a_character_constant(C)){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_character(&((/*RF2*/(C)->_tmp_feature/*157*/)),(/*RF2*/(C)->_last_character_constant/*60*/));
}
}
 else if(r37a_manifest_string(C)){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_string(&((/*RF2*/(C)->_tmp_feature/*157*/)),(/*RF2*/(C)->_last_manifest_string/*116*/));
}
}
 else if(r37a_bit_constant(C)){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_bit(&((/*RF2*/(C)->_tmp_feature/*157*/)),(/*RF2*/(C)->_last_bit_constant/*52*/));
}
}
 else if(r37a_real_constant(C)){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_real(&((/*RF2*/(C)->_tmp_feature/*157*/)),(/*RF2*/(C)->_last_real_constant/*124*/));
}
}
 else if(r37a_integer_constant(C)){
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_cst_att_integer(&((/*RF2*/(C)->_tmp_feature/*157*/)),(/*RF2*/(C)->_last_integer_constant/*100*/));
}
}
else{
(/*SFN*/C->_last_feature_declaration)=r37a_routine(C);
}
/*FI]*/
}
else{
{T292 se_tmp0;
(/*SFN*/C->_last_feature_declaration)=r292to_writable_attribute(&((/*RF2*/(C)->_tmp_feature/*157*/)));
}
}
/*FI]*/
(/*SFN*/C->_inside_function)=0;
(/*SFN*/C->_inside_once_function)=0;
(/*SFN*/C->_arguments)=NULL;
}
/*FI]*/
return R;
}


void r37next_char(T37* C){
/*[IF*/
if(((/*RF2*/(C)->_column/*144*/))<((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))){
(/*SFN*/C->_column)=((/*RF2*/(C)->_column/*144*/))+(1);
(/*SFN*/C->_cc)=/*(IRF4.6item*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[((/*RF2*/(C)->_column/*144*/))-(1)]/*)*/;
}
 else if(((/*RF2*/(C)->_column/*144*/))==((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))){
(/*SFN*/C->_column)=((/*RF2*/(C)->_column/*144*/))+(1);
(/*SFN*/C->_cc)=((T3)'\n');
}
 else if(((/*RF2*/(C)->_line/*148*/))==((/*RF2*/((T178*)(oBC19parser_buffer))->_count/*4*/))){
(/*SFN*/C->_cc)=((T3)'\0');
}
else{
(/*SFN*/C->_line)=((/*RF2*/(C)->_line/*148*/))+(1);
(/*SFN*/C->_column)=1;
(/*SFN*/C->_current_line)=r178item((/*RF2*/(C)->_line/*148*/));
/*[IF*/
if(((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))==(0)){
(/*SFN*/C->_cc)=((T3)'\n');
}
else{
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[0]/*)*/;
}
/*FI]*/
}
/*FI]*/
}


T0* r37connect_to_cecil(T37* C,T0* a1){
T0* R=NULL;
T0* _path=NULL;
r38put_string((T38*)(oBC19echo),((T0*)ms37_2018314726));
r38put_string((T38*)(oBC19echo),a1);
r38put_character((T38*)(oBC19echo),((T3)'\n'));
r178load_file((T178*)(oBC19parser_buffer),a1);
/*[IF*/
if(!(/*(IRF4.7is_ready*/((/*RF2*/((T178*)(oBC19parser_buffer))->_path/*0*/))!=(NULL)/*)*/)){
r37fatal_error(((T0*)ms37_1545228536));
}
/*FI]*/
_path=(/*RF2*/((T178*)(oBC19parser_buffer))->_path/*0*/);
(/*SFN*/C->_current_id)=r42item((T42*)(r37id_provider()),_path);
(/*SFN*/C->_is_running)=1;
(/*SFN*/C->_formal_generic_list)=NULL;
(/*SFN*/C->_inside_function)=0;
(/*SFN*/C->_inside_once_function)=0;
(/*SFN*/C->_in_ensure)=0;
(/*SFN*/C->_last_comment)=NULL;
(/*SFN*/C->_line)=1;
(/*SFN*/C->_column)=1;
(/*SFN*/C->_current_line)=r178item((/*RF2*/(C)->_line/*148*/));
(/*SFN*/C->_last_base_class)=NULL;
/*[IF*/
if(((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))==(0)){
(/*SFN*/C->_cc)=((T3)'\n');
}
else{
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[0]/*)*/;
}
/*FI]*/
r37skip_comments(C);
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,32);
R=((T0*)n);
}
while (!((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\n')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\0')))))
{
r7extend(((T7*)R),(/*RF2*/(C)->_cc/*156*/));
r37next_char(C);
}
r37skip_comments(C);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\0'))){
r37fatal_error(((T0*)ms37_2102385657));
}
/*FI]*/
return R;
}


T6 r37a_bit_constant(T37* C){
T6 R=0;
T2 _state=0;
T2 _c=0;
T2 _l=0;
/*[IF*/
if((((/*RF2*/(C)->_cc/*156*/))==(((T3)'0')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'1')))){
_l=(/*RF2*/(C)->_line/*148*/);
_c=(/*RF2*/(C)->_column/*144*/);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC37buffer))))->_count)=(0);
/*]*/
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
while (!((_state)>(0)))
{
r37next_char(C);
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_cc/*156*/);
switch(z1){
case 48:
case 49:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
break;
case 66:
case 98:
{T104 se_tmp0;
{T137*n=((T137*)se_malloc(sizeof(*n))/*24*/);
*n=M137;
r137make(n,(*(se_tmp0=r37pos(C,_l,_c),&se_tmp0)),r7twin((T7*)(oBC37buffer)));
(/*SFN*/C->_last_bit_constant)=((T0*)n);
}
}
r37next_char(C);
r37skip_comments(C);
_state=1;
R=1;
break;
default:;
r37go_back_at(C,_l,_c);
_state=2;
}
}/*INSPECT]*/
}
}
/*FI]*/
return R;
}
T0*oBC37lcs=NULL;


T6 r37a_real(T37* C){
T6 R=0;
T2 _c=0;
T2 _l=0;
T2 _state=0;
/*[IF*/
if((r3is_digit((/*RF2*/(C)->_cc/*156*/)))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\56')))){
_l=(/*RF2*/(C)->_line/*148*/);
_c=(/*RF2*/(C)->_column/*144*/);
/*[IRF3.3clear*/((((T7*)((T7*)(oBC37buffer))))->_count)=(0);
/*]*/
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\56'))){
r7append((T7*)(oBC37buffer),((T0*)ms20_286));
_state=5;
}
else{
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
}
/*FI]*/
while (!((_state)>(11)))
{
r37next_char(C);
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
break;
case 46:
r7extend((T7*)(oBC37buffer),((T3)'\56'));
_state=4;
break;
default:;
_state=13;
}
}/*INSPECT]*/
break;
case 1:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=2;
break;
default:;
r37fcp(C,((T0*)ms37_938675437));
}
}/*INSPECT]*/
break;
case 2:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=3;
break;
default:;
r37fcp(C,((T0*)ms37_938675437));
}
}/*INSPECT]*/
break;
case 3:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=0;
break;
default:;
r37fcp(C,((T0*)ms37_938675437));
}
}/*INSPECT]*/
break;
case 4:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=6;
break;
case 69:
case 101:
r7extend((T7*)(oBC37buffer),((T3)'E'));
_state=10;
break;
default:;
_state=12;
}
}/*INSPECT]*/
break;
case 5:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=6;
break;
default:;
_state=13;
}
}/*INSPECT]*/
break;
case 6:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
break;
case 69:
case 101:
r7extend((T7*)(oBC37buffer),((T3)'E'));
_state=10;
break;
case 95:
_state=7;
break;
default:;
_state=12;
}
}/*INSPECT]*/
break;
case 7:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=8;
break;
default:;
r37fcp(C,((T0*)ms37_168971224));
}
}/*INSPECT]*/
break;
case 8:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=9;
break;
default:;
r37fcp(C,((T0*)ms37_168971224));
}
}/*INSPECT]*/
break;
case 9:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=6;
break;
default:;
r37fcp(C,((T0*)ms37_168971224));
}
}/*INSPECT]*/
break;
case 10:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 43:
_state=11;
break;
case 45:
r7extend((T7*)(oBC37buffer),((T3)'\55'));
_state=11;
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
_state=11;
break;
default:;
r37fcp(C,((T0*)ms37_1956416552));
_state=13;
}
}/*INSPECT]*/
break;
default:;
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r7extend((T7*)(oBC37buffer),(/*RF2*/(C)->_cc/*156*/));
break;
default:;
_state=12;
}
}/*INSPECT]*/
}
}/*INSPECT]*/
}
/*[IF*/
if((_state)==(12)){
{T104 se_tmp0;
{T264*n=((T264*)se_malloc(sizeof(*n))/*16*/);
*n=M264;
r264make(n,(*(se_tmp0=r37pos(C,_l,_c),&se_tmp0)),r7twin((T7*)(oBC37buffer)));
(/*SFN*/C->_last_real_constant)=((T0*)n);
}
}
R=1;
r37skip_comments(C);
}
else{
r37go_back_at(C,_l,_c);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_void(T37* C){
T6 R=0;
{T211 se_tmp0;
/*[IF*/
if(r211is_void()){
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_last_expression)=r211to_e_void(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
{T211 se_tmp1;
T211 se_tmp0;
R=1;
}
}
/*FI]*/
}
return R;
}


T6 r37a_actual(T37* C){
T6 R=0;
/*[IF*/
if(r37skip1(C,((T3)'\44'))){
/*[IF*/
if(r37a_identifier(C)){
/*[IF*/
if(((r37a_result(C))||(r37a_void(C)))||(r37a_current(C))){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_last_expression/*72*/)),&se_tmp0)));
}
r37fatal_error(((T0*)ms20_671063316));
}
else{
{T211 se_tmp0;
{T254*n=((T254*)se_malloc(sizeof(*n))/*16*/);
*n=M254;
/*[IRF3.3make*/((((T254*)(n)))->_feature_name)=(r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/))));
/*]*/
(/*SFN*/C->_last_expression)=((T0*)n);
}
}
R=1;
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms20_671063316));
}
/*FI]*/
}
 else if(r37a_expression(C)){
R=1;
}
/*FI]*/
return R;
}


T0* r37analyse_class(T37* C,T0* a1){
T0* R=NULL;
T0* _path=NULL;
T2 _old_nbw=0;
T2 _old_nbe=0;
(/*SFN*/C->_current_id)=r42item((T42*)(r37id_provider()),(/*RF2*/(((T77*)a1))->_to_string/*8*/));
_path=(/*RF2*/((T178*)(oBC19parser_buffer))->_path/*0*/);
/*[IF*/
if((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)>(0)){
/*[IRF3.6append*/{T0* b1=((T0*)ms37_204656687);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
r38put_integer((T38*)(oBC19echo),(/*(IRF4.9base_class_count*/(/*RF2*/((T79*)(oBC59base_class_dictionary))->_count/*8*/)/*)*/)+(1));
r38put_character((T38*)(oBC19echo),((T3)'\11'));
r38put_string((T38*)(oBC19echo),_path);
r38put_character((T38*)(oBC19echo),((T3)'\n'));
_old_nbe=/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/;
_old_nbw=/*(IRF4.9nb_warnings*/(/*RF2*/((T82*)(oBC19eh))->_warning_counter/*4*/)/*)*/;
(/*SFN*/C->_is_running)=1;
(/*SFN*/C->_inside_function)=0;
(/*SFN*/C->_inside_once_function)=0;
(/*SFN*/C->_in_ensure)=0;
(/*SFN*/C->_last_comment)=NULL;
(/*SFN*/C->_line)=1;
(/*SFN*/C->_column)=1;
(/*SFN*/C->_current_line)=r178item((/*RF2*/(C)->_line/*148*/));
/*[IF*/
if(((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_count/*4*/))==(0)){
(/*SFN*/C->_cc)=((T3)'\n');
}
else{
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)((/*RF2*/(C)->_current_line/*152*/)))->_storage/*0*/))[0]/*)*/;
}
/*FI]*/
{T61*n=((T61*)se_malloc(sizeof(*n))/*62*/);
*n=M61;
r61make(n,_path,(/*RF2*/(((T77*)a1))->_to_string/*8*/),(/*RF2*/(C)->_current_id/*186*/));
(/*SFN*/C->_last_base_class)=((T0*)n);
}
r37skip_comments(C);
r37a_class_declaration(C);
(/*SFN*/C->_is_running)=0;
/*[IRF3.3unset_is_ready*/((((T178*)((T178*)(oBC19parser_buffer))))->_path)=(NULL);
/*]*/
R=(/*RF2*/(C)->_last_base_class/*40*/);
/*[IF*/
if(((/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/)-(_old_nbe))>(0)){
/*[IRF3.2show_nb_errors*/r37show_nb(/*(IRF4.9nb_errors*/(/*RF2*/((T82*)(oBC19eh))->_error_counter/*0*/)/*)*/,((T0*)ms37_565334390));
/*]*/
r38w_put_string(((T0*)ms37_732932648));
r38w_put_string(_path);
r38w_put_string(((T0*)ms37_442256615));
R=NULL;
}
 else if(((/*(IRF4.9nb_warnings*/(/*RF2*/((T82*)(oBC19eh))->_warning_counter/*4*/)/*)*/)-(_old_nbw))>(0)){
/*[IRF3.2show_nb_warnings*/{T6 _do_it=0;
/*[IF*/
if((/*RF2*/((T38*)(oBC19echo))->_verbose/*0*/)){
_do_it=1;
}
 else if((/*RF2*/((T82*)(oBC19eh))->_no_warning/*8*/)){
}
else{
_do_it=1;
}
/*FI]*/
/*[IF*/
if(_do_it){
r37show_nb(/*(IRF4.9nb_warnings*/(/*RF2*/((T82*)(oBC19eh))->_warning_counter/*4*/)/*)*/,((T0*)ms37_1961320002));
}
/*FI]*/
}/*]*/
}
/*FI]*/
/*[IF*/
if((R)!=((void*)(NULL))){
r61get_started(((T61*)R));
}
/*FI]*/
return R;
}


T6 r37a_when_part(T37* C,T0* a1){
T6 R=0;
T0* _constant=NULL;
T0* _e_when=NULL;
T2 _state=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_18090))){
R=1;
{T104 se_tmp0;
{T326*n=((T326*)se_malloc(sizeof(*n))/*28*/);
*n=M326;
r326make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)),r37get_comment(C));
_e_when=((T0*)n);
}
}
while (!((_state)>(3)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37a_constant(C)){
_constant=(/*RF2*/(C)->_last_expression/*72*/);
_state=1;
}
 else if(r37a_keyword(C,((T0*)ms20_17715))){
/*[IF*/
if((_constant)!=((void*)(NULL))){
r326add_value(((T326*)_e_when),_constant);
}
/*FI]*/
/*[IRF3.3set_compound*/((((T326*)(((T326*)_e_when))))->_compound)=(r37a_compound1(C));
/*]*/
r325add_when(((T325*)a1),_e_when);
_state=4;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_446380143);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
else{
r37fcp(C,((T0*)ms37_348041349));
_state=4;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_17715))){
/*[IF*/
if((_constant)!=((void*)(NULL))){
r326add_value(((T326*)_e_when),_constant);
}
/*FI]*/
/*[IRF3.3set_compound*/((((T326*)(((T326*)_e_when))))->_compound)=(r37a_compound1(C));
/*]*/
r325add_when(((T325*)a1),_e_when);
_state=4;
}
 else if(r37skip2(C,((T3)'\56'),((T3)'\56'))){
_state=2;
}
 else if(r37skip1(C,((T3)'\54'))){
r326add_value(((T326*)_e_when),_constant);
_constant=NULL;
_state=0;
}
else{
r37fcp(C,((T0*)ms37_348041349));
_state=4;
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r37a_constant(C)){
r326add_slice(((T326*)_e_when),_constant,(/*RF2*/(C)->_last_expression/*72*/));
_constant=NULL;
_state=3;
}
else{
r37fcp(C,((T0*)ms37_348041349));
_state=4;
}
/*FI]*/
break;
default:;
/*[IF*/
if(r37skip1(C,((T3)'\54'))){
_state=0;
}
 else if(r37a_keyword(C,((T0*)ms20_17715))){
/*[IRF3.3set_compound*/((((T326*)(((T326*)_e_when))))->_compound)=(r37a_compound1(C));
/*]*/
r325add_when(((T325*)a1),_e_when);
_state=4;
}
 else if(r37a_constant(C)){
_constant=(/*RF2*/(C)->_last_expression/*72*/);
{T211 se_tmp1;
T104 se_tmp0;
r37warning((/*RF2*/((/*RF2*/(C)->_tmp_name/*24*/))._start_position/*0*/),((T0*)ms37_175744316));
}
_state=1;
}
else{
r37fcp(C,((T0*)ms37_348041349));
_state=4;
}
/*FI]*/
}
}/*INSPECT]*/
}
}
/*FI]*/
return R;
}


void r37a_then_part_list(T37* C,T0* a1){
/*[IF*/
if(!(r37a_then_part(C,a1))){
r37fcp(C,((T0*)ms37_16572000));
}
/*FI]*/
while (!(!(r37a_keyword(C,((T0*)ms20_400652)))))
{
/*[IF*/
if(!(r37a_then_part(C,a1))){
r37fcp(C,((T0*)ms37_319995947));
}
/*FI]*/
}
}


T6 r37a_debug(T37* C){
T6 R=0;
T0* _e_debug=NULL;
T0* _list=NULL;
T104 _sp={NULL,0};
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_78263))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37skip1(C,((T3)'\50'))){
while (!(!(r37a_manifest_string(C))))
{
/*[IF*/
if((_list)==((void*)(NULL))){
{T302*n=((T302*)se_malloc(sizeof(*n))/*16*/);
*n=M302;
r302with_capacity(n,4);
_list=((T0*)n);
}
}
/*FI]*/
r302add_last(((T302*)_list),(/*RF2*/(C)->_last_manifest_string/*116*/));
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
/*[IF*/
if((_list)==((void*)(NULL))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_973007162);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\51')))){
r37fcp(C,((T0*)ms37_1962710217));
}
/*FI]*/
}
/*FI]*/
R=1;
{T312*n=((T312*)se_malloc(sizeof(*n))/*24*/);
*n=M312;
r312make(n,_sp,_list,r37a_compound2(C,((T0*)ms37_78263),((T0*)ms20_3175)));
_e_debug=((T0*)n);
}
(/*SFN*/C->_last_instruction)=_e_debug;
}
/*FI]*/
return R;
}


void r37a_indexing(T37* C){
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_10315778))){
while (!(!(r37a_index_clause(C))))
{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
}
/*FI]*/
}


T6 r37a_rename_pair(T37* C){
T6 R=0;
T2 _c=0;
T2 _l=0;
T0* _rename_pair=NULL;
T0* _name1=NULL;
_l=(/*RF2*/(C)->_line/*148*/);
_c=(/*RF2*/(C)->_column/*144*/);
/*[IF*/
if(r37a_feature_name(C)){
_name1=(/*RF2*/(C)->_last_feature_name/*80*/);
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_600))){
/*[IF*/
if(r37a_feature_name(C)){
R=1;
{T189*n=((T189*)se_malloc(sizeof(*n))/*8*/);
*n=M189;
r189make(n,_name1,(/*RF2*/(C)->_last_feature_name/*80*/));
_rename_pair=((T0*)n);
}
r73add_rename((T73*)((/*RF2*/(C)->_last_parent/*120*/)),_rename_pair);
}
else{
r37fcp(C,((T0*)ms37_1093012317));
}
/*FI]*/
}
else{
r37go_back_at(C,_l,_c);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_manifest_constant(T37* C){
T6 R=0;
/*[IF*/
if(r37a_boolean_constant(C)){
(/*SFN*/C->_last_manifest_constant)=(/*RF2*/(C)->_last_boolean_constant/*56*/);
R=1;
}
 else if(r37a_character_constant(C)){
(/*SFN*/C->_last_manifest_constant)=(/*RF2*/(C)->_last_character_constant/*60*/);
R=1;
}
 else if(r37a_manifest_string(C)){
(/*SFN*/C->_last_manifest_constant)=(/*RF2*/(C)->_last_manifest_string/*116*/);
R=1;
}
 else if(r37a_bit_constant(C)){
(/*SFN*/C->_last_manifest_constant)=(/*RF2*/(C)->_last_bit_constant/*52*/);
R=1;
}
 else if(r37a_real_constant(C)){
(/*SFN*/C->_last_manifest_constant)=(/*RF2*/(C)->_last_real_constant/*124*/);
R=1;
}
 else if(r37a_integer_constant(C)){
(/*SFN*/C->_last_manifest_constant)=(/*RF2*/(C)->_last_integer_constant/*100*/);
R=1;
}
/*FI]*/
return R;
}


T6 r37a_creation(T37* C){
T6 R=0;
T0* _call=NULL;
T0* _procedure_name=NULL;
T0* _writable=NULL;
T0* _type=NULL;
T104 _sp={NULL,0};
/*[IF*/
if(r37skip1(C,((T3)'\41'))){
R=1;
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_type(C)){
_type=(/*RF2*/(C)->_last_type/*128*/);
/*[IF*/
if(X62is_anchored(_type)){
{T104 se_tmp0;
r37warning((*(se_tmp0=X62start_position(_type),&se_tmp0)),((T0*)ms37_1697171302));
}
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\41')))){
r37fcp(C,((T0*)ms37_586311386));
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\41'))){
}
else{
r37fcp(C,((T0*)ms37_375534514));
}
/*FI]*/
_writable=r37mandatory_writable(C);
/*[IF*/
if(r37skip1(C,((T3)'\56'))){
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
_procedure_name=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\50'))){
_call=r37to_proc_call(C,_writable,_procedure_name,r37a_actuals(C));
}
else{
{T166*n=((T166*)se_malloc(sizeof(*n))/*16*/);
*n=M166;
r166make(n,_writable,_procedure_name);
_call=((T0*)n);
}
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_332623945));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((_type)==((void*)(NULL)))&&((_call)==((void*)(NULL)))){
{T344*n=((T344*)se_malloc(sizeof(*n))/*20*/);
*n=M344;
r344make(n,_sp,_writable);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
 else if(((_type)!=((void*)(NULL)))&&((_call)==((void*)(NULL)))){
{T347*n=((T347*)se_malloc(sizeof(*n))/*24*/);
*n=M347;
r347make(n,_sp,_type,_writable);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
 else if(((_type)==((void*)(NULL)))&&((_call)!=((void*)(NULL)))){
{T349*n=((T349*)se_malloc(sizeof(*n))/*28*/);
*n=M349;
r349make(n,_sp,_writable,_call);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
else{
{T351*n=((T351*)se_malloc(sizeof(*n))/*32*/);
*n=M351;
r351make(n,_sp,_type,_writable,_call);
(/*SFN*/C->_last_instruction)=((T0*)n);
}
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_identifier2(T37* C){
T6 R=0;
T6 _style_warning=0;
T6 _may_be_a_keyword=0;
T6 _stop=0;
T2 _backward_column=0;
/*[IF*/
if(r3is_letter((/*RF2*/(C)->_cc/*156*/))){
_backward_column=(/*RF2*/(C)->_column/*144*/);
_may_be_a_keyword=1;
{T104 se_tmp1;
T211 se_tmp0;
r211reset(&((/*RF2*/(C)->_tmp_name/*24*/)),(*(se_tmp1=r37pos(C,(/*RF2*/(C)->_line/*148*/),_backward_column),&se_tmp1)));
}
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
while (!(_stop))
{
r37next_char(C);
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_cc/*156*/);
switch(z1){
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
_style_warning=1;
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 95:
_may_be_a_keyword=0;
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
default:;
_stop=1;
}
}/*INSPECT]*/
}
{T211 se_tmp0;
/*[IF*/
if((_may_be_a_keyword)&&(r211isa_keyword(&((/*RF2*/(C)->_tmp_name/*24*/))))){
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)(((T0*)ms211_1362370015)))->_storage/*0*/))[0]/*)*/;
}
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_column)=_backward_column;
}
}
else{
{T211 se_tmp1;
T211 se_tmp0;
R=1;
}
{T211 se_tmp1;
T211 se_tmp0;
r37skip_comments(C);
}
{T211 se_tmp1;
T211 se_tmp0;
/*[IF*/
if(_style_warning){
{T211 se_tmp1;
T211 se_tmp0;
/*[IF*/
if(!((/*RF2*/(C)->_no_style_warning/*1*/))){
{T211 se_tmp3;
T104 se_tmp2;
T211 se_tmp1;
T211 se_tmp0;
r37warning((/*RF2*/((/*RF2*/(C)->_tmp_name/*24*/))._start_position/*0*/),((T0*)ms37_277917932));
}
}
/*FI]*/
}
}
/*FI]*/
}
}
/*FI]*/
}
}
/*FI]*/
return R;
}


T6 r37a_identifier1(T37* C){
T6 R=0;
T6 _stop=0;
T2 _backward_column=0;
/*[IF*/
if(r3is_letter((/*RF2*/(C)->_cc/*156*/))){
_backward_column=(/*RF2*/(C)->_column/*144*/);
{T104 se_tmp1;
T211 se_tmp0;
r211reset(&((/*RF2*/(C)->_tmp_name/*24*/)),(*(se_tmp1=r37pos(C,(/*RF2*/(C)->_line/*148*/),_backward_column),&se_tmp1)));
}
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=r3to_lower((/*RF2*/(C)->_cc/*156*/));
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
while (!(_stop))
{
r37next_char(C);
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_cc/*156*/);
switch(z1){
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 95:
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=r3to_lower((/*RF2*/(C)->_cc/*156*/));
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
default:;
_stop=1;
}
}/*INSPECT]*/
}
{T211 se_tmp0;
/*[IF*/
if(r211isa_keyword(&((/*RF2*/(C)->_tmp_name/*24*/)))){
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)(((T0*)ms211_1362370015)))->_storage/*0*/))[0]/*)*/;
}
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_column)=_backward_column;
}
}
else{
{T211 se_tmp1;
T211 se_tmp0;
R=1;
}
{T211 se_tmp1;
T211 se_tmp0;
r37skip_comments(C);
}
}
/*FI]*/
}
}
/*FI]*/
return R;
}


T6 r37a_inspect(T37* C){
T6 R=0;
T0* _ec=NULL;
T0* _i=NULL;
T104 _spec={NULL,0};
T104 _sp={NULL,0};
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_2073386))){
R=1;
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_expression(C)){
(/*SFN*/C->_last_expression)=X126add_comment((/*RF2*/(C)->_last_expression/*72*/),r37get_comment(C));
}
else{
r37fcp(C,((T0*)ms37_1898638542));
}
/*FI]*/
{T325*n=((T325*)se_malloc(sizeof(*n))/*36*/);
*n=M325;
r325make(n,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_i=((T0*)n);
}
while (!(!(r37a_when_part(C,_i))))
{
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16001))){
{T104 se_tmp0;
_spec=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
_ec=r37a_compound2(C,((T0*)ms37_188494264),((T0*)ms20_3175));
r325set_else_compound(((T325*)_i),_spec,_ec);
}
 else if(!(r37a_keyword(C,((T0*)ms20_3175)))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1181926797);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
(/*SFN*/C->_last_instruction)=_i;
}
/*FI]*/
return R;
}


T6 r37a_e10(T37* C){
T6 R=0;
/*[IF*/
if(r37a_strip(C)){
R=1;
}
 else if(r37skip1(C,((T3)'\50'))){
R=1;
/*[IF*/
if(r37a_expression(C)){
/*[IF*/
if(r37skip1(C,((T3)'\51'))){
r37a_r10(C,0,(/*RF2*/(C)->_last_expression/*72*/),NULL,NULL);
}
else{
r37fcp(C,((T0*)ms37_732257893));
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_2060176323));
}
/*FI]*/
}
 else if(r37a_manifest_constant(C)){
(/*SFN*/C->_last_expression)=(/*RF2*/(C)->_last_manifest_constant/*112*/);
R=1;
/*[IF*/
if(r37skip1(C,((T3)'\56'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1351360066);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
r37a_after_a_dot(C,0,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
}
 else if(r37a_precursor(C,0)){
R=1;
}
 else if(r37a_identifier(C)){
R=1;
/*[IF*/
if(((((r37a_result(C))||(r37a_current(C)))||(r37a_void(C)))||(r37a_local_variable(C)))||(r37a_argument(C))){
r37a_r10(C,0,(/*RF2*/(C)->_last_expression/*72*/),NULL,NULL);
}
else{
r37a_function_call(C);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_base_class_name(T37* C){
T6 R=0;
T6 _do_warning=0;
T2 _c=0;
T2 _state=0;
/*[IF*/
if(r3is_letter((/*RF2*/(C)->_cc/*156*/))){
/*[IF*/
if((((unsigned)((/*RF2*/(C)->_cc/*156*/)))>=((unsigned)(((T3)'a'))))){
_do_warning=1;
(/*SFN*/C->_cc)=r3to_upper((/*RF2*/(C)->_cc/*156*/));
}
/*FI]*/
_c=(/*RF2*/(C)->_column/*144*/);
{T104 se_tmp1;
T211 se_tmp0;
r211reset(&((/*RF2*/(C)->_tmp_name/*24*/)),(*(se_tmp1=r37pos(C,(/*RF2*/(C)->_line/*148*/),_c),&se_tmp1)));
}
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
while (!((_state)>(0)))
{
r37next_char(C);
/*[INSPECT*/
{int z1=(/*RF2*/(C)->_cc/*156*/);
switch(z1){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 65:
case 66:
case 67:
case 68:
case 69:
case 70:
case 71:
case 72:
case 73:
case 74:
case 75:
case 76:
case 77:
case 78:
case 79:
case 80:
case 81:
case 82:
case 83:
case 84:
case 85:
case 86:
case 87:
case 88:
case 89:
case 90:
case 95:
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 106:
case 107:
case 108:
case 109:
case 110:
case 111:
case 112:
case 113:
case 114:
case 115:
case 116:
case 117:
case 118:
case 119:
case 120:
case 121:
case 122:
_do_warning=1;
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=r3to_upper((/*RF2*/(C)->_cc/*156*/));
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
break;
default:;
_state=1;
}
}/*INSPECT]*/
}
{T211 se_tmp0;
/*[IF*/
if(r211isa_keyword(&((/*RF2*/(C)->_tmp_name/*24*/)))){
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_cc)=/*(IRF4.6first*/((/*RF2*/((T7*)(((T0*)ms211_1362370015)))->_storage/*0*/))[0]/*)*/;
}
{T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_column)=_c;
}
}
else{
{T211 se_tmp1;
T211 se_tmp0;
R=1;
}
{T211 se_tmp1;
T211 se_tmp0;
r37skip_comments(C);
}
{T211 se_tmp1;
T211 se_tmp0;
/*[IF*/
if(_do_warning){
{T211 se_tmp3;
T104 se_tmp2;
T211 se_tmp1;
T211 se_tmp0;
r37warning((/*RF2*/((/*RF2*/(C)->_tmp_name/*24*/))._start_position/*0*/),((T0*)ms37_347705622));
}
}
/*FI]*/
}
{T211 se_tmp4;
T211 se_tmp3;
T104 se_tmp2;
T211 se_tmp1;
T211 se_tmp0;
(/*SFN*/C->_last_class_name)=r211to_class_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
}
/*FI]*/
}
}
/*FI]*/
return R;
}


T6 r37a_argument(T37* C){
T6 R=0;
T2 _rank=0;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*15*/))!=((void*)(NULL))){
{T211 se_tmp0;
_rank=r121rank_of((T121*)((/*RF2*/(C)->_arguments/*15*/)),r211aliased_string(&((/*RF2*/(C)->_tmp_name/*24*/))));
}
/*[IF*/
if((_rank)>(0)){
{T211 se_tmp0;
(/*SFN*/C->_last_expression)=r211to_argument_name2(&((/*RF2*/(C)->_tmp_name/*24*/)),(/*RF2*/(C)->_arguments/*15*/),_rank);
}
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r37parse_run_type(T37* C){
T0* R=NULL;
/*[IF*/
if(r37a_class_type(C)){
R=(/*RF2*/(C)->_last_class_type/*68*/);
}
else{
r37fcp(C,((T0*)ms37_543076045));
}
/*FI]*/
return R;
}


T6 r37a_type(T37* C){
T6 R=0;
T0* _argument_name2=NULL;
T104 _sp={NULL,0};
R=1;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16761))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_infix(C)){
{T352*n=((T352*)se_malloc(sizeof(*n))/*32*/);
*n=M352;
r352make(n,_sp,(/*RF2*/(C)->_last_infix/*92*/));
(/*SFN*/C->_last_type)=((T0*)n);
}
}
 else if(r37a_prefix(C)){
{T352*n=((T352*)se_malloc(sizeof(*n))/*32*/);
*n=M352;
r352make(n,_sp,(/*RF2*/(C)->_last_prefix/*96*/));
(/*SFN*/C->_last_type)=((T0*)n);
}
}
 else if(r37a_identifier(C)){
/*[IF*/
if(r37a_current(C)){
{T354*n=((T354*)se_malloc(sizeof(*n))/*24*/);
*n=M354;
/*[IRF3.3make*/((((T354*)(n)))->_start_position)=(_sp);
/*]*/
(/*SFN*/C->_last_type)=((T0*)n);
}
}
 else if(r37a_argument(C)){
_argument_name2=(/*RF2*/(C)->_last_expression/*72*/);
if(NULL!=(_argument_name2)){
switch(((T0*)_argument_name2)->id){
case 275:
break;
default:
_argument_name2=NULL;
}
}{T355*n=((T355*)se_malloc(sizeof(*n))/*32*/);
*n=M355;
r355make(n,_sp,_argument_name2);
(/*SFN*/C->_last_type)=((T0*)n);
}
}
else{
{T211 se_tmp0;
{T352*n=((T352*)se_malloc(sizeof(*n))/*32*/);
*n=M352;
r352make(n,_sp,r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/))));
(/*SFN*/C->_last_type)=((T0*)n);
}
}
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_1176245553));
}
/*FI]*/
}
 else if(r37a_keyword(C,((T0*)ms20_10193105))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_class_type(C)){
{T371*n=((T371*)se_malloc(sizeof(*n))/*36*/);
*n=M371;
r371make(n,_sp,(/*RF2*/(C)->_last_class_type/*68*/));
(/*SFN*/C->_last_type)=((T0*)n);
}
}
else{
r37fcp(C,((T0*)ms37_469646655));
}
/*FI]*/
}
 else if(r37a_keyword(C,((T0*)ms21_2099))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_integer(C)){
{T372*n=((T372*)se_malloc(sizeof(*n))/*28*/);
*n=M372;
r372make(n,_sp,(/*RF2*/(C)->_last_integer_constant/*100*/));
(/*SFN*/C->_last_type)=((T0*)n);
}
}
 else if(r37a_identifier(C)){
{T211 se_tmp0;
{T373*n=((T373*)se_malloc(sizeof(*n))/*32*/);
*n=M373;
r373make(n,_sp,r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/))));
(/*SFN*/C->_last_type)=((T0*)n);
}
}
}
else{
r37fcp(C,((T0*)ms37_2122388361));
}
/*FI]*/
}
 else if(r37a_type_formal_generic(C)){
(/*SFN*/C->_last_type)=(/*RF2*/(C)->_last_type_formal_generic/*88*/);
}
 else if(r37a_class_type(C)){
(/*SFN*/C->_last_type)=(/*RF2*/(C)->_last_class_type/*68*/);
}
else{
R=0;
}
/*FI]*/
return R;
}


T6 r37skip1unless2(T37* C,T3 a1,T3 a2){
T6 R=0;
(/*SFN*/C->_start_line)=(/*RF2*/(C)->_line/*148*/);
(/*SFN*/C->_start_column)=(/*RF2*/(C)->_column/*144*/);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(a1)){
r37next_char(C);
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(a2)){
(/*SFN*/C->_cc)=a1;
(/*SFN*/C->_column)=(/*RF2*/(C)->_start_column/*140*/);
}
else{
R=1;
r37skip_comments(C);
}
/*FI]*/
}
/*FI]*/
return R;
}


T6 r37a_infix(T37* C){
T6 R=0;
T104 _sp={NULL,0};
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_82570))){
R=1;
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\42'))){
r37next_char(C);
}
else{
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1284361566);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
/*[IF*/
if(r37a_binary(C,_sp)){
(/*SFN*/C->_last_infix)=(/*RF2*/(C)->_last_binary/*48*/);
}
 else if(r37a_free_operator(C)){
{T211 se_tmp0;
(/*SFN*/C->_last_infix)=r211to_infix_name(&((/*RF2*/(C)->_tmp_name/*24*/)),_sp);
}
}
else{
r37fcp(C,((T0*)ms37_844703215));
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\42')))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_431394186a);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r37a_procedure_call(T37* C){
T0* _implicit_current=NULL;
T0* _sfn=NULL;
{T211 se_tmp0;
_sfn=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
{T104 se_tmp0;
{T169*n=((T169*)se_malloc(sizeof(*n))/*16*/);
*n=M169;
/*[IRF3.3make*/((((T169*)(n)))->_start_position)=((/*RF2*/(((T143*)_sfn))->_start_position/*4*/));
/*]*/
_implicit_current=((T0*)n);
}
}
r37a_r10(C,1,_implicit_current,_sfn,r37a_actuals(C));
}


T6 r37a_type_formal_generic(T37* C){
T6 R=0;
T2 _rank=0;
T0* _cn=NULL;
T0* _fga=NULL;
/*[IF*/
if(((/*RF2*/(C)->_formal_generic_list/*9*/))!=((void*)(NULL))){
_rank=1;
while (!((R)||((_rank)>(/*(IRF4.6count*/r375count(((T375*)((/*RF2*/((T193*)((/*RF2*/(C)->_formal_generic_list/*9*/)))->_list/*8*/))))/*)*/))))
{
_fga=/*(IRF4.6item*/r375item(((T375*)((/*RF2*/((T193*)((/*RF2*/(C)->_formal_generic_list/*9*/)))->_list/*8*/))),_rank)/*)*/;
/*[IF*/
if(r37a_keyword(C,(/*RF2*/((T77*)((/*RF2*/(((T374*)_fga))->_name/*0*/)))->_to_string/*8*/))){
{T104 se_tmp0;
{T77*n=((T77*)se_malloc(sizeof(*n))/*12*/);
*n=M77;
r77make(n,(/*RF2*/((T77*)((/*RF2*/(((T374*)_fga))->_name/*0*/)))->_to_string/*8*/),(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
_cn=((T0*)n);
}
}
{T376*n=((T376*)se_malloc(sizeof(*n))/*40*/);
*n=M376;
r376make(n,_cn,_fga,_rank);
(/*SFN*/C->_last_type_formal_generic)=((T0*)n);
}
R=1;
}
/*FI]*/
_rank=(_rank)+(1);
}
}
/*FI]*/
return R;
}


T0* r37parse_c_name(T37* C){
T0* R=NULL;
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,32);
R=((T0*)n);
}
while (!(r3is_separator((/*RF2*/(C)->_cc/*156*/))))
{
r7extend(((T7*)R),(/*RF2*/(C)->_cc/*156*/));
r37next_char(C);
}
r37skip_comments(C);
return R;
}


T0* r37a_external(T37* C){
T0* R=NULL;
T0* _l=NULL;
T0* _tag=NULL;
/*[IF*/
if(!(r37skip1(C,((T3)'\42')))){
r37fcp(C,((T0*)ms37_937061724));
}
/*FI]*/
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,24);
_tag=((T0*)n);
}
while (!(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\42'))))
{
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\45'))){
r37next_char(C);
}
/*FI]*/
r7extend(((T7*)_tag),(/*RF2*/(C)->_cc/*156*/));
r37next_char(C);
}
/*[IF*/
if(r7is_equal(ms37_1071750288,_tag)){
{T385*n=((T385*)se_malloc(sizeof(*n))/*8*/);
*n=M385;
/*[IRF3.3make*/((((T385*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_441048635,_tag)){
{T385*n=((T385*)se_malloc(sizeof(*n))/*8*/);
*n=M385;
/*[IRF3.3make*/((((T385*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_630883461,_tag)){
{T386*n=((T386*)se_malloc(sizeof(*n))/*8*/);
*n=M386;
/*[IRF3.3make*/((((T386*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_1724356412,_tag)){
{T387*n=((T387*)se_malloc(sizeof(*n))/*8*/);
*n=M387;
/*[IRF3.3make*/((((T387*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_1636436113,_tag)){
{T388*n=((T388*)se_malloc(sizeof(*n))/*8*/);
*n=M388;
/*[IRF3.3make*/((((T388*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_881601516,_tag)){
{T389*n=((T389*)se_malloc(sizeof(*n))/*8*/);
*n=M389;
/*[IRF3.3make*/((((T389*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_2159,_tag)){
{T385*n=((T385*)se_malloc(sizeof(*n))/*8*/);
*n=M385;
/*[IRF3.3make*/((((T385*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
r37wcpefnc(C,((T0*)ms37_2159a),((T0*)ms20_1071750288));
}
 else if(r7is_equal(ms37_2177,_tag)){
{T386*n=((T386*)se_malloc(sizeof(*n))/*8*/);
*n=M386;
/*[IRF3.3make*/((((T386*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_11302,_tag)){
{T387*n=((T387*)se_malloc(sizeof(*n))/*8*/);
*n=M387;
/*[IRF3.3make*/((((T387*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
r37wcpefnc(C,((T0*)ms37_11302a),((T0*)ms37_1724356412a));
}
 else if(r7is_equal(ms37_432,_tag)){
{T389*n=((T389*)se_malloc(sizeof(*n))/*8*/);
*n=M389;
/*[IRF3.3make*/((((T389*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
r37wcpefnc(C,((T0*)ms37_432a),((T0*)ms37_881601516a));
}
 else if(r7is_equal(ms37_816849367,_tag)){
{T390*n=((T390*)se_malloc(sizeof(*n))/*8*/);
*n=M390;
/*[IRF3.3make*/((((T390*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7is_equal(ms37_210743979,_tag)){
{T392*n=((T392*)se_malloc(sizeof(*n))/*8*/);
*n=M392;
/*[IRF3.3make*/((((T392*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7has_prefix(((T7*)_tag),((T0*)ms37_1933))){
{T89*n=((T89*)se_malloc(sizeof(*n))/*16*/);
*n=M89;
/*[IRF3.3make*/((((T89*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
 else if(r7has_prefix(((T7*)_tag),((T0*)ms37_67))){
{T388*n=((T388*)se_malloc(sizeof(*n))/*8*/);
*n=M388;
/*[IRF3.3make*/((((T388*)(n)))->_external_tag)=(_tag);
/*]*/
_l=((T0*)n);
}
}
else{
r37fcp(C,((T0*)ms37_248250267));
}
/*FI]*/
/*[IF*/
if(!(r37skip1(C,((T3)'\42')))){
r37fcp(C,((T0*)ms37_937061724));
}
/*FI]*/
{T292 se_tmp0;
R=r292to_external_routine(&((/*RF2*/(C)->_tmp_feature/*157*/)),_l,r37a_alias(C));
}
return R;
}


T6 r37end_of_input(T37* C){
T6 R=0;
R=((/*RF2*/(C)->_cc/*156*/))==(((T3)'\0'));
return R;
}


void r37err_exp(T104 a1,T0* a2){
T0* _msg=NULL;
{T7*n=((T7*)se_malloc(sizeof(*n))/*12*/);
*n=M7;
r7make(n,0);
_msg=((T0*)n);
}
r7append(((T7*)_msg),((T0*)ms37_562075114));
r7append(((T7*)_msg),a2);
r7append(((T7*)_msg),((T0*)ms37_445504446));
r82add_position(a1);
r37fatal_error(_msg);
}


T6 r37a_e0(T37* C){
T6 R=0;
R=r37a_e1(C);
/*[IF*/
if(R){
r37a_r1(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_e1(T37* C){
T6 R=0;
R=r37a_e2(C);
/*[IF*/
if(R){
r37a_r2(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}
T0*oBC37faof=NULL;


T6 r37a_e2(T37* C){
T6 R=0;
R=r37a_e3(C);
/*[IF*/
if(R){
r37a_r3(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_e3(T37* C){
T6 R=0;
R=r37a_e4(C);
/*[IF*/
if(R){
r37a_r4(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_e4(T37* C){
T6 R=0;
R=r37a_e5(C);
/*[IF*/
if(R){
r37a_r5(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_boolean_constant(T37* C){
T6 R=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_18036))){
{T104 se_tmp0;
{T259*n=((T259*)se_malloc(sizeof(*n))/*12*/);
*n=M259;
/*[IRF3.3make*/((((T259*)(n)))->_start_position)=((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
/*]*/
(/*SFN*/C->_last_boolean_constant)=((T0*)n);
}
}
R=1;
}
 else if(r37a_keyword(C,((T0*)ms20_79251))){
{T104 se_tmp0;
{T260*n=((T260*)se_malloc(sizeof(*n))/*12*/);
*n=M260;
/*[IRF3.3make*/((((T260*)(n)))->_start_position)=((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
/*]*/
(/*SFN*/C->_last_boolean_constant)=((T0*)n);
}
}
R=1;
}
/*FI]*/
return R;
}


T6 r37a_e5(T37* C){
T6 R=0;
R=r37a_e6(C);
/*[IF*/
if(R){
r37a_r6(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_e6(T37* C){
T6 R=0;
R=r37a_e7(C);
/*[IF*/
if(R){
r37a_r7(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_e7(T37* C){
T6 R=0;
R=r37a_e8(C);
/*[IF*/
if(R){
r37a_r8(C,(/*RF2*/(C)->_last_expression/*72*/));
}
/*FI]*/
return R;
}


T6 r37a_e8(T37* C){
T6 R=0;
T104 _sp={NULL,0};
T0* _prefix_freeop=NULL;
T0* _op=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_3421))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e8(C)){
{T240*n=((T240*)se_malloc(sizeof(*n))/*16*/);
*n=M240;
r240make(n,_sp,(/*RF2*/(C)->_last_expression/*72*/));
(/*SFN*/C->_last_expression)=((T0*)n);
}
R=1;
}
else{
r37err_exp(_sp,((T0*)ms21_3421));
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\53'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e8(C)){
{T241*n=((T241*)se_malloc(sizeof(*n))/*16*/);
*n=M241;
r241make(n,_sp,(/*RF2*/(C)->_last_expression/*72*/));
(/*SFN*/C->_last_expression)=((T0*)n);
}
R=1;
}
else{
r37err_exp(_sp,((T0*)ms37_101794766));
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\55'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e8(C)){
{T242*n=((T242*)se_malloc(sizeof(*n))/*16*/);
*n=M242;
r242make(n,_sp,(/*RF2*/(C)->_last_expression/*72*/));
(/*SFN*/C->_last_expression)=((T0*)n);
}
R=1;
}
else{
r37err_exp(_sp,((T0*)ms37_105701016));
}
/*FI]*/
}
 else if(r37a_free_operator(C)){
{T211 se_tmp0;
_op=r211to_prefix_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
/*[IF*/
if(r37a_e8(C)){
{T236*n=((T236*)se_malloc(sizeof(*n))/*16*/);
*n=M236;
r236make(n,(/*RF2*/(C)->_last_expression/*72*/),_op);
_prefix_freeop=((T0*)n);
}
(/*SFN*/C->_last_expression)=_prefix_freeop;
R=1;
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms37_1331837650);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
{T104 se_tmp0;
r37err_exp((/*RF2*/(((T239*)_op))->_start_position/*4*/),(/*RF2*/(((T239*)_op))->_to_string/*12*/));
}
}
/*FI]*/
}
else{
R=r37a_e9(C);
}
/*FI]*/
return R;
}


T6 r37a_e9(T37* C){
T6 R=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_3415))){
/*[IF*/
if(!((/*RF2*/(C)->_in_ensure/*13*/))){
{T104 se_tmp0;
r37error((*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)),((T0*)ms37_1559455194));
}
}
/*FI]*/
/*[IF*/
if(r37a_e10(C)){
{T276*n=((T276*)se_malloc(sizeof(*n))/*16*/);
*n=M276;
/*[IRF3.3make*/((((T276*)(n)))->_expression)=((/*RF2*/(C)->_last_expression/*72*/));
/*]*/
(/*SFN*/C->_last_expression)=((T0*)n);
}
R=1;
}
else{
r37fcp(C,((T0*)ms37_469031018));
}
/*FI]*/
}
else{
R=r37a_e10(C);
}
/*FI]*/
return R;
}


T6 r37a_unary(T37* C){
T6 R=0;
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_3421))){
{T104 se_tmp0;
{T239*n=((T239*)se_malloc(sizeof(*n))/*20*/);
*n=M239;
r239make(n,((T0*)ms21_3421),(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_prefix)=((T0*)n);
}
}
R=1;
}
 else if(r37skip1(C,((T3)'\53'))){
{T104 se_tmp0;
{T239*n=((T239*)se_malloc(sizeof(*n))/*20*/);
*n=M239;
r239make(n,((T0*)ms21_43),(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_prefix)=((T0*)n);
}
}
R=1;
}
 else if(r37skip1(C,((T3)'\55'))){
{T104 se_tmp0;
{T239*n=((T239*)se_malloc(sizeof(*n))/*20*/);
*n=M239;
r239make(n,((T0*)ms21_45),(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_prefix)=((T0*)n);
}
}
R=1;
}
/*FI]*/
return R;
}


T6 r37a_assignment_or_call(T37* C){
T6 R=0;
/*[IF*/
if((r37skip1(C,((T3)'\50')))&&(r37a_expression(C))){
R=1;
/*[IF*/
if(r37skip1(C,((T3)'\51'))){
r37a_r10(C,1,(/*RF2*/(C)->_last_expression/*72*/),NULL,NULL);
}
else{
r37fcp(C,((T0*)ms37_867131816));
}
/*FI]*/
}
 else if(r37a_precursor(C,1)){
R=1;
}
 else if(r37a_identifier(C)){
R=1;
/*[IF*/
if(r37skip2(C,((T3)'\72'),((T3)'\75'))){
r37a_assignment_aux(C,1);
}
 else if(r37skip2(C,((T3)'\77'),((T3)'\75'))){
r37a_assignment_aux(C,0);
}
 else if((((r37a_current(C))||(r37a_result(C)))||(r37a_local_variable(C)))||(r37a_argument(C))){
r37a_r10(C,1,(/*RF2*/(C)->_last_expression/*72*/),NULL,NULL);
}
else{
r37a_procedure_call(C);
}
/*FI]*/
}
/*FI]*/
return R;
}


T0* r37a_clients(T37* C){
T0* R=NULL;
T2 _state=0;
T0* _list=NULL;
T104 _sp={NULL,0};
/*[IF*/
if(r37skip1(C,((T3)'\173'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
while (!((_state)>(3)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37a_base_class_name(C)){
{T287*n=((T287*)se_malloc(sizeof(*n))/*8*/);
*n=M287;
/*[IRF3.3make_1*/((((T287*)(n)))->_first)=((/*RF2*/(C)->_last_class_name/*64*/));
/*]*/
_list=((T0*)n);
}
_state=2;
}
 else if(r37skip1(C,((T3)'\175'))){
_state=4;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_446380143);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
else{
_state=3;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37a_base_class_name(C)){
r287add_last(((T287*)_list),(/*RF2*/(C)->_last_class_name/*64*/));
_state=2;
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_446380143);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
 else if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\175'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_331100035);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\175'));
_state=4;
}
else{
_state=3;
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r37skip1(C,((T3)'\54'))){
_state=1;
}
 else if(r37skip1(C,((T3)'\175'))){
_state=4;
}
 else if(r37a_base_class_name(C)){
{T104 se_tmp0;
r37warning((/*RF2*/((T77*)((/*RF2*/(C)->_last_class_name/*64*/)))->_start_position/*0*/),((T0*)ms37_175744316));
}
r287add_last(((T287*)_list),(/*RF2*/(C)->_last_class_name/*64*/));
}
else{
_state=3;
}
/*FI]*/
break;
default:;
r37fcp(C,((T0*)ms37_1604340919));
_state=4;
}
}/*INSPECT]*/
}
{T200*n=((T200*)se_malloc(sizeof(*n))/*12*/);
*n=M200;
r200make(n,_sp,_list);
R=((T0*)n);
}
}
else{
{T200*n=((T200*)se_malloc(sizeof(*n))/*12*/);
*n=M200;
/*[IRF3.1omitted*//*]*/
R=((T0*)n);
}
}
/*FI]*/
return R;
}


T0* r37mandatory_writable(T37* C){
T0* R=NULL;
/*[IF*/
if(r37a_identifier(C)){
/*[IF*/
if(r37a_current(C)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_last_expression/*72*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms37_824653683);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
 else if(r37a_argument(C)){
{T104 se_tmp0;
r82add_position((*(se_tmp0=X126start_position((/*RF2*/(C)->_last_expression/*72*/)),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms37_1825917546);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
 else if((r37a_result(C))||(r37a_local_variable(C))){
R=(/*RF2*/(C)->_last_expression/*72*/);
}
else{
{T211 se_tmp0;
R=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
}
/*FI]*/
}
else{
r37fcp(C,((T0*)ms37_1330069409));
}
/*FI]*/
return R;
}


void r37a_local_var_list(T37* C){
T2 _state=0;
T2 _rank=0;
T0* _list=NULL;
T0* _declaration=NULL;
T0* _name_list=NULL;
T0* _name=NULL;
while (!((_state)>(4)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
_name=r211to_local_name1(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
_state=1;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*15*/))!=((void*)(NULL))){
_rank=r121rank_of((T121*)((/*RF2*/(C)->_arguments/*15*/)),(/*RF2*/(((T271*)_name))->_to_string/*12*/));
/*[IF*/
if((_rank)>(0)){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T271*)_name))->_start_position/*4*/));
}
{T104 se_tmp0;
r37error((/*RF2*/((T123*)(/*(IRF4.6name*/r128item(((T128*)((/*RF2*/((T121*)((/*RF2*/(C)->_arguments/*15*/)))->_flat_list/*8*/))),_rank)/*)*/))->_start_position/*4*/),((T0*)ms37_432335312));
}
}
/*FI]*/
}
/*FI]*/
}
 else if((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73')))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_372047073);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=(r37skip1(C,((T3)'\54')))||(r37skip1(C,((T3)'\73')));
}
else{
_state=5;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37skip1(C,((T3)'\72'))){
/*[IF*/
if((_name_list)!=((void*)(NULL))){
r272add_last(((T272*)_name_list),_name);
_name=NULL;
}
/*FI]*/
_state=3;
}
else{
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_2047201942);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
}
else{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
}
/*FI]*/
/*[IF*/
if((_name_list)==((void*)(NULL))){
{T272*n=((T272*)se_malloc(sizeof(*n))/*20*/);
*n=M272;
r272with_capacity(n,2,1);
_name_list=((T0*)n);
}
}
/*FI]*/
r272add_last(((T272*)_name_list),_name);
_name=NULL;
_state=2;
}
/*FI]*/
break;
case 2:
/*[IF*/
if(r37a_identifier(C)){
{T211 se_tmp0;
_name=r211to_local_name1(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
_state=1;
/*[IF*/
if(((/*RF2*/(C)->_arguments/*15*/))!=((void*)(NULL))){
_rank=r121rank_of((T121*)((/*RF2*/(C)->_arguments/*15*/)),(/*RF2*/(((T271*)_name))->_to_string/*12*/));
/*[IF*/
if((_rank)>(0)){
{T104 se_tmp0;
r82add_position((/*RF2*/(((T271*)_name))->_start_position/*4*/));
}
{T104 se_tmp0;
r82add_position((/*RF2*/((T123*)(/*(IRF4.6name*/r128item(((T128*)((/*RF2*/((T121*)((/*RF2*/(C)->_arguments/*15*/)))->_flat_list/*8*/))),_rank)/*)*/))->_start_position/*4*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms37_432335312);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_error((T82*)(oBC19eh));
}
/*FI]*/
}
/*FI]*/
}
 else if((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\73')))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_372047073);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=(r37skip1(C,((T3)'\54')))||(r37skip1(C,((T3)'\73')));
}
else{
_state=6;
}
/*FI]*/
break;
case 3:
/*[IF*/
if(r37a_type(C)){
/*[IF*/
if((_name_list)!=((void*)(NULL))){
{T403*n=((T403*)se_malloc(sizeof(*n))/*8*/);
*n=M403;
r403make(n,_name_list,(/*RF2*/(C)->_last_type/*128*/));
_declaration=((T0*)n);
}
_name_list=NULL;
}
else{
{T407*n=((T407*)se_malloc(sizeof(*n))/*8*/);
*n=M407;
r407make(n,_name,(/*RF2*/(C)->_last_type/*128*/));
_declaration=((T0*)n);
}
_name=NULL;
}
/*FI]*/
/*[IF*/
if((_list)==((void*)(NULL))){
{T398*n=((T398*)se_malloc(sizeof(*n))/*20*/);
*n=M398;
r398with_capacity(n,2,1);
_list=((T0*)n);
}
}
/*FI]*/
X398add_last(_list,_declaration);
_state=4;
}
else{
_state=6;
}
/*FI]*/
break;
default:;
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_2047202317);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\54'));
_state=0;
}
else{
(/*SFN*/C->_ok)=r37skip1(C,((T3)'\73'));
_state=0;
}
/*FI]*/
}
}/*INSPECT]*/
}
/*[IF*/
if((_state)==(6)){
r37fcp(C,((T0*)ms37_1967846638));
}
 else if((_list)!=((void*)(NULL))){
{T171*n=((T171*)se_malloc(sizeof(*n))/*12*/);
*n=M171;
/*[IRF3.6make*/{T171* C1=n;
T0* b1=_list;
r171declaration_list_make(C1,b1);
}/*]*/
(/*SFN*/C->_local_vars)=((T0*)n);
}
{T292 se_tmp0;
/*[IRF3.3set_local_vars*/((((T292*)(&((/*RF2*/(C)->_tmp_feature/*157*/)))))->_local_vars)=((/*RF2*/(C)->_local_vars/*19*/));
/*]*/
}
}
/*FI]*/
}


void r37to_frozen_feature_name(T37* C){
{T409*n=((T409*)se_malloc(sizeof(*n))/*8*/);
*n=M409;
/*[IRF3.3make*/((((T409*)(n)))->_feature_name)=((/*RF2*/(C)->_last_feature_name/*80*/));
/*]*/
(/*SFN*/C->_last_feature_name)=((T0*)n);
}
}


void r37disconnect(T37* C){
(/*SFN*/C->_is_running)=0;
/*[IRF3.3unset_is_ready*/((((T178*)((T178*)(oBC19parser_buffer))))->_path)=(NULL);
/*]*/
}


T6 r37a_integer_constant(T37* C){
T6 R=0;
/*[IF*/
if(r37skip1(C,((T3)'\53'))){
/*[IF*/
if(r37a_integer(C)){
R=1;
}
else{
r37fcp(C,((T0*)ms20_752996481));
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\55'))){
/*[IF*/
if(r37a_integer(C)){
r265unary_minus((T265*)((/*RF2*/(C)->_last_integer_constant/*100*/)));
R=1;
}
else{
r37fcp(C,((T0*)ms20_752996481));
}
/*FI]*/
}
else{
R=r37a_integer(C);
}
/*FI]*/
return R;
}


T6 r37a_base_type(T37* C){
T6 R=0;
T0* _types=NULL;
T104 _sp={NULL,0};
R=1;
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_2104))){
{T104 se_tmp0;
{T356*n=((T356*)se_malloc(sizeof(*n))/*16*/);
*n=M356;
r356make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_53339))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(((r37skip1(C,((T3)'\133')))&&(r37a_type(C)))&&(r37skip1(C,((T3)'\135')))){
{T357*n=((T357*)se_malloc(sizeof(*n))/*28*/);
*n=M357;
r357make(n,_sp,(/*RF2*/(C)->_last_type/*128*/));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
else{
r37fcp(C,((T0*)ms37_955638361));
}
/*FI]*/
}
 else if(r37a_keyword(C,((T0*)ms21_349117293))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(((r37skip1(C,((T3)'\133')))&&(r37a_type(C)))&&(r37skip1(C,((T3)'\135')))){
{T359*n=((T359*)se_malloc(sizeof(*n))/*28*/);
*n=M359;
r359make(n,_sp,(/*RF2*/(C)->_last_type/*128*/));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
else{
r37fcp(C,((T0*)ms37_1744209811));
}
/*FI]*/
}
 else if(r37a_keyword(C,((T0*)ms21_1339128))){
{T104 se_tmp0;
{T360*n=((T360*)se_malloc(sizeof(*n))/*16*/);
*n=M360;
r360make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_33120277))){
{T104 se_tmp0;
{T362*n=((T362*)se_malloc(sizeof(*n))/*16*/);
*n=M362;
r362make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_274599))){
{T104 se_tmp0;
{T363*n=((T363*)se_malloc(sizeof(*n))/*16*/);
*n=M363;
r363make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_1447702))){
{T104 se_tmp0;
{T364*n=((T364*)se_malloc(sizeof(*n))/*16*/);
*n=M364;
r364make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_12184))){
{T104 se_tmp0;
{T365*n=((T365*)se_malloc(sizeof(*n))/*16*/);
*n=M365;
r365make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_1554777))){
{T104 se_tmp0;
{T366*n=((T366*)se_malloc(sizeof(*n))/*16*/);
*n=M366;
r366make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_12376))){
{T104 se_tmp0;
{T367*n=((T367*)se_malloc(sizeof(*n))/*16*/);
*n=M367;
r367make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_324411))){
{T104 se_tmp0;
{T368*n=((T368*)se_malloc(sizeof(*n))/*16*/);
*n=M368;
r368make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
}
 else if(r37a_keyword(C,((T0*)ms21_65574))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37skip1(C,((T3)'\133'))){
{T147*n=((T147*)se_malloc(sizeof(*n))/*16*/);
*n=M147;
r147with_capacity(n,4,1);
_types=((T0*)n);
}
while (!(r37skip1(C,((T3)'\135'))))
{
/*[IF*/
if(r37a_type(C)){
r147add_last(((T147*)_types),(/*RF2*/(C)->_last_type/*128*/));
/*[IF*/
if(!(r37skip1(C,((T3)'\54')))){
/*[IF*/
if(((/*RF2*/(C)->_cc/*156*/))!=(((T3)'\135'))){
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_175744316);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}
/*FI]*/
}
/*FI]*/
}
else{
{T104 se_tmp0;
r82add_position((*(se_tmp0=r37current_position(C),&se_tmp0)));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms37_155929078);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_fatal_error((T82*)(oBC19eh));
}
/*FI]*/
}
}
/*FI]*/
{T139*n=((T139*)se_malloc(sizeof(*n))/*45*/);
*n=M139;
r139make(n,_sp,_types);
(/*SFN*/C->_last_base_type)=((T0*)n);
}
}
else{
R=0;
}
/*FI]*/
return R;
}


T6 r37a_free_operator(T37* C){
T6 R=0;
/*[IF*/
if((((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\100')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\43'))))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\174'))))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\46')))){
R=1;
{T104 se_tmp1;
T211 se_tmp0;
r211reset(&((/*RF2*/(C)->_tmp_name/*24*/)),(*(se_tmp1=r37pos(C,(/*RF2*/(C)->_line/*148*/),(/*RF2*/(C)->_column/*144*/)),&se_tmp1)));
}
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
r37next_char(C);
while (!((((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\n')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\40'))))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\11'))))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\42')))))
{
{T211 se_tmp0;
/*[IRF3.6extend*/{T3 b1=(/*RF2*/(C)->_cc/*156*/);
{T211 se_tmp0;
r7extend((T7*)(((T0*)ms211_1362370015)),b1);
}
}/*]*/
}
r37next_char(C);
}
r37skip_comments(C);
}
/*FI]*/
return R;
}


T6 r37a_constant(T37* C){
T6 R=0;
T0* _sfn=NULL;
T0* _implicit_current=NULL;
/*[IF*/
if(r37a_identifier(C)){
R=1;
{T211 se_tmp0;
_sfn=r211to_simple_feature_name(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
{T104 se_tmp0;
{T169*n=((T169*)se_malloc(sizeof(*n))/*16*/);
*n=M169;
/*[IRF3.3make*/((((T169*)(n)))->_start_position)=((/*RF2*/(((T143*)_sfn))->_start_position/*4*/));
/*]*/
_implicit_current=((T0*)n);
}
}
{T246*n=((T246*)se_malloc(sizeof(*n))/*16*/);
*n=M246;
r246make(n,_implicit_current,_sfn);
(/*SFN*/C->_last_expression)=((T0*)n);
}
}
 else if(r37a_character_constant(C)){
R=1;
(/*SFN*/C->_last_expression)=(/*RF2*/(C)->_last_character_constant/*60*/);
}
 else if(r37a_integer_constant(C)){
R=1;
(/*SFN*/C->_last_expression)=(/*RF2*/(C)->_last_integer_constant/*100*/);
}
/*FI]*/
return R;
}


void r37a_formal_generic_list(T37* C){
T2 _state=0;
T0* _constraint=NULL;
T0* _formal_generic_name=NULL;
T0* _fga=NULL;
(/*SFN*/C->_formal_generic_list)=NULL;
/*[IF*/
if(r37skip1(C,((T3)'\133'))){
{T104 se_tmp0;
{T193*n=((T193*)se_malloc(sizeof(*n))/*12*/);
*n=M193;
r193make(n,(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0)));
(/*SFN*/C->_formal_generic_list)=((T0*)n);
}
}
/*[IRF3.3set_formal_generic_list*/((((T61*)((T61*)((/*RF2*/(C)->_last_base_class/*40*/)))))->_formal_generic_list)=((/*RF2*/(C)->_formal_generic_list/*9*/));
/*]*/
while (!((_state)>(3)))
{
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[IF*/
if(r37a_base_class_name(C)){
_formal_generic_name=(/*RF2*/(C)->_last_class_name/*64*/);
_state=1;
}
else{
_state=5;
}
/*FI]*/
break;
case 1:
/*[IF*/
if(r37skip2(C,((T3)'\55'),((T3)'\76'))){
_state=3;
}
 else if((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\135')))){
{T374*n=((T374*)se_malloc(sizeof(*n))/*12*/);
*n=M374;
r374make(n,_formal_generic_name,_constraint);
_fga=((T0*)n);
}
_constraint=NULL;
r193add_last((T193*)((/*RF2*/(C)->_formal_generic_list/*9*/)),_fga);
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 44:
_state=0;
break;
default:;
_state=4;
}
}/*INSPECT]*/
(/*SFN*/C->_ok)=r37skip1(C,(/*RF2*/(C)->_cc/*156*/));
}
else{
_state=5;
}
/*FI]*/
break;
case 2:
/*[IF*/
if((((/*RF2*/(C)->_cc/*156*/))==(((T3)'\54')))||(((/*RF2*/(C)->_cc/*156*/))==(((T3)'\135')))){
{T374*n=((T374*)se_malloc(sizeof(*n))/*12*/);
*n=M374;
r374make(n,_formal_generic_name,_constraint);
_fga=((T0*)n);
}
_constraint=NULL;
r193add_last((T193*)((/*RF2*/(C)->_formal_generic_list/*9*/)),_fga);
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 44:
_state=0;
break;
default:;
_state=4;
}
}/*INSPECT]*/
(/*SFN*/C->_ok)=r37skip1(C,(/*RF2*/(C)->_cc/*156*/));
}
else{
_state=5;
}
/*FI]*/
break;
default:;
/*[IF*/
if(r37a_type_formal_generic(C)){
_constraint=(/*RF2*/(C)->_last_type_formal_generic/*88*/);
_state=2;
}
 else if(r37a_class_type(C)){
_constraint=(/*RF2*/(C)->_last_class_type/*68*/);
_state=2;
}
else{
r37fcp(C,((T0*)ms37_928941315));
_state=5;
}
/*FI]*/
}
}/*INSPECT]*/
}
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 4:
/*[IF*/
if((/*(IRF4.6count*/r375count(((T375*)((/*RF2*/((T193*)((/*RF2*/(C)->_formal_generic_list/*9*/)))->_list/*8*/))))/*)*/)==(0)){
{T104 se_tmp0;
r82add_position((/*RF2*/((T193*)((/*RF2*/(C)->_formal_generic_list/*9*/)))->_start_position/*0*/));
}
/*[IRF3.6append*/{T0* b1=((T0*)ms37_2060540980);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
r82print_as_warning((T82*)(oBC19eh));
(/*SFN*/C->_formal_generic_list)=NULL;
/*[IRF3.3set_formal_generic_list*/((((T61*)((T61*)((/*RF2*/(C)->_last_base_class/*40*/)))))->_formal_generic_list)=(NULL);
/*]*/
}
/*FI]*/
break;
default:;
}
}/*INSPECT]*/
}
/*FI]*/
}


T6 r37a_local_variable(T37* C){
T6 R=0;
T2 _rank=0;
/*[IF*/
if(((/*RF2*/(C)->_local_vars/*19*/))!=((void*)(NULL))){
{T211 se_tmp0;
_rank=r171rank_of((T171*)((/*RF2*/(C)->_local_vars/*19*/)),r211aliased_string(&((/*RF2*/(C)->_tmp_name/*24*/))));
}
/*[IF*/
if((_rank)>(0)){
{T211 se_tmp0;
(/*SFN*/C->_last_expression)=r211to_local_name2(&((/*RF2*/(C)->_tmp_name/*24*/)),(/*RF2*/(C)->_local_vars/*19*/),_rank);
}
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}


void r37wcpefnc(T37* C,T0* a1,T0* a2){
/*[IRF3.6append*/{T0* b1=((T0*)ms37_1685006358);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a1;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=((T0*)ms37_89092044);
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6append*/{T0* b1=a2;
r7append((T7*)(oBC82explanation),b1);
}/*]*/
/*[IRF3.6wcp*/{T37* C1=C;
T0* b1=((T0*)ms37_1662133290);
{T104 se_tmp0;
r37warning((*(se_tmp0=r37current_position(C1),&se_tmp0)),b1);
}
}/*]*/
}


T0* r37id_provider(void){
if(fBC19id_provider==0){fBC19id_provider=1;{
{T42*n=((T42*)se_malloc(sizeof(*n))/*4*/);
*n=M42;
oBC19id_provider=((T0*)n);
r42make(n);
}
}}
return oBC19id_provider;
}


T6 r37a_integer(T37* C){
T6 R=0;
T2 _value=0;
T2 _state=0;
T104 _sp={NULL,0};
/*[IF*/
if(r3is_digit((/*RF2*/(C)->_cc/*156*/))){
R=1;
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_line/*148*/),(/*RF2*/(C)->_column/*144*/)),&se_tmp0));
}
_value=r3value((/*RF2*/(C)->_cc/*156*/));
while (!((_state)>(7)))
{
r37next_char(C);
/*[INSPECT*/
{int z1=_state;
switch(z1){
case 0:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
_state=1;
break;
case 95:
_state=4;
break;
default:;
_state=8;
}
}/*INSPECT]*/
break;
case 1:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
_state=2;
break;
case 95:
_state=4;
break;
default:;
_state=8;
}
}/*INSPECT]*/
break;
case 2:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
_state=3;
break;
case 95:
_state=4;
break;
default:;
_state=8;
}
}/*INSPECT]*/
break;
case 3:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
break;
case 95:
r37fcp(C,((T0*)ms37_938675437));
break;
default:;
_state=8;
}
}/*INSPECT]*/
break;
case 4:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
_state=5;
break;
default:;
r37fcp(C,((T0*)ms37_938675437));
}
}/*INSPECT]*/
break;
case 5:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
_state=6;
break;
default:;
r37fcp(C,((T0*)ms37_938675437));
}
}/*INSPECT]*/
break;
case 6:
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
_value=((_value)*(10))+(r3value((/*RF2*/(C)->_cc/*156*/)));
_state=7;
break;
default:;
r37fcp(C,((T0*)ms37_938675437));
}
}/*INSPECT]*/
break;
default:;
/*[INSPECT*/
{int z2=(/*RF2*/(C)->_cc/*156*/);
switch(z2){
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
r37fcp(C,((T0*)ms37_938675437));
break;
case 95:
_state=4;
break;
default:;
_state=8;
}
}/*INSPECT]*/
}
}/*INSPECT]*/
}
/*[IF*/
if(r3is_letter((/*RF2*/(C)->_cc/*156*/))){
r37fcp(C,((T0*)ms37_314182975));
}
/*FI]*/
r37skip_comments(C);
{T265*n=((T265*)se_malloc(sizeof(*n))/*16*/);
*n=M265;
r265make(n,_value,_sp);
(/*SFN*/C->_last_integer_constant)=((T0*)n);
}
}
/*FI]*/
return R;
}


void r37a_r1(T37* C,T0* a1){
T104 _sp={NULL,0};
T0* _infix_implies=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_2067995))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e1(C)){
{T218*n=((T218*)se_malloc(sizeof(*n))/*24*/);
*n=M218;
r218make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_implies=((T0*)n);
}
r37a_r1(C,_infix_implies);
}
else{
r37error(_sp,((T0*)ms37_1078639380));
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


void r37a_r2(T37* C,T0* a1){
T104 _sp={NULL,0};
T0* _infix_xor=NULL;
T0* _infix_or=NULL;
T0* _infix_or_else=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_669))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_16001))){
/*[IF*/
if(r37a_e2(C)){
{T225*n=((T225*)se_malloc(sizeof(*n))/*24*/);
*n=M225;
r225make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_or_else=((T0*)n);
}
r37a_r2(C,_infix_or_else);
}
else{
r37err_exp(_sp,((T0*)ms21_2126626));
}
/*FI]*/
}
else{
/*[IF*/
if(r37a_e2(C)){
{T224*n=((T224*)se_malloc(sizeof(*n))/*24*/);
*n=M224;
r224make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_or=((T0*)n);
}
r37a_r2(C,_infix_or);
}
else{
r37err_exp(_sp,((T0*)ms21_669));
}
/*FI]*/
}
/*FI]*/
}
 else if(r37a_keyword(C,((T0*)ms21_3669))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e2(C)){
{T223*n=((T223*)se_malloc(sizeof(*n))/*24*/);
*n=M223;
r223make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_xor=((T0*)n);
}
r37a_r2(C,_infix_xor);
}
else{
r37err_exp(_sp,((T0*)ms21_3669));
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


void r37a_r3(T37* C,T0* a1){
T104 _sp={NULL,0};
T0* _infix_and=NULL;
T0* _infix_and_then=NULL;
/*[IF*/
if(r37a_keyword(C,((T0*)ms21_3075))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_keyword(C,((T0*)ms20_17715))){
/*[IF*/
if(r37a_e3(C)){
{T227*n=((T227*)se_malloc(sizeof(*n))/*24*/);
*n=M227;
r227make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_and_then=((T0*)n);
}
r37a_r3(C,_infix_and_then);
}
else{
r37err_exp(_sp,((T0*)ms21_9647090));
}
/*FI]*/
}
else{
/*[IF*/
if(r37a_e3(C)){
{T226*n=((T226*)se_malloc(sizeof(*n))/*24*/);
*n=M226;
r226make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_and=((T0*)n);
}
r37a_r3(C,_infix_and);
}
else{
r37err_exp(_sp,((T0*)ms21_3075));
}
/*FI]*/
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


void r37a_r4(T37* C,T0* a1){
T104 _sp={NULL,0};
T0* _call_infix=NULL;
/*[IF*/
if(r37skip1(C,((T3)'\75'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e4(C)){
{T278*n=((T278*)se_malloc(sizeof(*n))/*16*/);
*n=M278;
r278make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_call_infix=((T0*)n);
}
r37a_r4(C,_call_infix);
}
else{
r37err_exp(_sp,((T0*)ms21_61));
}
/*FI]*/
}
 else if(r37skip2(C,((T3)'\57'),((T3)'\75'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e4(C)){
{T280*n=((T280*)se_malloc(sizeof(*n))/*16*/);
*n=M280;
r280make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_call_infix=((T0*)n);
}
r37a_r4(C,_call_infix);
}
else{
r37err_exp(_sp,((T0*)ms21_296));
}
/*FI]*/
}
 else if(r37skip2(C,((T3)'\74'),((T3)'\75'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e4(C)){
{T281*n=((T281*)se_malloc(sizeof(*n))/*24*/);
*n=M281;
r281make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_call_infix=((T0*)n);
}
r37a_r4(C,_call_infix);
}
else{
r37err_exp(_sp,((T0*)ms21_361));
}
/*FI]*/
}
 else if(r37skip2(C,((T3)'\76'),((T3)'\75'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e4(C)){
{T282*n=((T282*)se_malloc(sizeof(*n))/*24*/);
*n=M282;
r282make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_call_infix=((T0*)n);
}
r37a_r4(C,_call_infix);
}
else{
r37err_exp(_sp,((T0*)ms21_371));
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\74'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e4(C)){
{T283*n=((T283*)se_malloc(sizeof(*n))/*24*/);
*n=M283;
r283make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_call_infix=((T0*)n);
}
r37a_r4(C,_call_infix);
}
else{
r37err_exp(_sp,((T0*)ms21_60));
}
/*FI]*/
}
 else if(r37skip1unless2(C,((T3)'\76'),((T3)'\76'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e4(C)){
{T284*n=((T284*)se_malloc(sizeof(*n))/*24*/);
*n=M284;
r284make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_call_infix=((T0*)n);
}
r37a_r4(C,_call_infix);
}
else{
r37err_exp(_sp,((T0*)ms21_62));
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


void r37a_r5(T37* C,T0* a1){
T104 _sp={NULL,0};
T0* _infix_minus=NULL;
T0* _infix_plus=NULL;
/*[IF*/
if(r37skip1(C,((T3)'\53'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e5(C)){
{T229*n=((T229*)se_malloc(sizeof(*n))/*24*/);
*n=M229;
r229make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_plus=((T0*)n);
}
r37a_r5(C,_infix_plus);
}
else{
r37err_exp(_sp,((T0*)ms21_43));
}
/*FI]*/
}
 else if(r37skip1(C,((T3)'\55'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e5(C)){
{T228*n=((T228*)se_malloc(sizeof(*n))/*24*/);
*n=M228;
r228make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_minus=((T0*)n);
}
r37a_r5(C,_infix_minus);
}
else{
r37err_exp(_sp,((T0*)ms21_45));
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


void r37a_r6(T37* C,T0* a1){
T104 _sp={NULL,0};
T0* _infix_div=NULL;
T0* _infix_int_rem=NULL;
T0* _infix_int_div=NULL;
T0* _infix_times=NULL;
/*[IF*/
if(r37skip1(C,((T3)'\52'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e6(C)){
{T233*n=((T233*)se_malloc(sizeof(*n))/*24*/);
*n=M233;
r233make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_times=((T0*)n);
}
r37a_r6(C,_infix_times);
}
else{
r37err_exp(_sp,((T0*)ms21_42));
}
/*FI]*/
}
 else if(r37skip2(C,((T3)'\57'),((T3)'\57'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e6(C)){
{T232*n=((T232*)se_malloc(sizeof(*n))/*24*/);
*n=M232;
r232make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_int_div=((T0*)n);
}
r37a_r6(C,_infix_int_div);
}
else{
r37err_exp(_sp,((T0*)ms21_282));
}
/*FI]*/
}
 else if(r37skip2(C,((T3)'\134'),((T3)'\134'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e6(C)){
{T231*n=((T231*)se_malloc(sizeof(*n))/*24*/);
*n=M231;
r231make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_int_rem=((T0*)n);
}
r37a_r6(C,_infix_int_rem);
}
else{
r37err_exp(_sp,((T0*)ms21_552));
}
/*FI]*/
}
 else if(r37skip1unless2(C,((T3)'\57'),((T3)'\75'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e6(C)){
{T230*n=((T230*)se_malloc(sizeof(*n))/*24*/);
*n=M230;
r230make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
_infix_div=((T0*)n);
}
r37a_r6(C,_infix_div);
}
else{
r37err_exp(_sp,((T0*)ms21_47));
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


T0* r37get_comment(T37* C){
T0* R=NULL;
R=(/*RF2*/(C)->_last_comment/*3*/);
(/*SFN*/C->_last_comment)=NULL;
return R;
}


T0* r37parse_feature_name(T37* C){
T0* R=NULL;
/*[IF*/
if(r37a_feature_name(C)){
R=(/*RF2*/(C)->_last_feature_name/*80*/);
}
else{
r37fcp(C,((T0*)ms37_958560710));
}
/*FI]*/
return R;
}


void r37a_r7(T37* C,T0* a1){
T104 _sp={NULL,0};
/*[IF*/
if(r37skip1(C,((T3)'\136'))){
{T104 se_tmp0;
_sp=(*(se_tmp0=r37pos(C,(/*RF2*/(C)->_start_line/*136*/),(/*RF2*/(C)->_start_column/*140*/)),&se_tmp0));
}
/*[IF*/
if(r37a_e7(C)){
r37a_r7(C,(/*RF2*/(C)->_last_expression/*72*/));
{T277*n=((T277*)se_malloc(sizeof(*n))/*24*/);
*n=M277;
r277make(n,a1,_sp,(/*RF2*/(C)->_last_expression/*72*/));
(/*SFN*/C->_last_expression)=((T0*)n);
}
}
else{
r37err_exp(_sp,((T0*)ms21_94));
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}


void r37a_r8(T37* C,T0* a1){
T0* _infix_freeop=NULL;
T0* _infix_name=NULL;
/*[IF*/
if(r37a_free_operator(C)){
{T211 se_tmp0;
_infix_name=r211to_infix_name_use(&((/*RF2*/(C)->_tmp_name/*24*/)));
}
/*[IF*/
if(r37a_e8(C)){
{T234*n=((T234*)se_malloc(sizeof(*n))/*24*/);
*n=M234;
r234make(n,a1,_infix_name,(/*RF2*/(C)->_last_expression/*72*/));
_infix_freeop=((T0*)n);
}
r37a_r8(C,_infix_freeop);
}
else{
{T104 se_tmp0;
r37err_exp((/*RF2*/(((T235*)_infix_name))->_start_position/*4*/),(/*RF2*/(((T235*)_infix_name))->_to_string/*12*/));
}
}
/*FI]*/
}
else{
(/*SFN*/C->_last_expression)=a1;
}
/*FI]*/
}

