/*===========================================================================*/
/*   (Eval/expdcase.scm)                                                     */
/*   Bigloo (2.6b)                                                           */
/*   Inria -- Sophia Antipolis (c)       Mon Dec 15 12:14:36 CET 2003        */
/*===========================================================================*/
/* COMPILATION: (/users/serrano/prgm/project/bigloo/bin/bigloo -O4 -mklib -cc gcc-2.95 -fsharing -q -s -copt -DBGL_NO_PIC -unsafe -c Eval/expdcase.scm -indent -o objs/obj_u/Eval/expdcase.c)*/
/* GC selection */
#define THE_GC BOEHM_GC

#include <bigloo.h>
#include <signal.h>

static obj_t BGl_loopz00zz__expander_casez00(obj_t, obj_t);
BGL_EXPORTED_DECL obj_t BGl_modulezd2initializa7ationz75zz__expander_casez00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__errorz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__biglooz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__tvectorz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__structurez00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__bexitz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_flonumz00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_characters_6_6z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_booleans_6_1z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_input_6_10_2z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_control_features_6_9z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__r4_output_6_10_3z00(long, char *);
extern obj_t BGl_modulezd2initializa7ationz75zz__prognz00(long, char *);
extern obj_t BGl_normaliza7ezd2prognz75zz__prognz00(obj_t);
static obj_t BGl_symbol1895z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_symbol1894z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_symbol1893z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_symbol1892z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_symbol1891z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_symbol1889z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_symbol1888z00zz__expander_casez00 = BUNSPEC;
static obj_t BGl_cnstzd2initzd2zz__expander_casez00();
static obj_t BGl_genericzd2casezd2zz__expander_casez00(obj_t, obj_t, obj_t, obj_t);
extern obj_t string_to_symbol(char *);
static obj_t BGl_importedzd2moduleszd2initz00zz__expander_casez00();
static obj_t BGl_requirezd2initializa7ationz75zz__expander_casez00 = BUNSPEC;
static obj_t BGl__expandzd2evalzd2casez00zz__expander_casez00(obj_t, obj_t, obj_t);
BGL_EXPORTED_DECL obj_t BGl_expandzd2evalzd2casez00zz__expander_casez00(obj_t, obj_t);
static obj_t *__cnst;


DEFINE_EXPORT_PROCEDURE( BGl_expandzd2evalzd2casezd2envzd2zz__expander_casez00, BgL_bgl__expandza7d2evalza7d2caseza700za7za7__expander_caseza7001901z00, BGl__expandzd2evalzd2casez00zz__expander_casez00, 0L, 2 );
DEFINE_STRING( BGl_string1890z00zz__expander_casez00, BgL_bgl_string1890za700za7za7__expander_caseza7001902z00, "Illegal `case' form", 19 );
DEFINE_STRING( BGl_string1887z00zz__expander_casez00, BgL_bgl_string1887za700za7za7__expander_caseza7001903z00, "Illegal form", 12 );
DEFINE_STRING( BGl_string1886z00zz__expander_casez00, BgL_bgl_string1886za700za7za7__expander_caseza7001904z00, "case", 4 );



/* module-initialization */
BGL_EXPORTED_DEF obj_t BGl_modulezd2initializa7ationz75zz__expander_casez00(long BgL_checksumz00_666, char * BgL_fromz00_667)
{ AN_OBJECT;
{ 
if(
CBOOL(BGl_requirezd2initializa7ationz75zz__expander_casez00))
{ 
BGl_requirezd2initializa7ationz75zz__expander_casez00 = 
BBOOL(((bool_t)0)); 
BGl_cnstzd2initzd2zz__expander_casez00(); 
BGl_importedzd2moduleszd2initz00zz__expander_casez00(); 
return BUNSPEC;}  else 
{ 
return BUNSPEC;} } 
}



/* cnst-init */
obj_t BGl_cnstzd2initzd2zz__expander_casez00()
{ AN_OBJECT;
{ /* ./Eval/expdcase.scm 14 */
BGl_symbol1888z00zz__expander_casez00 = 
string_to_symbol("let"); 
BGl_symbol1889z00zz__expander_casez00 = 
string_to_symbol("case-value"); 
BGl_symbol1891z00zz__expander_casez00 = 
string_to_symbol("if"); 
BGl_symbol1892z00zz__expander_casez00 = 
string_to_symbol("eqv?"); 
BGl_symbol1893z00zz__expander_casez00 = 
string_to_symbol("quote"); 
BGl_symbol1894z00zz__expander_casez00 = 
string_to_symbol("memv"); 
return ( 
BGl_symbol1895z00zz__expander_casez00 = 
string_to_symbol("else"), BUNSPEC) ;} 
}



/* expand-eval-case */
BGL_EXPORTED_DEF obj_t BGl_expandzd2evalzd2casez00zz__expander_casez00(obj_t BgL_xz00_1, obj_t BgL_ez00_2)
{ AN_OBJECT;
{ /* ./Eval/expdcase.scm 48 */
if(
PAIRP(BgL_xz00_1))
{ /* ./Eval/expdcase.scm 49 */
obj_t BgL_cdrzd2109zd2_365;
BgL_cdrzd2109zd2_365 = 
CDR(BgL_xz00_1); 
if(
PAIRP(BgL_cdrzd2109zd2_365))
{ /* ./Eval/expdcase.scm 49 */
return 
BGl_genericzd2casezd2zz__expander_casez00(BgL_xz00_1, 
CAR(BgL_cdrzd2109zd2_365), 
CDR(BgL_cdrzd2109zd2_365), BgL_ez00_2);}  else 
{ /* ./Eval/expdcase.scm 49 */
FAILURE(BGl_string1886z00zz__expander_casez00,BGl_string1887z00zz__expander_casez00,BgL_xz00_1);} }  else 
{ /* ./Eval/expdcase.scm 49 */
FAILURE(BGl_string1886z00zz__expander_casez00,BGl_string1887z00zz__expander_casez00,BgL_xz00_1);} } 
}



/* _expand-eval-case */
obj_t BGl__expandzd2evalzd2casez00zz__expander_casez00(obj_t BgL_envz00_662, obj_t BgL_xz00_663, obj_t BgL_ez00_664)
{ AN_OBJECT;
{ /* ./Eval/expdcase.scm 48 */
return 
BGl_expandzd2evalzd2casez00zz__expander_casez00(BgL_xz00_663, BgL_ez00_664);} 
}



/* generic-case */
obj_t BGl_genericzd2casezd2zz__expander_casez00(obj_t BgL_xz00_3, obj_t BgL_valuez00_4, obj_t BgL_clausesz00_5, obj_t BgL_ez00_6)
{ AN_OBJECT;
{ /* ./Eval/expdcase.scm 59 */
{ /* ./Eval/expdcase.scm 60 */
obj_t BgL_arg1020z00_369;
{ /* ./Eval/expdcase.scm 60 */
obj_t BgL_arg1023z00_370;obj_t BgL_arg1024z00_371;
BgL_arg1023z00_370 = BGl_symbol1888z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 60 */
obj_t BgL_arg1028z00_372;obj_t BgL_arg1029z00_373;
{ /* ./Eval/expdcase.scm 60 */
obj_t BgL_arg1032z00_374;
{ /* ./Eval/expdcase.scm 60 */
obj_t BgL_arg1036z00_376;obj_t BgL_arg1037z00_377;
BgL_arg1036z00_376 = BGl_symbol1889z00zz__expander_casez00; 
BgL_arg1037z00_377 = 
MAKE_PAIR(BgL_valuez00_4, BNIL); 
BgL_arg1032z00_374 = 
MAKE_PAIR(BgL_arg1036z00_376, BgL_arg1037z00_377); } 
BgL_arg1028z00_372 = 
MAKE_PAIR(BgL_arg1032z00_374, BNIL); } 
{ /* ./Eval/expdcase.scm 60 */
obj_t BgL_auxz00_694;
BgL_auxz00_694 = 
BGl_loopz00zz__expander_casez00(BgL_xz00_3, BgL_clausesz00_5); 
BgL_arg1029z00_373 = 
MAKE_PAIR(BgL_auxz00_694, BNIL); } 
BgL_arg1024z00_371 = 
MAKE_PAIR(BgL_arg1028z00_372, BgL_arg1029z00_373); } 
BgL_arg1020z00_369 = 
MAKE_PAIR(BgL_arg1023z00_370, BgL_arg1024z00_371); } 
return 
PROCEDURE_ENTRY(BgL_ez00_6)(BgL_ez00_6, BgL_arg1020z00_369, BgL_ez00_6, BEOA);} } 
}



/* loop */
obj_t BGl_loopz00zz__expander_casez00(obj_t BgL_xz00_665, obj_t BgL_clausesz00_380)
{ AN_OBJECT;
{ /* ./Eval/expdcase.scm 61 */
if(
NULLP(BgL_clausesz00_380))
{ /* ./Eval/expdcase.scm 62 */
return BUNSPEC;}  else 
{ 
obj_t BgL_bodyz00_384;obj_t BgL_datumsz00_386;obj_t BgL_bodyz00_387;obj_t BgL_datumsz00_389;obj_t BgL_bodyz00_390;
{ /* ./Eval/expdcase.scm 64 */
obj_t BgL_ezd2120zd2_392;
BgL_ezd2120zd2_392 = 
CAR(BgL_clausesz00_380); 
if(
NULLP(BgL_ezd2120zd2_392))
{ /* ./Eval/expdcase.scm 64 */
return BUNSPEC;}  else 
{ /* ./Eval/expdcase.scm 64 */
if(
PAIRP(BgL_ezd2120zd2_392))
{ /* ./Eval/expdcase.scm 64 */
bool_t BgL_testz00_708;
{ /* ./Eval/expdcase.scm 64 */
obj_t BgL_auxz00_709;
BgL_auxz00_709 = 
CAR(BgL_ezd2120zd2_392); 
BgL_testz00_708 = 
(BgL_auxz00_709==BGl_symbol1895z00zz__expander_casez00); } 
if(BgL_testz00_708)
{ /* ./Eval/expdcase.scm 64 */
BgL_bodyz00_384 = 
CDR(BgL_ezd2120zd2_392); 
{ /* ./Eval/expdcase.scm 68 */
bool_t BgL_test1106z00_415;
{ /* ./Eval/expdcase.scm 68 */
bool_t BgL_testz00_712;
{ /* ./Eval/expdcase.scm 68 */
obj_t BgL_auxz00_713;
BgL_auxz00_713 = 
CDR(BgL_clausesz00_380); 
BgL_testz00_712 = 
NULLP(BgL_auxz00_713); } 
if(BgL_testz00_712)
{ /* ./Eval/expdcase.scm 68 */
BgL_test1106z00_415 = 
NULLP(BgL_bodyz00_384); }  else 
{ /* ./Eval/expdcase.scm 68 */
BgL_test1106z00_415 = ((bool_t)1); } } 
if(BgL_test1106z00_415)
{ /* ./Eval/expdcase.scm 68 */
FAILURE(BGl_string1886z00zz__expander_casez00,BGl_string1890z00zz__expander_casez00,BgL_xz00_665);}  else 
{ /* ./Eval/expdcase.scm 68 */
return 
BGl_normaliza7ezd2prognz75zz__prognz00(BgL_bodyz00_384);} } }  else 
{ /* ./Eval/expdcase.scm 64 */
obj_t BgL_carzd2133zd2_397;
BgL_carzd2133zd2_397 = 
CAR(BgL_ezd2120zd2_392); 
if(
PAIRP(BgL_carzd2133zd2_397))
{ /* ./Eval/expdcase.scm 64 */
bool_t BgL_testz00_724;
{ /* ./Eval/expdcase.scm 64 */
obj_t BgL_auxz00_725;
BgL_auxz00_725 = 
CDR(BgL_carzd2133zd2_397); 
BgL_testz00_724 = 
PAIRP(BgL_auxz00_725); } 
if(BgL_testz00_724)
{ /* ./Eval/expdcase.scm 64 */
BgL_datumsz00_386 = BgL_carzd2133zd2_397; 
BgL_bodyz00_387 = 
CDR(BgL_ezd2120zd2_392); 
if(
NULLP(BgL_bodyz00_387))
{ /* ./Eval/expdcase.scm 73 */
FAILURE(BGl_string1886z00zz__expander_casez00,BGl_string1890z00zz__expander_casez00,BgL_xz00_665);}  else 
{ /* ./Eval/expdcase.scm 77 */
obj_t BgL_arg1118z00_419;obj_t BgL_arg1119z00_420;
BgL_arg1118z00_419 = BGl_symbol1891z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 75 */
obj_t BgL_arg1122z00_421;obj_t BgL_arg1123z00_422;
{ /* ./Eval/expdcase.scm 75 */
obj_t BgL_arg1126z00_423;obj_t BgL_arg1127z00_424;
BgL_arg1126z00_423 = BGl_symbol1894z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 75 */
obj_t BgL_arg1130z00_425;obj_t BgL_arg1131z00_426;
BgL_arg1130z00_425 = BGl_symbol1889z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 75 */
obj_t BgL_arg1134z00_427;
{ /* ./Eval/expdcase.scm 75 */
obj_t BgL_arg1138z00_429;obj_t BgL_arg1140z00_430;
BgL_arg1138z00_429 = BGl_symbol1893z00zz__expander_casez00; 
BgL_arg1140z00_430 = 
MAKE_PAIR(BgL_datumsz00_386, BNIL); 
BgL_arg1134z00_427 = 
MAKE_PAIR(BgL_arg1138z00_429, BgL_arg1140z00_430); } 
BgL_arg1131z00_426 = 
MAKE_PAIR(BgL_arg1134z00_427, BNIL); } 
BgL_arg1127z00_424 = 
MAKE_PAIR(BgL_arg1130z00_425, BgL_arg1131z00_426); } 
BgL_arg1122z00_421 = 
MAKE_PAIR(BgL_arg1126z00_423, BgL_arg1127z00_424); } 
{ /* ./Eval/expdcase.scm 76 */
obj_t BgL_arg1144z00_431;obj_t BgL_arg1146z00_432;
BgL_arg1144z00_431 = 
BGl_normaliza7ezd2prognz75zz__prognz00(BgL_bodyz00_387); 
{ /* ./Eval/expdcase.scm 75 */
obj_t BgL_auxz00_737;
BgL_auxz00_737 = 
BGl_loopz00zz__expander_casez00(BgL_xz00_665, 
CDR(BgL_clausesz00_380)); 
BgL_arg1146z00_432 = 
MAKE_PAIR(BgL_auxz00_737, BNIL); } 
BgL_arg1123z00_422 = 
MAKE_PAIR(BgL_arg1144z00_431, BgL_arg1146z00_432); } 
BgL_arg1119z00_420 = 
MAKE_PAIR(BgL_arg1122z00_421, BgL_arg1123z00_422); } 
return 
MAKE_PAIR(BgL_arg1118z00_419, BgL_arg1119z00_420);} }  else 
{ /* ./Eval/expdcase.scm 64 */
bool_t BgL_testz00_745;
{ /* ./Eval/expdcase.scm 64 */
obj_t BgL_auxz00_746;
BgL_auxz00_746 = 
CDR(BgL_carzd2133zd2_397); 
BgL_testz00_745 = 
NULLP(BgL_auxz00_746); } 
if(BgL_testz00_745)
{ /* ./Eval/expdcase.scm 64 */
BgL_datumsz00_389 = 
CAR(BgL_carzd2133zd2_397); 
BgL_bodyz00_390 = 
CDR(BgL_ezd2120zd2_392); 
BgL_tagzd2119zd2_391:
if(
NULLP(BgL_bodyz00_390))
{ /* ./Eval/expdcase.scm 79 */
FAILURE(BGl_string1886z00zz__expander_casez00,BGl_string1890z00zz__expander_casez00,BgL_xz00_665);}  else 
{ /* ./Eval/expdcase.scm 83 */
obj_t BgL_arg1161z00_437;obj_t BgL_arg1162z00_438;
BgL_arg1161z00_437 = BGl_symbol1891z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 81 */
obj_t BgL_arg1165z00_439;obj_t BgL_arg1166z00_440;
{ /* ./Eval/expdcase.scm 81 */
obj_t BgL_arg1169z00_441;obj_t BgL_arg1171z00_442;
BgL_arg1169z00_441 = BGl_symbol1892z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 81 */
obj_t BgL_arg1174z00_443;obj_t BgL_arg1175z00_444;
BgL_arg1174z00_443 = BGl_symbol1889z00zz__expander_casez00; 
{ /* ./Eval/expdcase.scm 81 */
obj_t BgL_arg1178z00_445;
{ /* ./Eval/expdcase.scm 81 */
obj_t BgL_arg1182z00_447;obj_t BgL_arg1183z00_448;
BgL_arg1182z00_447 = BGl_symbol1893z00zz__expander_casez00; 
BgL_arg1183z00_448 = 
MAKE_PAIR(BgL_datumsz00_389, BNIL); 
BgL_arg1178z00_445 = 
MAKE_PAIR(BgL_arg1182z00_447, BgL_arg1183z00_448); } 
BgL_arg1175z00_444 = 
MAKE_PAIR(BgL_arg1178z00_445, BNIL); } 
BgL_arg1171z00_442 = 
MAKE_PAIR(BgL_arg1174z00_443, BgL_arg1175z00_444); } 
BgL_arg1165z00_439 = 
MAKE_PAIR(BgL_arg1169z00_441, BgL_arg1171z00_442); } 
{ /* ./Eval/expdcase.scm 82 */
obj_t BgL_arg1187z00_449;obj_t BgL_arg1188z00_450;
BgL_arg1187z00_449 = 
BGl_normaliza7ezd2prognz75zz__prognz00(BgL_bodyz00_390); 
{ /* ./Eval/expdcase.scm 81 */
obj_t BgL_auxz00_758;
BgL_auxz00_758 = 
BGl_loopz00zz__expander_casez00(BgL_xz00_665, 
CDR(BgL_clausesz00_380)); 
BgL_arg1188z00_450 = 
MAKE_PAIR(BgL_auxz00_758, BNIL); } 
BgL_arg1166z00_440 = 
MAKE_PAIR(BgL_arg1187z00_449, BgL_arg1188z00_450); } 
BgL_arg1162z00_438 = 
MAKE_PAIR(BgL_arg1165z00_439, BgL_arg1166z00_440); } 
return 
MAKE_PAIR(BgL_arg1161z00_437, BgL_arg1162z00_438);} }  else 
{ /* ./Eval/expdcase.scm 64 */
return BFALSE;} } }  else 
{ /* ./Eval/expdcase.scm 64 */
if(
PAIRP(BgL_carzd2133zd2_397))
{ /* ./Eval/expdcase.scm 64 */
bool_t BgL_testz00_769;
{ /* ./Eval/expdcase.scm 64 */
obj_t BgL_auxz00_770;
BgL_auxz00_770 = 
CDR(BgL_carzd2133zd2_397); 
BgL_testz00_769 = 
NULLP(BgL_auxz00_770); } 
if(BgL_testz00_769)
{ 
obj_t BgL_bodyz00_775;obj_t BgL_datumsz00_773;
BgL_datumsz00_773 = 
CAR(BgL_carzd2133zd2_397); 
BgL_bodyz00_775 = 
CDR(BgL_ezd2120zd2_392); 
BgL_bodyz00_390 = BgL_bodyz00_775; 
BgL_datumsz00_389 = BgL_datumsz00_773; 
goto BgL_tagzd2119zd2_391;}  else 
{ /* ./Eval/expdcase.scm 64 */
return BFALSE;} }  else 
{ /* ./Eval/expdcase.scm 64 */
return BFALSE;} } } }  else 
{ /* ./Eval/expdcase.scm 64 */
return BFALSE;} } } } } 
}



/* imported-modules-init */
obj_t BGl_importedzd2moduleszd2initz00zz__expander_casez00()
{ AN_OBJECT;
{ /* ./Eval/expdcase.scm 14 */
BGl_modulezd2initializa7ationz75zz__errorz00(((long)11084), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__biglooz00(((long)48291), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__tvectorz00(((long)57114), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__structurez00(((long)53290), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__bexitz00(((long)13855), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5z00(((long)21694), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_fixnumz00(((long)6615), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_numbers_6_5_flonumz00(((long)49269), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_characters_6_6z00(((long)29164), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_equivalence_6_2z00(((long)51785), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_booleans_6_1z00(((long)35070), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_symbols_6_4z00(((long)247), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_strings_6_7z00(((long)21875), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_pairs_and_lists_6_3z00(((long)104413), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_input_6_10_2z00(((long)50132), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_control_features_6_9z00(((long)63121), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_vectors_6_8z00(((long)13988), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_ports_6_10_1z00(((long)45566), "__expander_case"); 
BGl_modulezd2initializa7ationz75zz__r4_output_6_10_3z00(((long)18972), "__expander_case"); 
return 
BGl_modulezd2initializa7ationz75zz__prognz00(((long)9608), "__expander_case");} 
}

