/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79)      --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN -    colnet@loria.fr     --
--                 http://www.loria.fr/SmallEiffel              --
*/
#include "compile_to_c.h"


T6 r34a_e7(T34* C){
T6 R=0;
R=r34a_e8(C);
r34a_r8(C,(C)->_last_expression/*97*/);
return R;
}
/*No:EIFFEL_PARSER.last_manifest_string*/


T6 r34a_e8(T34* C){
T6 R=0;
T0* _sp=NULL;
T0* _prefix_freeop=NULL;
T0* _op=NULL;
T0* _prefix_moins=NULL;
T0* _prefix_plus=NULL;
T0* _prefix_not=NULL;
/*[IF*/
if(r34a_keyword(C,((T0*)ms14_1029))){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e8(C)){
{T145*n=malloc(sizeof(*n));
*n=M145;
r145make(n,_sp,(C)->_last_expression/*97*/);
_prefix_not=(T0*)n;
}
C->_last_expression=_prefix_not;
R=1;
}
else{
r34err_exp(_sp,((T0*)ms14_1029));
}
/*FI]*/
}
 else if(r34skip1(C,'\53')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e8(C)){
{T144*n=malloc(sizeof(*n));
*n=M144;
r144make(n,_sp,(C)->_last_expression/*97*/);
_prefix_plus=(T0*)n;
}
C->_last_expression=_prefix_plus;
R=1;
}
else{
r34err_exp(_sp,((T0*)ms34_7660));
}
/*FI]*/
}
 else if(r34skip1(C,'\55')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e8(C)){
{T143*n=malloc(sizeof(*n));
*n=M143;
r143make(n,_sp,(C)->_last_expression/*97*/);
_prefix_moins=(T0*)n;
}
C->_last_expression=_prefix_moins;
R=1;
}
else{
r34err_exp(_sp,((T0*)ms34_7680));
}
/*FI]*/
}
 else if(r34a_free_operator(C)){
_op=r109to_prefix_name((T109*)(oBC34tmp_name));
/*[IF*/
if(r34a_e8(C)){
{T139*n=malloc(sizeof(*n));
*n=M139;
r139make(n,(C)->_last_expression/*97*/,_op);
_prefix_freeop=(T0*)n;
}
C->_last_expression=_prefix_freeop;
R=1;
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms34_37044);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r34err_exp((((T142*)_op))->_start_position/*8*/,(((T142*)_op))->_to_string/*4*/);
}
/*FI]*/
}
else{
R=r34a_e9(C);
}
/*FI]*/
return R;
}


T0* r34parse_run_type(T34* C){
T0* R=NULL;
/*[IF*/
if(r34a_class_type(C)){
R=(C)->_last_class_type/*93*/;
}
else{
r34fcp(C,((T0*)ms34_25441));
}
/*FI]*/
return R;
}


T6 r34a_e9(T34* C){
T6 R=0;
T0* _e_old=NULL;
/*[IF*/
if(r34a_keyword(C,((T0*)ms13_975))){
/*[IF*/
if(!((C)->_in_ensure/*41*/)){
r34error(r34pos((C)->_start_line/*169*/,(C)->_start_column/*165*/),((T0*)ms34_146727));
}
/*FI]*/
/*[IF*/
if(r34a_e10(C)){
{T146*n=malloc(sizeof(*n));
*n=M146;
/*[IRF3.3make*/((((T146*)(n)))->_expression)=((C)->_last_expression/*97*/);
/*]*/
_e_old=(T0*)n;
}
C->_last_expression=_e_old;
R=1;
}
else{
r34fcp(C,((T0*)ms34_64096));
}
/*FI]*/
}
else{
R=r34a_e10(C);
}
/*FI]*/
return R;
}


T6 r34a_when_part(T34* C,T0* a1){
T6 R=0;
T0* _constant=NULL;
T0* _e_when=NULL;
T2 _state=0;
/*[IF*/
if(r34a_keyword(C,((T0*)ms13_1776))){
R=1;
{T233*n=malloc(sizeof(*n));
*n=M233;
r233make(n,r34pos((C)->_start_line/*169*/,(C)->_start_column/*165*/),r34get_comments(C));
_e_when=(T0*)n;
}
while (!((_state)>(3))) {
{int z1=_state;

if((0==z1)){
/*[IF*/
if(r34a_constant(C)){
_constant=(C)->_last_expression/*97*/;
_state=1;
}
 else if(r34a_keyword(C,((T0*)ms13_1764))){
/*[IF*/
if((_constant)!=((void*)(NULL))){
r233add_value(((T233*)_e_when),_constant);
}
/*FI]*/
/*[IRF3.3set_compound*/((((T233*)(((T233*)_e_when))))->_compound)=(r34a_compound1(C));
/*]*/
r232add_when(((T232*)a1),_e_when);
_state=4;
}
 else if(((C)->_cc/*24*/)==('\54')){
/*[IRF3.6wcp*/{T34* C1=C;
T0* b1=((T0*)ms34_48195);
r34warning(r34current_position(C1),b1);
}/*]*/
C->_ok=r34skip1(C,'\54');
}
else{
r34fcp(C,((T0*)ms34_22423));
_state=4;
}
/*FI]*/
}
 else 
if((1==z1)){
/*[IF*/
if(r34a_keyword(C,((T0*)ms13_1764))){
/*[IF*/
if((_constant)!=((void*)(NULL))){
r233add_value(((T233*)_e_when),_constant);
}
/*FI]*/
/*[IRF3.3set_compound*/((((T233*)(((T233*)_e_when))))->_compound)=(r34a_compound1(C));
/*]*/
r232add_when(((T232*)a1),_e_when);
_state=4;
}
 else if(r34skip2(C,'\56','\56')){
_state=2;
}
 else if(r34skip1(C,'\54')){
r233add_value(((T233*)_e_when),_constant);
_constant=NULL;
_state=0;
}
else{
r34fcp(C,((T0*)ms34_22423));
_state=4;
}
/*FI]*/
}
 else 
if((2==z1)){
/*[IF*/
if(r34a_constant(C)){
r233add_slice(((T233*)_e_when),_constant,(C)->_last_expression/*97*/);
_constant=NULL;
_state=3;
}
else{
r34fcp(C,((T0*)ms34_22423));
_state=4;
}
/*FI]*/
}
 else{/*[IF*/
if(r34skip1(C,'\54')){
_state=0;
}
 else if(r34a_keyword(C,((T0*)ms13_1764))){
/*[IRF3.3set_compound*/((((T233*)(((T233*)_e_when))))->_compound)=(r34a_compound1(C));
/*]*/
r232add_when(((T232*)a1),_e_when);
_state=4;
}
 else if(r34a_constant(C)){
_constant=(C)->_last_expression/*97*/;
r34warning(r109start_position((T109*)(oBC34tmp_name)),((T0*)ms34_9410));
_state=1;
}
else{
r34fcp(C,((T0*)ms34_22423));
_state=4;
}
/*FI]*/
}}
}
}
/*FI]*/
return R;
}


T6 r34a_argument(T34* C){
T6 R=0;
T2 _rank=0;
/*[IF*/
if(((C)->_arguments/*49*/)!=((void*)(NULL))){
_rank=r187rank_of((T187*)((C)->_arguments/*49*/),r109to_string((T109*)(oBC34tmp_name)));
/*[IF*/
if((_rank)>(0)){
C->_last_expression=r109to_argument_name2((T109*)(oBC34tmp_name),(C)->_arguments/*49*/,_rank);
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:EIFFEL_PARSER.us_character*/
/*No:EIFFEL_PARSER.end_of_text*/


void r34a_r1(T34* C,T0* a1){
T0* _sp=NULL;
T0* _infix_implies=NULL;
/*[IF*/
if(r34a_keyword(C,((T0*)ms14_9513))){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e1(C)){
{T113*n=malloc(sizeof(*n));
*n=M113;
r113make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_implies=(T0*)n;
}
r34a_r1(C,_infix_implies);
}
else{
r34error(_sp,((T0*)ms34_78732));
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r2(T34* C,T0* a1){
T0* _sp=NULL;
T0* _infix_xor=NULL;
T0* _infix_or=NULL;
T0* _infix_or_else=NULL;
/*[IF*/
if(r34a_keyword(C,((T0*)ms14_456))){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_keyword(C,((T0*)ms13_1740))){
/*[IF*/
if(r34a_e2(C)){
{T121*n=malloc(sizeof(*n));
*n=M121;
r121make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_or_else=(T0*)n;
}
r34a_r2(C,_infix_or_else);
}
else{
r34err_exp(_sp,((T0*)ms14_8316));
}
/*FI]*/
}
else{
/*[IF*/
if(r34a_e2(C)){
{T120*n=malloc(sizeof(*n));
*n=M120;
r120make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_or=(T0*)n;
}
r34a_r2(C,_infix_or);
}
else{
r34err_exp(_sp,((T0*)ms14_456));
}
/*FI]*/
}
/*FI]*/
}
 else if(r34a_keyword(C,((T0*)ms14_1053a))){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e2(C)){
{T119*n=malloc(sizeof(*n));
*n=M119;
r119make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_xor=(T0*)n;
}
r34a_r2(C,_infix_xor);
}
else{
r34err_exp(_sp,((T0*)ms14_1053a));
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r3(T34* C,T0* a1){
T0* _sp=NULL;
T0* _infix_and=NULL;
T0* _infix_and_then=NULL;
/*[IF*/
if(r34a_keyword(C,((T0*)ms14_939))){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_keyword(C,((T0*)ms13_1764))){
/*[IF*/
if(r34a_e3(C)){
{T123*n=malloc(sizeof(*n));
*n=M123;
r123make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_and_then=(T0*)n;
}
r34a_r3(C,_infix_and_then);
}
else{
r34err_exp(_sp,((T0*)ms14_10800));
}
/*FI]*/
}
else{
/*[IF*/
if(r34a_e3(C)){
{T122*n=malloc(sizeof(*n));
*n=M122;
r122make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_and=(T0*)n;
}
r34a_r3(C,_infix_and);
}
else{
r34err_exp(_sp,((T0*)ms14_939));
}
/*FI]*/
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r4(T34* C,T0* a1){
T0* _sp=NULL;
T0* _infix_gt=NULL;
T0* _infix_ge=NULL;
T0* _infix_lt=NULL;
T0* _infix_le=NULL;
T0* _infix_neq=NULL;
T0* _infix_eq=NULL;
/*[IF*/
if(r34skip1(C,'\75')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e4(C)){
{T130*n=malloc(sizeof(*n));
*n=M130;
r130make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_eq=(T0*)n;
}
r34a_r4(C,_infix_eq);
}
else{
r34err_exp(_sp,((T0*)ms14_62));
}
/*FI]*/
}
 else if(r34skip2(C,'\57','\75')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e4(C)){
{T128*n=malloc(sizeof(*n));
*n=M128;
r128make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_neq=(T0*)n;
}
r34a_r4(C,_infix_neq);
}
else{
r34err_exp(_sp,((T0*)ms14_222));
}
/*FI]*/
}
 else if(r34skip2(C,'\74','\75')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e4(C)){
{T127*n=malloc(sizeof(*n));
*n=M127;
r127make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_le=(T0*)n;
}
r34a_r4(C,_infix_le);
}
else{
r34err_exp(_sp,((T0*)ms14_248));
}
/*FI]*/
}
 else if(r34skip2(C,'\76','\75')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e4(C)){
{T125*n=malloc(sizeof(*n));
*n=M125;
r125make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_ge=(T0*)n;
}
r34a_r4(C,_infix_ge);
}
else{
r34err_exp(_sp,((T0*)ms14_252));
}
/*FI]*/
}
 else if(r34skip1(C,'\74')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e4(C)){
{T126*n=malloc(sizeof(*n));
*n=M126;
r126make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_lt=(T0*)n;
}
r34a_r4(C,_infix_lt);
}
else{
r34err_exp(_sp,((T0*)ms14_61));
}
/*FI]*/
}
 else if(r34skip1unless2(C,'\76','\76')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e4(C)){
{T124*n=malloc(sizeof(*n));
*n=M124;
r124make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_gt=(T0*)n;
}
r34a_r4(C,_infix_gt);
}
else{
r34err_exp(_sp,((T0*)ms14_63));
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r5(T34* C,T0* a1){
T0* _sp=NULL;
T0* _infix_minus=NULL;
T0* _infix_plus=NULL;
/*[IF*/
if(r34skip1(C,'\53')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e5(C)){
{T132*n=malloc(sizeof(*n));
*n=M132;
r132make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_plus=(T0*)n;
}
r34a_r5(C,_infix_plus);
}
else{
r34err_exp(_sp,((T0*)ms14_44));
}
/*FI]*/
}
 else if(r34skip1(C,'\55')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e5(C)){
{T131*n=malloc(sizeof(*n));
*n=M131;
r131make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_minus=(T0*)n;
}
r34a_r5(C,_infix_minus);
}
else{
r34err_exp(_sp,((T0*)ms14_46));
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r6(T34* C,T0* a1){
T0* _sp=NULL;
T0* _infix_div=NULL;
T0* _infix_int_rem=NULL;
T0* _infix_int_div=NULL;
T0* _infix_times=NULL;
/*[IF*/
if(r34skip1(C,'\52')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e6(C)){
{T136*n=malloc(sizeof(*n));
*n=M136;
r136make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_times=(T0*)n;
}
r34a_r6(C,_infix_times);
}
else{
r34err_exp(_sp,((T0*)ms14_43));
}
/*FI]*/
}
 else if(r34skip2(C,'\57','\57')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e6(C)){
{T135*n=malloc(sizeof(*n));
*n=M135;
r135make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_int_div=(T0*)n;
}
r34a_r6(C,_infix_int_div);
}
else{
r34err_exp(_sp,((T0*)ms34_194a));
}
/*FI]*/
}
 else if(r34skip2(C,'\134','\134')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e6(C)){
{T134*n=malloc(sizeof(*n));
*n=M134;
r134make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_int_rem=(T0*)n;
}
r34a_r6(C,_infix_int_rem);
}
else{
r34err_exp(_sp,((T0*)ms34_374a));
}
/*FI]*/
}
 else if(r34skip1unless2(C,'\57','\75')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e6(C)){
{T133*n=malloc(sizeof(*n));
*n=M133;
r133make(n,a1,_sp,(C)->_last_expression/*97*/);
_infix_div=(T0*)n;
}
r34a_r6(C,_infix_div);
}
else{
r34err_exp(_sp,((T0*)ms14_48));
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r7(T34* C,T0* a1){
T0* _sp=NULL;
/*[IF*/
if(r34skip1(C,'\136')){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,(C)->_start_line/*169*/,(C)->_start_column/*165*/);
_sp=(T0*)n;
}
/*[IF*/
if(r34a_e7(C)){
r34a_r7(C,(C)->_last_expression/*97*/);
{T194*n=malloc(sizeof(*n));
*n=M194;
r194make(n,a1,_sp,(C)->_last_expression/*97*/);
C->_last_expression=(T0*)n;
}
}
else{
r34err_exp(_sp,((T0*)ms34_95a));
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}


void r34a_r8(T34* C,T0* a1){
T0* _infix_freeop=NULL;
T0* _infix_name=NULL;
/*[IF*/
if(r34a_free_operator(C)){
_infix_name=r109to_infix_name_use((T109*)(oBC34tmp_name));
/*[IF*/
if(r34a_e8(C)){
{T137*n=malloc(sizeof(*n));
*n=M137;
r137make(n,a1,_infix_name,(C)->_last_expression/*97*/);
_infix_freeop=(T0*)n;
}
r34a_r8(C,_infix_freeop);
}
else{
r34err_exp((((T138*)_infix_name))->_start_position/*8*/,(((T138*)_infix_name))->_to_string/*4*/);
}
/*FI]*/
}
else{
C->_last_expression=a1;
}
/*FI]*/
}
/*No:EIFFEL_PARSER.fz_undefine*/
/*No:EIFFEL_PARSER.us_any*/


T6 r34a_constant(T34* C){
T6 R=0;
T0* _sfn=NULL;
T0* _implicit_current=NULL;
/*[IF*/
if(r34a_identifier(C)){
R=1;
_sfn=r109to_simple_feature_name((T109*)(oBC34tmp_name));
{T193*n=malloc(sizeof(*n));
*n=M193;
/*[IRF3.3make*/((((T193*)(n)))->_start_position)=((((T148*)_sfn))->_start_position/*8*/);
/*]*/
_implicit_current=(T0*)n;
}
{T150*n=malloc(sizeof(*n));
*n=M150;
r150make(n,_implicit_current,_sfn);
C->_last_expression=(T0*)n;
}
}
 else if(r34a_character_constant(C)){
R=1;
C->_last_expression=(C)->_last_character_constant/*85*/;
}
 else if(r34a_integer_constant(C)){
R=1;
C->_last_expression=(C)->_last_integer_constant/*129*/;
}
/*FI]*/
return R;
}
/*No:EIFFEL_PARSER.us_real*/
/*No:EIFFEL_PARSER.fz_from*/
/*No:EIFFEL_PARSER.fz_false*/
/*No:EIFFEL_PARSER.show_nb_warnings*/
/*No:EIFFEL_PARSER.local_vars*/
/*No:ASSIGNMENT.nb_errors*/


void r282c_coding1(T282* C){
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X56compile_to_c((C)->_right_side/*8*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
/*No:ASSIGNMENT.fz_cast_t0_star*/
/*No:ASSIGNMENT.fz_brhsoa*/


T0* r282start_position(T282* C){
T0* R=NULL;
R=X56start_position((C)->_left_side/*4*/);
return R;
}


T0* r282add_comment(T282* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r39count(((T39*)((((T82*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
/*AF*/else{
{T225*n=malloc(sizeof(*n));
*n=M225;
r225make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}


T0* r282right_type(T282* C){
T0* R=NULL;
R=X56result_type((C)->_right_side/*8*/);
return R;
}
/*No:ASSIGNMENT.right_side*/


void r282implicit_conversion(T282* C){
T0* _right_run_type=NULL;
T0* _left_run_type=NULL;
/*[IF*/
if((/*(IRF4.9nb_errors*/((T21*)(oBC12eh))->_nb_errors/*4*//*)*/)==(0)){
_left_run_type=X54run_type(r282left_type(C));
_right_run_type=X54run_type(r282right_type(C));
/*[IF*/
if(X54is_reference(_left_run_type)){
/*[IF*/
if(X54is_reference(_right_run_type)){
}
else{
X54used_as_reference(_right_run_type);
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(_right_run_type)){
/*[IF*/
if(X56is_void((C)->_right_side/*8*/)){
r21add_position(X56start_position((C)->_right_side/*8*/));
/*[IRF3.6append*/{T0* b1=((T0*)ms282_169026);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type(r282left_type(C),((T0*)ms282_47));
r21print_as_error((T21*)(oBC12eh));
}
else{
r282warning(X56start_position((C)->_left_side/*4*/),((T0*)ms282_56296));
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


T6 r282use_current(T282* C){
T6 R=0;
R=X56use_current((C)->_left_side/*4*/);
R=(R)||(X56use_current((C)->_right_side/*8*/));
return R;
}


void r282compile_to_c(T282* C){
T0* _right_run_type=NULL;
T0* _left_run_type=NULL;
/*[IF*/
if(r43no_check((T43*)(oBC12run_control))){
r25se_trace_ins((T25*)(oBC12cpp),r282start_position(C));
}
/*FI]*/
_left_run_type=X54run_type(r282left_type(C));
_right_run_type=X54run_type(r282right_type(C));
/*[IF*/
if(X54is_reference(_left_run_type)){
/*[IF*/
if(X54is_reference(_right_run_type)){
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IF*/
if(X56is_current((C)->_right_side/*8*/)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_1350));
/*]*/
}
/*FI]*/
X56compile_to_c((C)->_right_side/*8*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
else{
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\75';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X54to_reference(_right_run_type);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\50';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X56compile_to_c((C)->_right_side/*8*/);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
/*FI]*/
}
else{
/*[IF*/
if(X54is_reference(_right_run_type)){
r21add_position(X56start_position((C)->_left_side/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms282_174591);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
else{
/*[IF*/
if(X54is_bit(_left_run_type)){
r282bit_into_bit(C,_left_run_type,_right_run_type);
}
else{
r282c_coding1(C);
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
}


T0* r282to_runnable(T282* C,T0* a1){
T0* R=NULL;
T0* _r=NULL;
T0* _l=NULL;
_l=X56to_runnable((C)->_left_side/*4*/,a1);
/*[IF*/
if((_l)==((void*)(NULL))){
r21add_position(X56start_position((C)->_left_side/*4*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_63888);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
_r=X56to_runnable((C)->_right_side/*8*/,a1);
/*[IF*/
if((_r)==((void*)(NULL))){
r21add_position(X56start_position((C)->_right_side/*8*/));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_67592);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(!(X54is_a(X56result_type(_r),X56result_type(_l)))){
r21add_position(X56start_position(_l));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms282_17248);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((_l)==((void*)((C)->_left_side/*4*/)))&&((_r)==((void*)((C)->_right_side/*8*/)))){
R=(T0*)C;
r282implicit_conversion(C);
}
else{
{T282*n=malloc(sizeof(*n));
*n=M282;
r282make(n,_l,_r);
R=(T0*)n;
}
r282implicit_conversion(((T282*)R));
}
/*FI]*/
return R;
}
/*No:ASSIGNMENT.fz_00*/


void r282warning(T0* a1,T0* a2){
r21add_position(a1);
r21warning((T21*)(oBC12eh),a2);
}
/*No:ASSIGNMENT.fz_blhsoa*/


T6 r282is_pre_computable(T282* C){
T6 R=0;
T0* _rf6=NULL;
T0* _call=NULL;
/*[IF*/
if(X56is_result((C)->_left_side/*4*/)){
/*[IF*/
if(X56is_pre_computable((C)->_right_side/*8*/)){
_call=(C)->_right_side/*8*/;
if(NULL!=(_call))switch(((T0*)_call)->id) {
case 132: case 119: case 113: case 145: case 121: case 123: case 130: case 122: case 120: case 153: case 137: case 139: case 133: case 124: case 126: case 135: case 194: case 152: case 150: case 134: case 125: case 127: case 128: case 136: case 144: case 131: case 143: 
break;
default:
_call=NULL;
};/*[IF*/
if((_call)!=((void*)(NULL))){
_rf6=X117run_feature(_call);
if(NULL!=(_rf6))switch(((T0*)_rf6)->id) {
case 50: 
break;
default:
_rf6=NULL;
};R=(_rf6)==((void*)(NULL));
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
return R;
}


void r282collect_c_tmp(T282* C){
X56collect_c_tmp((C)->_right_side/*8*/);
}


T0* r282left_type(T282* C){
T0* R=NULL;
R=X56result_type((C)->_left_side/*4*/);
return R;
}
/*No:ASSIGNMENT.left_side*/
/*No:ASSIGNMENT.end_mark_comment*/


void r282make(T282* C,T0* a1,T0* a2){
C->_left_side=a1;
C->_right_side=a2;
}


void r282bit_into_bit(T282* C,T0* a1,T0* a2){
T0* _right=NULL;
T0* _left=NULL;
_left=a1;
if(NULL!=(_left))switch(((T0*)_left)->id) {
case 276: case 277: 
break;
default:
_left=NULL;
};_right=a2;
if(NULL!=(_right))switch(((T0*)_right)->id) {
case 276: case 277: 
break;
default:
_right=NULL;
};/*[IF*/
if(X53is_c_char(_left)){
r282c_coding1(C);
}
 else if(X53is_c_int(_left)){
r282c_coding1(C);
}
 else if(X53is_c_unsigned_ptr(_right)){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms282_5775));
/*]*/
X56mapping_c_arg((C)->_left_side/*4*/,_left);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
X56mapping_c_arg((C)->_right_side/*8*/,_right);
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\54';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_integer*/r45put_integer(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),X53space_for_variable(_left));
/*]*/
/*[IRF3.5put_character*//*[IRF3.6put_character*/{T45* C1=((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/));
T3 b1='\51';
putc(b1,((FILE*)((C1)->_output_stream/*4*/)));
}/*]*/
/*]*/
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_144));
/*]*/
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms282_6832));
/*]*/
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms282_7710));
/*]*/
X56compile_to_c((C)->_left_side/*4*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms13_644));
/*]*/
}
/*FI]*/
}
/*No:ASSIGNMENT.fz_16*/


void r282afd_check(T282* C){
X56afd_check((C)->_right_side/*8*/);
}
/*No:ASSIGNMENT.fatal_error*/


T6 r43ensure_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)>=(-3);
return R;
}
/*No:RUN_CONTROL.generating_type_used*/


T6 r43debug_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)==(1);
return R;
}
/*No:RUN_CONTROL.level_loop*/


T6 r43invariant_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)>=(-2);
return R;
}
/*No:RUN_CONTROL.trace*/
/*No:RUN_CONTROL.set_generating_type_used*/
/*No:RUN_CONTROL.root_class*/
/*No:RUN_CONTROL.level_ensure*/
/*No:RUN_CONTROL.level_require*/
/*No:RUN_CONTROL.eiffel_suffix*/
/*No:RUN_CONTROL.set_boost*/
/*No:RUN_CONTROL.set_require_check*/
/*No:RUN_CONTROL.set_invariant_check*/
/*No:RUN_CONTROL.set_loop_check*/
/*No:RUN_CONTROL.level*/


T6 r43require_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)>=(-4);
return R;
}


T6 r43loop_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)>=(-1);
return R;
}
/*No:RUN_CONTROL.level_check_all*/


T6 r43all_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)>=(0);
return R;
}
/*No:RUN_CONTROL.set_cecil_path*/
/*No:RUN_CONTROL.cecil_path*/
/*No:RUN_CONTROL.level_boost*/
/*No:RUN_CONTROL.set_all_check*/
/*No:RUN_CONTROL.set_debug_check*/


T6 r43boost(T43* C){
T6 R=0;
R=((C)->_level/*0*/)==(-6);
return R;
}
/*No:RUN_CONTROL.set_no_check*/
/*No:RUN_CONTROL.generator_used*/
/*No:RUN_CONTROL.set_trace*/
/*No:RUN_CONTROL.level_check_debug*/
/*No:RUN_CONTROL.make*/


void r43compute_root_class(T43* C,T0* a1){
T3 _c=0;
T2 _i=0;
C->_root_class=r7twin(((T7*)a1));
/*[IF*/
if(r7has_suffix((T7*)((C)->_root_class/*8*/),((T0*)ms12_300))){
r7remove_last((T7*)((C)->_root_class/*8*/),2);
}
/*FI]*/
_i=((T7*)((C)->_root_class/*8*/))->_count/*4*/;
while (!((_i)==(0))) {
_c=/*(IRF4.6item*/(((T7*)((C)->_root_class/*8*/))->_storage/*0*/)[(_i)-(1)]/*)*/;
/*[IF*/
if(r3is_letter(_c)){
_i=(_i)-(1);
}
 else if((_c)==('\137')){
_i=(_i)-(1);
}
 else if(r3is_digit(_c)){
_i=(_i)-(1);
}
else{
r7remove_first((T7*)((C)->_root_class/*8*/),_i);
_i=0;
}
/*FI]*/
}
r7to_upper((T7*)((C)->_root_class/*8*/));
}
/*No:RUN_CONTROL.set_generator_used*/
/*No:RUN_CONTROL.set_ensure_check*/


T6 r43no_check(T43* C){
T6 R=0;
R=((C)->_level/*0*/)>=(-5);
return R;
}
/*No:RUN_CONTROL.level_no*/
/*No:RUN_CONTROL.level_invariant*/
/*No:INDEX_LIST.add_last*/
/*No:INDEX_LIST.make*/
/*No:INDEX_LIST.list*/
/*No:EXPORT_ITEM.for_all*/


void r316make(T316* C,T0* a1,T0* a2){
C->_clients=a1;
C->_list=a2;
}


void r316make_all(T316* C,T0* a1){
C->_clients=a1;
C->_list=NULL;
}


T6 r316affect(T316* C,T0* a1){
T6 R=0;
/*[IF*/
if(/*(IRF4.7for_all*/((C)->_list/*4*/)==(NULL)/*)*/){
R=1;
}
else{
R=r85has((T85*)((C)->_list/*4*/),a1);
}
/*FI]*/
return R;
}
/*No:EXPORT_ITEM.list*/
/*No:EXPORT_ITEM.clients*/


T0* r64base_class(T64* C){
T0* R=NULL;
R=r22base_class((T22*)(oBC12small_eiffel),(T0*)C);
return R;
}
/*No:CLASS_NAME.start_position*/
/*No:CLASS_NAME.to_string*/


T6 r64is_subclass_of(T64* C,T0* a1){
T6 R=0;
/*[IF*/
if((((T0*)ms14_1256))==((void*)((C)->_to_string/*0*/))){
R=1;
}
 else if((((T0*)ms14_714))==((void*)((((T64*)a1))->_to_string/*0*/))){
R=1;
}
 else if((((T0*)ms14_1256))==((void*)((((T64*)a1))->_to_string/*0*/))){
}
else{
R=r63is_subclass_of((T63*)(r64base_class(C)),r64base_class(((T64*)a1)));
}
/*FI]*/
return R;
}


void r64identify(T64* C,T0* a1){
C->_to_string=r84item(a1);
}


void r64make_unknown(T64* C){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70with(n,1,1,(T0*)C);
C->_start_position=(T0*)n;
}
C->_to_string=((T0*)ms64_702);
}
/*No:CLASS_NAME.us_none*/


void r64make(T64* C,T0* a1,T0* a2){
C->_start_position=a2;
C->_to_string=r84item(a1);
}
/*No:CLASS_NAME.us_any*/
/*No:CLASS_NAME.unknown_name*/


void r310append_in(T310* C,T0* a1){
T2 _i=0;
_i=/*X311lower*/((T2)((T185*)((C)->_name_list/*4*/))->_lower/*16*/);
while (!((_i)>(/*X311upper*/((T2)((T185*)((C)->_name_list/*4*/))->_upper/*12*/)))) {
X179add_last(a1,/*X311item*/((T0*)r185item((T185*)((C)->_name_list/*4*/),_i)));
_i=(_i)+(1);
}
}
/*No:DECLARATION_GROUP.name_list*/


T2 r310count(T310* C){
T2 R=0;
R=/*X311upper*/((T2)((T185*)((C)->_name_list/*4*/))->_upper/*12*/);
return R;
}


void r310make(T310* C,T0* a1,T0* a2){
T2 _i=0;
C->_name_list=a1;
_i=/*X311upper*/((T2)((T185*)((C)->_name_list/*4*/))->_upper/*12*/);
while (!((_i)==(0))) {
/*X184set_result_type*//*[IRF3.3set_result_type*/((((T183*)((T183*)(/*X311item*/((T0*)r185item((T185*)((C)->_name_list/*4*/),_i))))))->_result_type)=(a2);
/*]*/
_i=(_i)-(1);
}
}
/*No:E_REQUIRE.set_require_else*/
/*No:E_REQUIRE.start_position*/


T0* r286check_assertion_mode(void){
T0* R=NULL;
R=((T0*)ms286_1002);
return R;
}


T6 r286is_always_true(T286* C){
T6 R=0;
T0* _assertion=NULL;
T2 _i=0;
_i=((T106*)((C)->_list/*8*/))->_upper/*8*/;
R=1;
while (!((!(R))||((_i)==(0)))) {
_assertion=r106item((T106*)((C)->_list/*8*/),_i);
R=r103is_always_true(((T103*)_assertion));
_i=(_i)-(1);
}
return R;
}


T6 r286use_current(T286* C){
T6 R=0;
T2 _i=0;
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
_i=((T106*)((C)->_list/*8*/))->_upper/*8*/;
while (!((R)||((_i)==(0)))) {
R=r103use_current((T103*)(r106item((T106*)((C)->_list/*8*/),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
return R;
}


void r286compile_to_c(T286* C){
T0* _assertion=NULL;
T6 _need_se_tmp=0;
T2 _i=0;
/*[IF*/
if(r286is_always_true(C)){
}
else{
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_51844));
/*]*/
}
else{
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_759));
/*]*/
X51c_assertion_flag((C)->_run_feature/*16*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_540));
/*]*/
X51c_assertion_flag((C)->_run_feature/*16*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_752));
/*]*/
}
/*FI]*/
_i=1;
while (!((_i)>(((T106*)((C)->_list/*8*/))->_upper/*8*/))) {
_assertion=r106item((T106*)((C)->_list/*8*/),_i);
/*[IF*/
if(r103is_always_true(((T103*)_assertion))){
}
else{
r103collect_c_tmp(((T103*)_assertion));
_need_se_tmp=r25se_tmp_open_declaration((T25*)(oBC12cpp));
/*[IRF3.3set_check_assertion_mode*/((((T25*)((T25*)(oBC12cpp))))->_check_assertion_mode)=(r286check_assertion_mode());
/*]*/
r103compile_to_c(((T103*)_assertion));
/*[IF*/
if(_need_se_tmp){
r25se_tmp_close_declaration((T25*)(oBC12cpp));
}
/*FI]*/
}
/*FI]*/
_i=(_i)+(1);
}
/*[IF*/
if(((C)->_run_feature/*16*/)==((void*)(NULL))){
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_20196));
/*]*/
}
else{
X51c_assertion_flag((C)->_run_feature/*16*/);
/*[IRF3.5put_string*/r45put_string(((T45*)(((T25*)(oBC12cpp))->_current_out/*56*/)),((T0*)ms105_2274));
/*]*/
}
/*FI]*/
}
/*FI]*/
}
/*No:E_REQUIRE.header_comment*/
/*No:E_REQUIRE.current_type*/
/*No:E_REQUIRE.clear_run_feature*/
/*No:E_REQUIRE.run_feature*/


void r286make(T286* C,T0* a1,T0* a2,T0* a3){
C->_start_position=a1;
C->_header_comment=a2;
C->_list=a3;
}


void r286make_runnable(T286* C,T0* a1,T0* a2,T0* a3){
C->_list=a1;
C->_current_type=a2;
C->_run_feature=a3;
}
/*No:E_REQUIRE.set_header_comment*/
/*No:E_REQUIRE.is_require_else*/
/*No:E_REQUIRE.empty*/


void r286afd_check(T286* C){
T2 _i=0;
/*[IF*/
if(((C)->_list/*8*/)!=((void*)(NULL))){
_i=((T106*)((C)->_list/*8*/))->_upper/*8*/;
while (!((_i)==(0))) {
r103afd_check((T103*)(r106item((T106*)((C)->_list/*8*/),_i)));
_i=(_i)-(1);
}
}
/*FI]*/
}
/*No:E_REQUIRE.list*/

