home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sa104os2.zip / SATHR104.ZIP / SATHER / BOOT / CS.COD / CODE1.C < prev    next >
C/C++ Source or Header  |  1995-02-15  |  226KB  |  8,720 lines

  1. /* C code generated by Sather 1.0 compiler */
  2.  
  3. #include "sather.h"
  4.  
  5. #include "strings.h"
  6.  
  7.  
  8.  
  9.  
  10. TUPSTRTUPSTRSTR TUPSTRTUPSTRSTR__1058(TUPSTRTUPSTRSTR self, TUPSTRSTR t2_1059) {
  11.  TUPSTRTUPSTRSTR local0;
  12.  local0 = self;
  13.  local0.t2 = t2_1059;
  14.  return local0;
  15. }
  16.  
  17.  
  18. TUPSTRTUPSTRSTR TUPSTRTUPSTRSTR__1060(TUPSTRTUPSTRSTR self, STR at1, TUPSTRSTR at2) {
  19.  TUPSTRTUPSTRSTR noname1061 = TUPSTRTUPSTRSTR_zero;
  20.  TUPSTRTUPSTRSTR local0;
  21.  local0 = TUPSTRTUPSTRSTR_(self, at1);
  22.  return TUPSTRTUPSTRSTR__1058(local0, at2);
  23. }
  24.  
  25.  
  26. FMAPSTRTUPSTRSTR FMAPSTRTUPSTRSTR_1062(FMAPSTRTUPSTRSTR self, INT n_1063) {
  27.  FMAPSTRTUPSTRSTR noname1064;
  28.  FMAPSTRTUPSTRSTR r_1065;
  29.  FMAPSTRTUPSTRSTR noname1066;
  30.  FMAPSTRTUPSTRSTR local0;
  31.  TUPSTRTUPSTRSTR local1;
  32.  STR local2;
  33.  local0 = ((FMAPSTRTUPSTRSTR) sbi_arr_alloc(sizeof(struct FMAPSTRTUPSTRSTR_struct), FMAPSTRTUPSTRSTR_tag, sizeof(TUPSTRTUPSTRSTR) , n_1063));
  34.  local0->asize = n_1063;
  35.  r_1065 = local0;
  36.  if ((!((FMAPSTRTUPSTRSTR_1055(self)==((STR) NULL))))) {
  37.   {
  38.    struct FMAPSTRTUPSTRSTR_1068_frame_struct temp1067_0;
  39.    FMAPSTRTUPSTRSTR_1068_frame 
  40.    noname1069 = &temp1067_0;
  41.    noname1069->state = 0;
  42.    while (1) {
  43.     if (noname1069->state == 0) {
  44.      noname1066 = r_1065;
  45.      noname1069->arg0 = noname1066;
  46.     }
  47.     local1 = TUPSTRTUPSTRSTR_zero;
  48.     local2 = FMAPSTRTUPSTRSTR_1055(self);
  49.     noname1069->arg1 = TUPSTRTUPSTRSTR__1060(local1, local2, TUPSTRSTR_zero);
  50.     FMAPSTRTUPSTRSTR_1068(noname1069);
  51.     if (noname1069->state == -1) goto after_loop;
  52.     0 /* No return value from iter call */;
  53.    }
  54.   }
  55.   after_loop: ;
  56.  }
  57.  return r_1065;
  58. }
  59.  
  60.  
  61. INT FMAPSTRTUPSTRSTR_1070(FMAPSTRTUPSTRSTR self) {
  62.  INT noname1071 = ((INT) 0);
  63.   return self->asize;
  64.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  65.  exit(16);
  66. }
  67.  
  68.  
  69. FMAPSTRTUPSTRSTR FMAPSTRTUPSTRSTR_1072(FMAPSTRTUPSTRSTR self, TUPSTRTUPSTRSTR p) {
  70.  FMAPSTRTUPSTRSTR noname1073;
  71.  return FMAPSTRTUPSTRSTR_1074(self, p.t1, p.t2);
  72.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  73.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  74.   exit(16);
  75.  }
  76. }
  77.  
  78.  
  79. FMAPSTRTUPSTRSTR FMAPSTRTUPSTRSTR_1075(FMAPSTRTUPSTRSTR self) {
  80.  FMAPSTRTUPSTRSTR noname1076;
  81.  INT ns = ((INT) 0);
  82.  FMAPSTRTUPSTRSTR r_1077;
  83.  FMAPSTRTUPSTRSTR noname1078;
  84.  INT local0;
  85.  INT local1;
  86.  INT local2;
  87.  TUPSTRTUPSTRSTR local3;
  88.  if (!((!((self==((FMAPSTRTUPSTRSTR) NULL)))))) {
  89.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  90.   exit(16);
  91.  }
  92.  local0 = (self->asize);
  93.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  94.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  95.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  96.  r_1077 = FMAPSTRTUPSTRSTR_1062(self, ns);
  97.  {
  98.   struct FMAPSTRTUPSTRSTR_1080_frame_struct temp1079_0;
  99.   FMAPSTRTUPSTRSTR_1080_frame 
  100.   noname1081 = &temp1079_0;
  101.   noname1081->state = 0;
  102.   while (1) {
  103.    if (noname1081->state == 0) {
  104.     noname1078 = self;
  105.     noname1081->arg0 = noname1078;
  106.    }
  107.    local3 = FMAPSTRTUPSTRSTR_1080(noname1081);
  108.    if (noname1081->state == -1) goto after_loop;
  109.    r_1077 = FMAPSTRTUPSTRSTR_1072(r_1077, local3);
  110.   }
  111.  }
  112.  after_loop: ;
  113.  return r_1077;
  114. }
  115.  
  116.  
  117. INT FMAPSTRTUPSTRSTR_1082(FMAPSTRTUPSTRSTR self, STR k) {
  118.  INT noname1083 = ((INT) 0);
  119.  return STR_hash_INT(k);
  120.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
  121.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  122.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  123.   exit(16);
  124.  }
  125. }
  126.  
  127.  
  128. TUPSTRTUPSTRSTR FMAPSTRTUPSTRSTR_1084(FMAPSTRTUPSTRSTR self, INT ind_1085) {
  129.  TUPSTRTUPSTRSTR noname1086 = TUPSTRTUPSTRSTR_zero;
  130.  BOOL local0;
  131.  INT local1;
  132.  INT local2;
  133.  if ((!((self==((FMAPSTRTUPSTRSTR) NULL))))) {
  134.   local1 = 0;
  135.   local2 = (self->asize);
  136.   local0 = INT_is_bet_INT_I(ind_1085, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  137.  } else {
  138.   local0 = FALSE;
  139.  }
  140.  if (!(local0)) {
  141.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  142.   exit(16);
  143.  }
  144.  if (ind_1085<0||ind_1085>=self->asize) {
  145.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  146.   exit(16);
  147.  }
  148.  return self->arr_part[ind_1085];
  149. }
  150.  
  151.  
  152. BOOL FMAPSTRTUPSTRSTR_1087(FMAPSTRTUPSTRSTR self, STR k1, STR k2) {
  153.  BOOL noname1088 = ((BOOL) 0);
  154.  return STR_is_eq_STR_BOOL(k1, k2);
  155.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
  156.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  157.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  158.   exit(16);
  159.  }
  160. }
  161.  
  162.  
  163. void FMAPSTRTUPSTRSTR_1089(FMAPSTRTUPSTRSTR self, INT ind_1090, TUPSTRTUPSTRSTR val_1091) {
  164.  BOOL local0;
  165.  INT local1;
  166.  INT local2;
  167.  if ((!((self==((FMAPSTRTUPSTRSTR) NULL))))) {
  168.   local1 = 0;
  169.   local2 = (self->asize);
  170.   local0 = INT_is_bet_INT_I(ind_1090, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  171.  } else {
  172.   local0 = FALSE;
  173.  }
  174.  if (!(local0)) {
  175.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  176.   exit(16);
  177.  }
  178.  if (ind_1090<0||ind_1090>=self->asize) {
  179.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  180.   exit(16);
  181.  }
  182.  self->arr_part[ind_1090] = val_1091;
  183. }
  184.  
  185.  
  186. FMAPSTRTUPSTRSTR FMAPSTRTUPSTRSTR_1074(FMAPSTRTUPSTRSTR self, STR k, TUPSTRSTR t_1092) {
  187.  FMAPSTRTUPSTRSTR noname1093;
  188.  FMAPSTRTUPSTRSTR r_1094;
  189.  INT h = ((INT) 0);
  190.  INT asm_1095 = ((INT) 0);
  191.  STR tk;
  192.  STR tk_1096;
  193.  INT local0;
  194.  INT local1;
  195.  INT local2;
  196.  INT local3;
  197.  INT local4;
  198.  r_1094 = self;
  199.  if ((r_1094==((FMAPSTRTUPSTRSTR) NULL))) {
  200.   r_1094 = FMAPSTRTUPSTRSTR_1062(self, 5);
  201.  }
  202.  else {
  203.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  204.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  205.   if ((local1>(self->asize))) {
  206.    r_1094 = FMAPSTRTUPSTRSTR_1075(self);
  207.   }
  208.  }
  209.  local2 = FMAPSTRTUPSTRSTR_1082(r_1094, k);
  210.  local3 = (r_1094->asize);
  211.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  212.  local4 = (r_1094->asize);
  213.  asm_1095 = (c_INT_minus_INT_INT_chk(local4,1));
  214.  while (1) {
  215.   tk = (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(r_1094, h)).t1;
  216.   if (FMAPSTRTUPSTRSTR_1087(self, tk, FMAPSTRTUPSTRSTR_1055(self))) {
  217.    goto after_loop;
  218.   }
  219.   if (FMAPSTRTUPSTRSTR_1087(self, tk, k)) {
  220.    FMAPSTRTUPSTRSTR_1089(r_1094, h, TUPSTRTUPSTRSTR__1060(TUPSTRTUPSTRSTR_zero, k, t_1092));
  221.    return r_1094;
  222.   }
  223.   h = (c_INT_plus_INT_INT_chk(h,1));
  224.  }
  225.  after_loop: ;
  226.  if ((h==asm_1095)) {
  227.   h = 0;
  228.   while (1) {
  229.    tk_1096 = (TUPSTRTUPSTRSTR_blob=FMAPSTRTUPSTRSTR_1084(r_1094, h)).t1;
  230.    if (FMAPSTRTUPSTRSTR_1087(self, tk_1096, FMAPSTRTUPSTRSTR_1055(self))) {
  231.     goto after_loop_1098;
  232.    }
  233.    if (FMAPSTRTUPSTRSTR_1087(self, tk_1096, k)) {
  234.     FMAPSTRTUPSTRSTR_1089(r_1094, h, TUPSTRTUPSTRSTR__1060(TUPSTRTUPSTRSTR_zero, k, t_1092));
  235.     return r_1094;
  236.    }
  237.    h = (c_INT_plus_INT_INT_chk(h,1));
  238.   }
  239.   after_loop_1098: ;
  240.   if (!((h!=asm_1095))) {
  241.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  242.    exit(16);
  243.   }
  244.  }
  245.  FMAPSTRTUPSTRSTR_1089(r_1094, h, TUPSTRTUPSTRSTR__1060(TUPSTRTUPSTRSTR_zero, k, t_1092));
  246.  r_1094->hsize = (c_INT_plus_INT_INT_chk(r_1094->hsize,1));
  247.  return r_1094;
  248.  if (!FMAPSTRTUPSTRSTR_1035(self)) {
  249.   fprintf(stderr,"Failed invariant FMAP{STR,TUP{STR,STR}}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  250.   exit(16);
  251.  }
  252. }
  253.  
  254.  
  255. BOOL CHAR_is_alpha_BOOL(CHAR self) {
  256.  BOOL noname1100 = ((BOOL) 0);
  257.  CHAR noname1101 = ((CHAR) 0);
  258.  noname1101 = self;
  259.  switch (noname1101) {
  260.   case 'a':
  261.   case 'b':
  262.   case 'c':
  263.   case 'd':
  264.   case 'e':
  265.   case 'f':
  266.   case 'g':
  267.   case 'h':
  268.   case 'i':
  269.   case 'j':
  270.   case 'k':
  271.   case 'l':
  272.   case 'm':
  273.   case 'n':
  274.   case 'o':
  275.   case 'p':
  276.   case 'q':
  277.   case 'r':
  278.   case 's':
  279.   case 't':
  280.   case 'u':
  281.   case 'v':
  282.   case 'w':
  283.   case 'x':
  284.   case 'y':
  285.   case 'z':
  286.   case 'A':
  287.   case 'B':
  288.   case 'C':
  289.   case 'D':
  290.   case 'E':
  291.   case 'F':
  292.   case 'G':
  293.   case 'H':
  294.   case 'I':
  295.   case 'J':
  296.   case 'K':
  297.   case 'L':
  298.   case 'M':
  299.   case 'N':
  300.   case 'O':
  301.   case 'P':
  302.   case 'Q':
  303.   case 'R':
  304.   case 'S':
  305.   case 'T':
  306.   case 'U':
  307.   case 'V':
  308.   case 'W':
  309.   case 'X':
  310.   case 'Y':
  311.   case 'Z':
  312.    return TRUE;
  313.    break;
  314.   default: ;
  315.  }
  316.  return FALSE;
  317. }
  318.  
  319.  
  320. BOOL CHAR_is_alphanum(CHAR self) {
  321.  BOOL noname1102 = ((BOOL) 0);
  322.  CHAR noname1103 = ((CHAR) 0);
  323.  noname1103 = self;
  324.  switch (noname1103) {
  325.   case 'a':
  326.   case 'b':
  327.   case 'c':
  328.   case 'd':
  329.   case 'e':
  330.   case 'f':
  331.   case 'g':
  332.   case 'h':
  333.   case 'i':
  334.   case 'j':
  335.   case 'k':
  336.   case 'l':
  337.   case 'm':
  338.   case 'n':
  339.   case 'o':
  340.   case 'p':
  341.   case 'q':
  342.   case 'r':
  343.   case 's':
  344.   case 't':
  345.   case 'u':
  346.   case 'v':
  347.   case 'w':
  348.   case 'x':
  349.   case 'y':
  350.   case 'z':
  351.   case 'A':
  352.   case 'B':
  353.   case 'C':
  354.   case 'D':
  355.   case 'E':
  356.   case 'F':
  357.   case 'G':
  358.   case 'H':
  359.   case 'I':
  360.   case 'J':
  361.   case 'K':
  362.   case 'L':
  363.   case 'M':
  364.   case 'N':
  365.   case 'O':
  366.   case 'P':
  367.   case 'Q':
  368.   case 'R':
  369.   case 'S':
  370.   case 'T':
  371.   case 'U':
  372.   case 'V':
  373.   case 'W':
  374.   case 'X':
  375.   case 'Y':
  376.   case 'Z':
  377.   case '0':
  378.   case '1':
  379.   case '2':
  380.   case '3':
  381.   case '4':
  382.   case '5':
  383.   case '6':
  384.   case '7':
  385.   case '8':
  386.   case '9':
  387.    return TRUE;
  388.    break;
  389.   default: ;
  390.  }
  391.  return FALSE;
  392. }
  393.  
  394.  
  395. STR STR_substring_IN(STR self, INT beg, INT num_1104) {
  396.  STR noname1105;
  397.  STR r_1106;
  398.  BOOL local0;
  399.  INT local1;
  400.  INT local2;
  401.  STR local3;
  402.  if ((num_1104>=0)) {
  403.   local1 = 0;
  404.   local2 = STR_size_INT(self);
  405.   local0 = INT_is_bet_INT_I(beg, local1, (c_INT_minus_INT_INT_chk(local2,num_1104)));
  406.  } else {
  407.   local0 = FALSE;
  408.  }
  409.  if (!(local0)) {
  410.   fprintf(stderr,"Violation of precondition ../Library/str.sa:433:12\n");
  411.   exit(16);
  412.  }
  413.  if ((self==((STR) NULL))) {
  414.   return ((STR) NULL);
  415.  }
  416.  local3 = ((STR) sbi_arr_alloc_atomic(sizeof(struct STR_struct), STR_tag, sizeof(CHAR) , num_1104));
  417.  local3->asize = num_1104;
  418.  r_1106 = local3;
  419.  STR_acopy_INT_IN(r_1106, 0, num_1104, beg, self);
  420.  return r_1106;
  421. }
  422.  
  423.  
  424. void BE_insert_built_(BE self) {
  425.  BE_LEX l;
  426.  STR ident1;
  427.  STR ident2;
  428.  STR ident3;
  429.  TUPSTRSTR pair = TUPSTRSTR_zero;
  430.  INT i = ((INT) 0);
  431.  INT noname1107 = ((INT) 0);
  432.  INT noname1108 = ((INT) 0);
  433.  INT i_1109 = ((INT) 0);
  434.  INT noname1110 = ((INT) 0);
  435.  INT noname1111 = ((INT) 0);
  436.  BE_LEX local0;
  437.  INT local1;
  438.  INT local2;
  439.  INT local3;
  440.  
  441.  INT local4;
  442.  STR local5;
  443.  INT local6;
  444.  INT local7;
  445.  INT local8;
  446.  INT local9;
  447.  
  448.  INT local10;
  449.  STR local11;
  450.  INT local12;
  451.  local0 = ((BE_LEX) NULL);
  452.  l = BE_LEX_create_ST(local0, STR_plus_STR_STR(self->prog->options_55->home, ((STR) &SystemMACROS)));
  453.  while (1) {
  454.   ident1 = BE_LEX_get_str_STR(l);
  455.   ident2 = BE_LEX_get_str_STR(l);
  456.   ident3 = BE_LEX_get_str_STR(l);
  457.   if ((ident1==((STR) NULL))) {
  458.    goto after_loop;
  459.   }
  460.   else {
  461.    if ((ident2==((STR) NULL))) {
  462.     BE_barf_STR(self, ((STR) &MalformedMACROSfile));
  463.    }
  464.    else {
  465.     if ((ident3==((STR) NULL))) {
  466.      BE_barf_STR(self, ((STR) &MalformedMACROSf_1113));
  467.     }
  468.     else {
  469.      if (STR_is_eq_STR_BOOL(ident3, ((STR) &same_1114))) {
  470.       pair = TUPSTRSTR_create(TUPSTRSTR_zero, ident2, ident2);
  471.      }
  472.      else {
  473.       pair = TUPSTRSTR_create(TUPSTRSTR_zero, ident2, ident3);
  474.      }
  475.      self->built_in_routines = FMAPSTRTUPSTRSTR_1074(self->built_in_routines, ident1, pair);
  476.      if (CHAR_is_alpha_BOOL(STR_aget_INT_CHAR(pair.t1, 0))) {
  477.       {
  478.        BOOL noname1117 = TRUE;
  479.        while (1) {
  480.         if (noname1117) {
  481.          noname1117 = FALSE;
  482.          noname1107 = 1;
  483.          local4 = STR_length_INT(pair.t1);
  484.          noname1108 = (c_INT_minus_INT_INT_chk(local4,1));
  485.          local2 = noname1107;
  486.          local3 = noname1108;
  487.          local1 = local2;
  488.         } else {
  489.          local1++;
  490.         }
  491.         if (local1>local3) goto after_loop_1115;
  492.         i = local1;
  493.         if ((!(CHAR_is_alphanum(STR_aget_INT_CHAR(pair.t1, i))))) {
  494.          goto after_loop_1115;
  495.         }
  496.        }
  497.       }
  498.       after_loop_1115: ;
  499.       local5 = pair.t1;
  500.       local6 = 0;
  501.       BE_forbid_STR(self, STR_substring_IN(local5, local6, (c_INT_minus_INT_INT_chk(i,1))));
  502.      }
  503.      if (CHAR_is_alpha_BOOL(STR_aget_INT_CHAR(pair.t2, 0))) {
  504.       {
  505.        BOOL noname1120 = TRUE;
  506.        while (1) {
  507.         if (noname1120) {
  508.          noname1120 = FALSE;
  509.          noname1110 = 1;
  510.          local10 = STR_length_INT(pair.t2);
  511.          noname1111 = (c_INT_minus_INT_INT_chk(local10,1));
  512.          local8 = noname1110;
  513.          local9 = noname1111;
  514.          local7 = local8;
  515.         } else {
  516.          local7++;
  517.         }
  518.         if (local7>local9) goto after_loop_1118;
  519.         i_1109 = local7;
  520.         if ((!(CHAR_is_alphanum(STR_aget_INT_CHAR(pair.t2, i_1109))))) {
  521.          goto after_loop_1118;
  522.         }
  523.        }
  524.       }
  525.       after_loop_1118: ;
  526.       local11 = pair.t2;
  527.       local12 = 0;
  528.       BE_forbid_STR(self, STR_substring_IN(local11, local12, (c_INT_minus_INT_INT_chk(i_1109,1))));
  529.      }
  530.     }
  531.    }
  532.   }
  533.  }
  534.  after_loop: ;
  535. }
  536.  
  537.  
  538. ITER_INLINE ITER_INLINE_crea(ITER_INLINE self, STR s1, STR s2, STR s3, STR s4) {
  539.  ITER_INLINE noname1121;
  540.  ITER_INLINE res;
  541.  ITER_INLINE local0;
  542.  local0 = ((ITER_INLINE) sbi_alloc(sizeof(struct ITER_INLINE_struct), ITER_INLINE_tag));
  543.  res = local0;
  544.  res->at_decs = s1;
  545.  res->when_first_seen = s2;
  546.  res->before_28 = s3;
  547.  res->after_29 = s4;
  548.  return res;
  549. }
  550.  
  551.  
  552. STR FMAPSTRITER_INLI_1122(FMAPSTRITER_INLINE self) {
  553.  STR noname1123;
  554.  STR k = ((STR) NULL);
  555.  return ((STR) NULL);
  556.  if (!FMAPSTRITER_INLI_1037(self)) {
  557.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  558.   exit(16);
  559.  }
  560. }
  561.  
  562.  
  563. TUPSTRITER_INLINE TUPSTRITER_INLIN(TUPSTRITER_INLINE self, STR t1_1124) {
  564.  TUPSTRITER_INLINE local0;
  565.  local0 = self;
  566.  local0.t1 = t1_1124;
  567.  return local0;
  568. }
  569.  
  570.  
  571. TUPSTRITER_INLINE TUPSTRITER_INLIN_1125(TUPSTRITER_INLINE self, ITER_INLINE t2_1126) {
  572.  TUPSTRITER_INLINE local0;
  573.  local0 = self;
  574.  local0.t2 = t2_1126;
  575.  return local0;
  576. }
  577.  
  578.  
  579. TUPSTRITER_INLINE TUPSTRITER_INLIN_1127(TUPSTRITER_INLINE self, STR at1, ITER_INLINE at2) {
  580.  TUPSTRITER_INLINE noname1128 = TUPSTRITER_INLINE_zero;
  581.  TUPSTRITER_INLINE local0;
  582.  local0 = TUPSTRITER_INLIN(self, at1);
  583.  return TUPSTRITER_INLIN_1125(local0, at2);
  584. }
  585.  
  586.  
  587. FMAPSTRITER_INLINE FMAPSTRITER_INLI_1129(FMAPSTRITER_INLINE self, INT n_1130) {
  588.  FMAPSTRITER_INLINE noname1131;
  589.  FMAPSTRITER_INLINE r_1132;
  590.  FMAPSTRITER_INLINE noname1133;
  591.  FMAPSTRITER_INLINE local0;
  592.  TUPSTRITER_INLINE local1;
  593.  STR local2;
  594.  local0 = ((FMAPSTRITER_INLINE) sbi_arr_alloc(sizeof(struct FMAPSTRITER_INLINE_struct), FMAPSTRITER_INLINE_tag, sizeof(TUPSTRITER_INLINE) , n_1130));
  595.  local0->asize = n_1130;
  596.  r_1132 = local0;
  597.  if ((!((FMAPSTRITER_INLI_1122(self)==((STR) NULL))))) {
  598.   {
  599.    struct FMAPSTRITER_INLI_1135_frame_struct temp1134_0;
  600.    FMAPSTRITER_INLI_1135_frame 
  601.    noname1136 = &temp1134_0;
  602.    noname1136->state = 0;
  603.    while (1) {
  604.     if (noname1136->state == 0) {
  605.      noname1133 = r_1132;
  606.      noname1136->arg0 = noname1133;
  607.     }
  608.     local1 = TUPSTRITER_INLINE_zero;
  609.     local2 = FMAPSTRITER_INLI_1122(self);
  610.     noname1136->arg1 = TUPSTRITER_INLIN_1127(local1, local2, ((ITER_INLINE) NULL));
  611.     FMAPSTRITER_INLI_1135(noname1136);
  612.     if (noname1136->state == -1) goto after_loop;
  613.     0 /* No return value from iter call */;
  614.    }
  615.   }
  616.   after_loop: ;
  617.  }
  618.  return r_1132;
  619. }
  620.  
  621.  
  622. INT FMAPSTRITER_INLI_1137(FMAPSTRITER_INLINE self) {
  623.  INT noname1138 = ((INT) 0);
  624.   return self->asize;
  625.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  626.  exit(16);
  627. }
  628.  
  629.  
  630. FMAPSTRITER_INLINE FMAPSTRITER_INLI_1139(FMAPSTRITER_INLINE self, TUPSTRITER_INLINE p) {
  631.  FMAPSTRITER_INLINE noname1140;
  632.  return FMAPSTRITER_INLI_1141(self, p.t1, p.t2);
  633.  if (!FMAPSTRITER_INLI_1037(self)) {
  634.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  635.   exit(16);
  636.  }
  637. }
  638.  
  639.  
  640. FMAPSTRITER_INLINE FMAPSTRITER_INLI_1142(FMAPSTRITER_INLINE self) {
  641.  FMAPSTRITER_INLINE noname1143;
  642.  INT ns = ((INT) 0);
  643.  FMAPSTRITER_INLINE r_1144;
  644.  FMAPSTRITER_INLINE noname1145;
  645.  INT local0;
  646.  INT local1;
  647.  INT local2;
  648.  TUPSTRITER_INLINE local3;
  649.  if (!((!((self==((FMAPSTRITER_INLINE) NULL)))))) {
  650.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  651.   exit(16);
  652.  }
  653.  local0 = (self->asize);
  654.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  655.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  656.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  657.  r_1144 = FMAPSTRITER_INLI_1129(self, ns);
  658.  {
  659.   struct FMAPSTRITER_INLI_1147_frame_struct temp1146_0;
  660.   FMAPSTRITER_INLI_1147_frame 
  661.   noname1148 = &temp1146_0;
  662.   noname1148->state = 0;
  663.   while (1) {
  664.    if (noname1148->state == 0) {
  665.     noname1145 = self;
  666.     noname1148->arg0 = noname1145;
  667.    }
  668.    local3 = FMAPSTRITER_INLI_1147(noname1148);
  669.    if (noname1148->state == -1) goto after_loop;
  670.    r_1144 = FMAPSTRITER_INLI_1139(r_1144, local3);
  671.   }
  672.  }
  673.  after_loop: ;
  674.  return r_1144;
  675. }
  676.  
  677.  
  678. INT FMAPSTRITER_INLI_1149(FMAPSTRITER_INLINE self, STR k) {
  679.  INT noname1150 = ((INT) 0);
  680.  return STR_hash_INT(k);
  681.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) k)));
  682.  if (!FMAPSTRITER_INLI_1037(self)) {
  683.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  684.   exit(16);
  685.  }
  686. }
  687.  
  688.  
  689. TUPSTRITER_INLINE FMAPSTRITER_INLI_1151(FMAPSTRITER_INLINE self, INT ind_1152) {
  690.  TUPSTRITER_INLINE noname1153 = TUPSTRITER_INLINE_zero;
  691.  BOOL local0;
  692.  INT local1;
  693.  INT local2;
  694.  if ((!((self==((FMAPSTRITER_INLINE) NULL))))) {
  695.   local1 = 0;
  696.   local2 = (self->asize);
  697.   local0 = INT_is_bet_INT_I(ind_1152, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  698.  } else {
  699.   local0 = FALSE;
  700.  }
  701.  if (!(local0)) {
  702.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  703.   exit(16);
  704.  }
  705.  if (ind_1152<0||ind_1152>=self->asize) {
  706.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  707.   exit(16);
  708.  }
  709.  return self->arr_part[ind_1152];
  710. }
  711.  
  712.  
  713. BOOL FMAPSTRITER_INLI_1154(FMAPSTRITER_INLINE self, STR k1, STR k2) {
  714.  BOOL noname1155 = ((BOOL) 0);
  715.  return STR_is_eq_STR_BOOL(k1, k2);
  716.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) k1),((OB) k2));
  717.  if (!FMAPSTRITER_INLI_1037(self)) {
  718.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  719.   exit(16);
  720.  }
  721. }
  722.  
  723.  
  724. void FMAPSTRITER_INLI_1156(FMAPSTRITER_INLINE self, INT ind_1157, TUPSTRITER_INLINE val_1158) {
  725.  BOOL local0;
  726.  INT local1;
  727.  INT local2;
  728.  if ((!((self==((FMAPSTRITER_INLINE) NULL))))) {
  729.   local1 = 0;
  730.   local2 = (self->asize);
  731.   local0 = INT_is_bet_INT_I(ind_1157, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  732.  } else {
  733.   local0 = FALSE;
  734.  }
  735.  if (!(local0)) {
  736.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  737.   exit(16);
  738.  }
  739.  if (ind_1157<0||ind_1157>=self->asize) {
  740.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  741.   exit(16);
  742.  }
  743.  self->arr_part[ind_1157] = val_1158;
  744. }
  745.  
  746.  
  747. FMAPSTRITER_INLINE FMAPSTRITER_INLI_1141(FMAPSTRITER_INLINE self, STR k, ITER_INLINE t_1159) {
  748.  FMAPSTRITER_INLINE noname1160;
  749.  FMAPSTRITER_INLINE r_1161;
  750.  INT h = ((INT) 0);
  751.  INT asm_1162 = ((INT) 0);
  752.  STR tk;
  753.  STR tk_1163;
  754.  INT local0;
  755.  INT local1;
  756.  INT local2;
  757.  INT local3;
  758.  INT local4;
  759.  r_1161 = self;
  760.  if ((r_1161==((FMAPSTRITER_INLINE) NULL))) {
  761.   r_1161 = FMAPSTRITER_INLI_1129(self, 5);
  762.  }
  763.  else {
  764.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  765.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  766.   if ((local1>(self->asize))) {
  767.    r_1161 = FMAPSTRITER_INLI_1142(self);
  768.   }
  769.  }
  770.  local2 = FMAPSTRITER_INLI_1149(r_1161, k);
  771.  local3 = (r_1161->asize);
  772.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  773.  local4 = (r_1161->asize);
  774.  asm_1162 = (c_INT_minus_INT_INT_chk(local4,1));
  775.  while (1) {
  776.   tk = (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(r_1161, h)).t1;
  777.   if (FMAPSTRITER_INLI_1154(self, tk, FMAPSTRITER_INLI_1122(self))) {
  778.    goto after_loop;
  779.   }
  780.   if (FMAPSTRITER_INLI_1154(self, tk, k)) {
  781.    FMAPSTRITER_INLI_1156(r_1161, h, TUPSTRITER_INLIN_1127(TUPSTRITER_INLINE_zero, k, t_1159));
  782.    return r_1161;
  783.   }
  784.   h = (c_INT_plus_INT_INT_chk(h,1));
  785.  }
  786.  after_loop: ;
  787.  if ((h==asm_1162)) {
  788.   h = 0;
  789.   while (1) {
  790.    tk_1163 = (TUPSTRITER_INLINE_blob=FMAPSTRITER_INLI_1151(r_1161, h)).t1;
  791.    if (FMAPSTRITER_INLI_1154(self, tk_1163, FMAPSTRITER_INLI_1122(self))) {
  792.     goto after_loop_1165;
  793.    }
  794.    if (FMAPSTRITER_INLI_1154(self, tk_1163, k)) {
  795.     FMAPSTRITER_INLI_1156(r_1161, h, TUPSTRITER_INLIN_1127(TUPSTRITER_INLINE_zero, k, t_1159));
  796.     return r_1161;
  797.    }
  798.    h = (c_INT_plus_INT_INT_chk(h,1));
  799.   }
  800.   after_loop_1165: ;
  801.   if (!((h!=asm_1162))) {
  802.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  803.    exit(16);
  804.   }
  805.  }
  806.  FMAPSTRITER_INLI_1156(r_1161, h, TUPSTRITER_INLIN_1127(TUPSTRITER_INLINE_zero, k, t_1159));
  807.  r_1161->hsize = (c_INT_plus_INT_INT_chk(r_1161->hsize,1));
  808.  return r_1161;
  809.  if (!FMAPSTRITER_INLI_1037(self)) {
  810.   fprintf(stderr,"Failed invariant FMAP{STR,ITER_INLINE}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  811.   exit(16);
  812.  }
  813. }
  814.  
  815.  
  816. void BE_insert_built__1167(BE self) {
  817.  BE_LEX l;
  818.  STR name_1168;
  819.  STR s1;
  820.  STR s2;
  821.  STR s3;
  822.  STR s4;
  823.  ITER_INLINE it;
  824.  BE_LEX local0;
  825.  BOOL local1;
  826.  BOOL local2;
  827.  BOOL local3;
  828.  local0 = ((BE_LEX) NULL);
  829.  l = BE_LEX_create_ST(local0, STR_plus_STR_STR(self->prog->options_55->home, ((STR) &SystemITERS)));
  830.  while (1) {
  831.   name_1168 = BE_LEX_get_str_STR(l);
  832.   s1 = BE_LEX_get_str_STR(l);
  833.   s2 = BE_LEX_get_str_STR(l);
  834.   s3 = BE_LEX_get_str_STR(l);
  835.   s4 = BE_LEX_get_str_STR(l);
  836.   if ((name_1168==((STR) NULL))) {
  837.    goto after_loop;
  838.   }
  839.   else {
  840.    if ((s1==((STR) NULL))) {
  841.     local3 = TRUE;
  842.    } else {
  843.     local3 = (s2==((STR) NULL));
  844.    }
  845.    if (local3) {
  846.     local2 = TRUE;
  847.    } else {
  848.     local2 = (s3==((STR) NULL));
  849.    }
  850.    if (local2) {
  851.     local1 = TRUE;
  852.    } else {
  853.     local1 = (s4==((STR) NULL));
  854.    }
  855.    if (local1) {
  856.     BE_barf_STR(self, ((STR) &MalformedITERSfile));
  857.    }
  858.    else {
  859.     it = ITER_INLINE_crea(((ITER_INLINE) NULL), s1, s2, s3, s4);
  860.     self->built_in_iters = FMAPSTRITER_INLI_1141(self->built_in_iters, name_1168, it);
  861.    }
  862.   }
  863.  }
  864.  after_loop: ;
  865. }
  866.  
  867.  
  868. TP FSETTP_elt_nil_TP(FSETTP self) {
  869.  TP noname1170;
  870.  TP t_1171 = ((TP) NULL);
  871.  if (t_1171==NULL) {
  872.  } else
  873.  switch (t_1171->header.tag) {
  874.   default: ;
  875.  }
  876.  return ((TP) NULL);
  877.  if (!FSETTP_invariant(self)) {
  878.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:53:10\n");
  879.   exit(16);
  880.  }
  881. }
  882.  
  883.  
  884. FSETTP FSETTP_allocate_(FSETTP self, INT n_1172) {
  885.  FSETTP noname1173;
  886.  FSETTP r_1174;
  887.  FSETTP noname1175;
  888.  FSETTP local0;
  889.  local0 = ((FSETTP) sbi_arr_alloc(sizeof(struct FSETTP_struct), FSETTP_tag, sizeof(TP) , n_1172));
  890.  local0->asize = n_1172;
  891.  r_1174 = local0;
  892.  if ((!((FSETTP_elt_nil_TP(self)==((TP) NULL))))) {
  893.   {
  894.    struct FSETTP_aset_TP_frame_struct temp1176_0;
  895.    FSETTP_aset_TP_frame 
  896.    noname1177 = &temp1176_0;
  897.    noname1177->state = 0;
  898.    while (1) {
  899.     if (noname1177->state == 0) {
  900.      noname1175 = r_1174;
  901.      noname1177->arg0 = noname1175;
  902.     }
  903.     noname1177->arg1 = FSETTP_elt_nil_TP(self);
  904.     FSETTP_aset_TP(noname1177);
  905.     if (noname1177->state == -1) goto after_loop;
  906.     0 /* No return value from iter call */;
  907.    }
  908.   }
  909.   after_loop: ;
  910.  }
  911.  return r_1174;
  912. }
  913.  
  914.  
  915. INT FSETTP_asize_INT(FSETTP self) {
  916.  INT noname1178 = ((INT) 0);
  917.   return self->asize;
  918.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  919.  exit(16);
  920. }
  921.  
  922.  
  923. FSETTP FSETTP_double_si(FSETTP self) {
  924.  FSETTP noname1179;
  925.  FSETTP r_1180;
  926.  FSETTP noname1181;
  927.  INT local0;
  928.  INT local1;
  929.  INT local2;
  930.  TP local3;
  931.  if (!((!((self==((FSETTP) NULL)))))) {
  932.   fprintf(stderr,"Violation of precondition ../Library/fset.sa:150:22\n");
  933.   exit(16);
  934.  }
  935.  local0 = (self->asize);
  936.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  937.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  938.  r_1180 = FSETTP_allocate_(self, (c_INT_plus_INT_INT_chk(local2,1)));
  939.  {
  940.   struct FSETTP_elt_TP_frame_struct temp1182_0;
  941.   FSETTP_elt_TP_frame 
  942.   noname1183 = &temp1182_0;
  943.   noname1183->state = 0;
  944.   while (1) {
  945.    if (noname1183->state == 0) {
  946.     noname1181 = self;
  947.     noname1183->arg0 = noname1181;
  948.    }
  949.    local3 = FSETTP_elt_TP(noname1183);
  950.    if (noname1183->state == -1) goto after_loop;
  951.    r_1180 = FSETTP_insert_TP(r_1180, local3);
  952.   }
  953.  }
  954.  after_loop: ;
  955.  return r_1180;
  956. }
  957.  
  958.  
  959. INT FSETTP_elt_hash_(FSETTP self, TP e_1184) {
  960.  INT noname1185 = ((INT) 0);
  961.  HASH local0;
  962.  if (e_1184==NULL) {
  963.  } else
  964.  switch (e_1184->header.tag) {
  965.   case TUPIMPL_INCLUDEI_tag:
  966.   case TUPAM_BND_CREATE_tag:
  967.   case TUPIFCIFC_tag:
  968.   case TUPSTRITER_INLINE_tag:
  969.   case TUPAM_GLOBAL_EXP_tag:
  970.   case FSTR_tag:
  971.   case TUPSIGSIG_tag:
  972.   case CHAR_tag:
  973.   case INT_tag:
  974.   case TUPTP_CLASSFSETTP_tag:
  975.   case TUPSTRSTR_tag:
  976.   case TUPINTINTINT_tag:
  977.   case STR_tag:
  978.   case TUPSFILE_IDSFILE_ID_tag:
  979.   case TUPAM_ITER_CALL__tag:
  980.   case TUPTR_EXPRTR_EXPR_tag:
  981.   case TUPTPFMAPIDENTAM_tag:
  982.   case TUPARRAYTPTP_tag:
  983.   case TUPAM_CONSTAM_CONST_tag:
  984.   case TUPSTRTUPSTRSTR_tag:
  985.   case TUPTPIMPL_tag:
  986.   case TUPSIGAM_ROUT_DEF_tag:
  987.   case TUPARRAYTPARRAYB_tag:
  988.   case TUPIDENTAM_GLOBA_tag:
  989.   case TUPAM_BND_ITER_C_tag:
  990.   case TUPAM_LOCAL_EXPR_tag:
  991.   case TUPSTRFSETSTR_tag:
  992.   case TUPAM_ROUT_DEFAM_tag:
  993.   case TUPTPTP_tag:
  994.   case IDENT_tag:
  995.   case TUPTPINT_tag:
  996.   case TUPIDENTINT_tag:
  997.   case TUPIDENTIDENT_tag:
  998.   case TUPTP_CLASSFSETT_tag:
  999.   case TUPCHARCHAR_tag:
  1000.   case TUPIDENTTP_tag:
  1001.   case TUPIDENTARRAYTP_tag:
  1002.   case TUPAM_EXPRAM_EXPR_tag:
  1003.   case TUPTPIFC_tag:
  1004.   case TUPTP_CLASSTP_CLASS_tag:
  1005.   case TUPAM_STMTAM_STMT_tag:
  1006.   case TUPINTINT_tag:
  1007.   case TUPOBSTR_tag:
  1008.   case TUPFLISTAM_CONST_tag:
  1009.   case TUPAM_EXPRTP_tag:
  1010.   case TUPBOOLINTIINTBOOL_tag:
  1011.    local0 = ((HASH) e_1184);
  1012.    return (*HASH_hash_INT[local0->header.tag+HASH_hash_INT_offset])(local0); break;
  1013.   default: ;
  1014.  }
  1015.  return (c_SYS_id_OB_INT(((SYS) NULL),((OB) e_1184)));
  1016.  if (!FSETTP_invariant(self)) {
  1017.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:63:11\n");
  1018.   exit(16);
  1019.  }
  1020. }
  1021.  
  1022.  
  1023. TP FSETTP_aget_INT_TP(FSETTP self, INT ind_1186) {
  1024.  TP noname1187;
  1025.  BOOL local0;
  1026.  INT local1;
  1027.  INT local2;
  1028.  if ((!((self==((FSETTP) NULL))))) {
  1029.   local1 = 0;
  1030.   local2 = (self->asize);
  1031.   local0 = INT_is_bet_INT_I(ind_1186, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1032.  } else {
  1033.   local0 = FALSE;
  1034.  }
  1035.  if (!(local0)) {
  1036.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  1037.   exit(16);
  1038.  }
  1039.  if (ind_1186<0||ind_1186>=self->asize) {
  1040.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  1041.   exit(16);
  1042.  }
  1043.  return self->arr_part[ind_1186];
  1044.  if (!FSETTP_invariant(self)) {
  1045.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/aref.sa:33:7\n");
  1046.   exit(16);
  1047.  }
  1048. }
  1049.  
  1050.  
  1051. BOOL FSETTP_elt_eq_TP(FSETTP self, TP e1_1188, TP e2_1189) {
  1052.  BOOL noname1190 = ((BOOL) 0);
  1053.  if (e1_1188==NULL) {
  1054.  } else
  1055.  switch (e1_1188->header.tag) {
  1056.   default: ;
  1057.  }
  1058.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_1188),((OB) e2_1189));
  1059.  if (!FSETTP_invariant(self)) {
  1060.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:44:9\n");
  1061.   exit(16);
  1062.  }
  1063. }
  1064.  
  1065.  
  1066. void FSETTP_aset_INT_TP(FSETTP self, INT ind_1191, TP val_1192) {
  1067.  BOOL local0;
  1068.  INT local1;
  1069.  INT local2;
  1070.  if ((!((self==((FSETTP) NULL))))) {
  1071.   local1 = 0;
  1072.   local2 = (self->asize);
  1073.   local0 = INT_is_bet_INT_I(ind_1191, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1074.  } else {
  1075.   local0 = FALSE;
  1076.  }
  1077.  if (!(local0)) {
  1078.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1079.   exit(16);
  1080.  }
  1081.  if (ind_1191<0||ind_1191>=self->asize) {
  1082.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1083.   exit(16);
  1084.  }
  1085.  self->arr_part[ind_1191] = val_1192;
  1086.  if (!FSETTP_invariant(self)) {
  1087.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/aref.sa:38:7\n");
  1088.   exit(16);
  1089.  }
  1090. }
  1091.  
  1092.  
  1093. FSETTP FSETTP_insert_TP(FSETTP self, TP e_1193) {
  1094.  FSETTP noname1194;
  1095.  FSETTP r_1195;
  1096.  INT asz_1196 = ((INT) 0);
  1097.  INT h = ((INT) 0);
  1098.  TP te;
  1099.  TP te_1197;
  1100.  INT local0;
  1101.  INT local1;
  1102.  INT local2;
  1103.  r_1195 = self;
  1104.  if ((r_1195==((FSETTP) NULL))) {
  1105.   r_1195 = FSETTP_allocate_(self, 5);
  1106.  }
  1107.  else {
  1108.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  1109.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  1110.   if ((local1>(self->asize))) {
  1111.    r_1195 = FSETTP_double_si(self);
  1112.   }
  1113.  }
  1114.  asz_1196 = (r_1195->asize);
  1115.  local2 = FSETTP_elt_hash_(r_1195, e_1193);
  1116.  h = (local2&(c_INT_minus_INT_INT_chk(asz_1196,2)));
  1117.  while (1) {
  1118.   te = FSETTP_aget_INT_TP(r_1195, h);
  1119.   if (FSETTP_elt_eq_TP(self, te, FSETTP_elt_nil_TP(self))) {
  1120.    goto after_loop;
  1121.   }
  1122.   else {
  1123.    if (FSETTP_elt_eq_TP(self, te, e_1193)) {
  1124.     FSETTP_aset_INT_TP(r_1195, h, e_1193);
  1125.     return r_1195;
  1126.    }
  1127.   }
  1128.   h = (c_INT_plus_INT_INT_chk(h,1));
  1129.  }
  1130.  after_loop: ;
  1131.  if ((h==(c_INT_minus_INT_INT_chk(asz_1196,1)))) {
  1132.   h = 0;
  1133.   while (1) {
  1134.    te_1197 = FSETTP_aget_INT_TP(r_1195, h);
  1135.    if (FSETTP_elt_eq_TP(self, te_1197, FSETTP_elt_nil_TP(self))) {
  1136.     goto after_loop_1199;
  1137.    }
  1138.    else {
  1139.     if (FSETTP_elt_eq_TP(self, te_1197, e_1193)) {
  1140.      FSETTP_aset_INT_TP(r_1195, h, e_1193);
  1141.      return r_1195;
  1142.     }
  1143.    }
  1144.    h = (c_INT_plus_INT_INT_chk(h,1));
  1145.   }
  1146.   after_loop_1199: ;
  1147.   if (!((h!=(c_INT_minus_INT_INT_chk(asz_1196,1))))) {
  1148.    fprintf(stderr,"Violation of assertion ../Library/fset.sa:177:15\n");
  1149.    exit(16);
  1150.   }
  1151.  }
  1152.  FSETTP_aset_INT_TP(r_1195, h, e_1193);
  1153.  r_1195->hsize = (c_INT_plus_INT_INT_chk(r_1195->hsize,1));
  1154.  return r_1195;
  1155.  if (!FSETTP_invariant(self)) {
  1156.   fprintf(stderr,"Failed invariant FSET{$TP}::invariant:BOOL ../Library/fset.sa:158:9\n");
  1157.   exit(16);
  1158.  }
  1159. }
  1160.  
  1161.  
  1162. INT FMAPOBSTR_key_ha(FMAPOBSTR self, OB k) {
  1163.  INT noname1201 = ((INT) 0);
  1164.  HASH local0;
  1165.  if (k==NULL) {
  1166.  } else
  1167.  switch (k->header.tag) {
  1168.   case TUPIMPL_INCLUDEI_tag:
  1169.   case TUPAM_BND_CREATE_tag:
  1170.   case TUPIFCIFC_tag:
  1171.   case TUPSTRITER_INLINE_tag:
  1172.   case TUPAM_GLOBAL_EXP_tag:
  1173.   case FSTR_tag:
  1174.   case TUPSIGSIG_tag:
  1175.   case CHAR_tag:
  1176.   case INT_tag:
  1177.   case TUPTP_CLASSFSETTP_tag:
  1178.   case TUPSTRSTR_tag:
  1179.   case TUPINTINTINT_tag:
  1180.   case STR_tag:
  1181.   case TUPSFILE_IDSFILE_ID_tag:
  1182.   case TUPAM_ITER_CALL__tag:
  1183.   case TUPTR_EXPRTR_EXPR_tag:
  1184.   case TUPTPFMAPIDENTAM_tag:
  1185.   case TUPARRAYTPTP_tag:
  1186.   case TUPAM_CONSTAM_CONST_tag:
  1187.   case TUPSTRTUPSTRSTR_tag:
  1188.   case TUPTPIMPL_tag:
  1189.   case TUPSIGAM_ROUT_DEF_tag:
  1190.   case TUPARRAYTPARRAYB_tag:
  1191.   case TUPIDENTAM_GLOBA_tag:
  1192.   case TUPAM_BND_ITER_C_tag:
  1193.   case TUPAM_LOCAL_EXPR_tag:
  1194.   case TUPSTRFSETSTR_tag:
  1195.   case TUPAM_ROUT_DEFAM_tag:
  1196.   case TUPTPTP_tag:
  1197.   case IDENT_tag:
  1198.   case TUPTPINT_tag:
  1199.   case TUPIDENTINT_tag:
  1200.   case TUPIDENTIDENT_tag:
  1201.   case TUPTP_CLASSFSETT_tag:
  1202.   case TUPCHARCHAR_tag:
  1203.   case TUPIDENTTP_tag:
  1204.   case TUPIDENTARRAYTP_tag:
  1205.   case TUPAM_EXPRAM_EXPR_tag:
  1206.   case TUPTPIFC_tag:
  1207.   case TUPTP_CLASSTP_CLASS_tag:
  1208.   case TUPAM_STMTAM_STMT_tag:
  1209.   case TUPINTINT_tag:
  1210.   case TUPOBSTR_tag:
  1211.   case TUPFLISTAM_CONST_tag:
  1212.   case TUPAM_EXPRTP_tag:
  1213.   case TUPBOOLINTIINTBOOL_tag:
  1214.    local0 = ((HASH) k);
  1215.    return (*HASH_hash_INT[local0->header.tag+HASH_hash_INT_offset])(local0); break;
  1216.   default: ;
  1217.  }
  1218.  return (c_SYS_id_OB_INT(((SYS) NULL),k));
  1219.  if (!FMAPOBSTR_invari(self)) {
  1220.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:64:11\n");
  1221.   exit(16);
  1222.  }
  1223. }
  1224.  
  1225.  
  1226. INT FMAPOBSTR_asize_INT(FMAPOBSTR self) {
  1227.  INT noname1202 = ((INT) 0);
  1228.   return self->asize;
  1229.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  1230.  exit(16);
  1231. }
  1232.  
  1233.  
  1234. TUPOBSTR FMAPOBSTR_aget_I(FMAPOBSTR self, INT ind_1203) {
  1235.  TUPOBSTR noname1204 = TUPOBSTR_zero;
  1236.  BOOL local0;
  1237.  INT local1;
  1238.  INT local2;
  1239.  if ((!((self==((FMAPOBSTR) NULL))))) {
  1240.   local1 = 0;
  1241.   local2 = (self->asize);
  1242.   local0 = INT_is_bet_INT_I(ind_1203, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1243.  } else {
  1244.   local0 = FALSE;
  1245.  }
  1246.  if (!(local0)) {
  1247.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  1248.   exit(16);
  1249.  }
  1250.  if (ind_1203<0||ind_1203>=self->asize) {
  1251.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  1252.   exit(16);
  1253.  }
  1254.  return self->arr_part[ind_1203];
  1255. }
  1256.  
  1257.  
  1258. BOOL FMAPOBSTR_key_eq(FMAPOBSTR self, OB k1, OB k2) {
  1259.  BOOL noname1205 = ((BOOL) 0);
  1260.  if (k1==NULL) {
  1261.  } else
  1262.  switch (k1->header.tag) {
  1263.   default: ;
  1264.  }
  1265.  return c_SYS_ob_eq_OB_OB_BOOL(k1,k2);
  1266.  if (!FMAPOBSTR_invari(self)) {
  1267.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:44:9\n");
  1268.   exit(16);
  1269.  }
  1270. }
  1271.  
  1272.  
  1273. OB FMAPOBSTR_key_nil_OB(FMAPOBSTR self) {
  1274.  OB noname1206;
  1275.  OB k = ((OB) NULL);
  1276.  if (k==NULL) {
  1277.  } else
  1278.  switch (k->header.tag) {
  1279.   default: ;
  1280.  }
  1281.  return ((OB) NULL);
  1282.  if (!FMAPOBSTR_invari(self)) {
  1283.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:54:10\n");
  1284.   exit(16);
  1285.  }
  1286. }
  1287.  
  1288.  
  1289. STR FMAPOBSTR_get_OB_STR(FMAPOBSTR self, OB k) {
  1290.  STR noname1207;
  1291.  INT h = ((INT) 0);
  1292.  OB tk;
  1293.  OB tk_1208;
  1294.  INT local0;
  1295.  INT local1;
  1296.  INT local2;
  1297.  INT local3;
  1298.  if ((self==((FMAPOBSTR) NULL))) {
  1299.   return ((STR) NULL);
  1300.  }
  1301.  local0 = FMAPOBSTR_key_ha(self, k);
  1302.  local1 = (self->asize);
  1303.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  1304.  while (1) {
  1305.   tk = (TUPOBSTR_blob=FMAPOBSTR_aget_I(self, h)).t1;
  1306.   if (FMAPOBSTR_key_eq(self, tk, k)) {
  1307.    return (TUPOBSTR_blob=FMAPOBSTR_aget_I(self, h)).t2;
  1308.   }
  1309.   else {
  1310.    if (FMAPOBSTR_key_eq(self, tk, FMAPOBSTR_key_nil_OB(self))) {
  1311.     goto after_loop;
  1312.    }
  1313.   }
  1314.   h = (c_INT_plus_INT_INT_chk(h,1));
  1315.  }
  1316.  after_loop: ;
  1317.  local2 = (self->asize);
  1318.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  1319.   h = 0;
  1320.   while (1) {
  1321.    tk_1208 = (TUPOBSTR_blob=FMAPOBSTR_aget_I(self, h)).t1;
  1322.    if (FMAPOBSTR_key_eq(self, tk_1208, k)) {
  1323.     return (TUPOBSTR_blob=FMAPOBSTR_aget_I(self, h)).t2;
  1324.    }
  1325.    else {
  1326.     if (FMAPOBSTR_key_eq(self, tk_1208, FMAPOBSTR_key_nil_OB(self))) {
  1327.      goto after_loop_1210;
  1328.     }
  1329.    }
  1330.    h = (c_INT_plus_INT_INT_chk(h,1));
  1331.   }
  1332.   after_loop_1210: ;
  1333.   local3 = (self->asize);
  1334.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  1335.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
  1336.    exit(16);
  1337.   }
  1338.  }
  1339.  return ((STR) NULL);
  1340.  if (!FMAPOBSTR_invari(self)) {
  1341.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:136:6\n");
  1342.   exit(16);
  1343.  }
  1344. }
  1345.  
  1346.  
  1347. TUPOBSTR TUPOBSTR_t1_OB_T(TUPOBSTR self, OB t1_1212) {
  1348.  TUPOBSTR local0;
  1349.  local0 = self;
  1350.  local0.t1 = t1_1212;
  1351.  return local0;
  1352. }
  1353.  
  1354.  
  1355. TUPOBSTR TUPOBSTR_t2_STR_(TUPOBSTR self, STR t2_1213) {
  1356.  TUPOBSTR local0;
  1357.  local0 = self;
  1358.  local0.t2 = t2_1213;
  1359.  return local0;
  1360. }
  1361.  
  1362.  
  1363. TUPOBSTR TUPOBSTR_create_(TUPOBSTR self, OB at1, STR at2) {
  1364.  TUPOBSTR noname1214 = TUPOBSTR_zero;
  1365.  TUPOBSTR local0;
  1366.  local0 = TUPOBSTR_t1_OB_T(self, at1);
  1367.  return TUPOBSTR_t2_STR_(local0, at2);
  1368. }
  1369.  
  1370.  
  1371. FMAPOBSTR FMAPOBSTR_alloca(FMAPOBSTR self, INT n_1215) {
  1372.  FMAPOBSTR noname1216;
  1373.  FMAPOBSTR r_1217;
  1374.  FMAPOBSTR noname1218;
  1375.  FMAPOBSTR local0;
  1376.  TUPOBSTR local1;
  1377.  OB local2;
  1378.  local0 = ((FMAPOBSTR) sbi_arr_alloc(sizeof(struct FMAPOBSTR_struct), FMAPOBSTR_tag, sizeof(TUPOBSTR) , n_1215));
  1379.  local0->asize = n_1215;
  1380.  r_1217 = local0;
  1381.  if ((!((FMAPOBSTR_key_nil_OB(self)==((OB) NULL))))) {
  1382.   {
  1383.    struct FMAPOBSTR_aset_T_frame_struct temp1219_0;
  1384.    FMAPOBSTR_aset_T_frame 
  1385.    noname1220 = &temp1219_0;
  1386.    noname1220->state = 0;
  1387.    while (1) {
  1388.     if (noname1220->state == 0) {
  1389.      noname1218 = r_1217;
  1390.      noname1220->arg0 = noname1218;
  1391.     }
  1392.     local1 = TUPOBSTR_zero;
  1393.     local2 = FMAPOBSTR_key_nil_OB(self);
  1394.     noname1220->arg1 = TUPOBSTR_create_(local1, local2, ((STR) NULL));
  1395.     FMAPOBSTR_aset_T(noname1220);
  1396.     if (noname1220->state == -1) goto after_loop;
  1397.     0 /* No return value from iter call */;
  1398.    }
  1399.   }
  1400.   after_loop: ;
  1401.  }
  1402.  return r_1217;
  1403. }
  1404.  
  1405.  
  1406. FMAPOBSTR FMAPOBSTR_insert(FMAPOBSTR self, TUPOBSTR p) {
  1407.  FMAPOBSTR noname1221;
  1408.  return FMAPOBSTR_insert_1222(self, p.t1, p.t2);
  1409.  if (!FMAPOBSTR_invari(self)) {
  1410.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:202:14\n");
  1411.   exit(16);
  1412.  }
  1413. }
  1414.  
  1415.  
  1416. FMAPOBSTR FMAPOBSTR_double(FMAPOBSTR self) {
  1417.  FMAPOBSTR noname1223;
  1418.  INT ns = ((INT) 0);
  1419.  FMAPOBSTR r_1224;
  1420.  FMAPOBSTR noname1225;
  1421.  INT local0;
  1422.  INT local1;
  1423.  INT local2;
  1424.  TUPOBSTR local3;
  1425.  if (!((!((self==((FMAPOBSTR) NULL)))))) {
  1426.   fprintf(stderr,"Violation of precondition ../Library/fmap.sa:172:22\n");
  1427.   exit(16);
  1428.  }
  1429.  local0 = (self->asize);
  1430.  local1 = (c_INT_minus_INT_INT_chk(local0,1));
  1431.  local2 = (c_INT_times_INT_INT_chk(local1,2));
  1432.  ns = (c_INT_plus_INT_INT_chk(local2,1));
  1433.  r_1224 = FMAPOBSTR_alloca(self, ns);
  1434.  {
  1435.   struct FMAPOBSTR_pairs__frame_struct temp1226_0;
  1436.   FMAPOBSTR_pairs__frame 
  1437.   noname1227 = &temp1226_0;
  1438.   noname1227->state = 0;
  1439.   while (1) {
  1440.    if (noname1227->state == 0) {
  1441.     noname1225 = self;
  1442.     noname1227->arg0 = noname1225;
  1443.    }
  1444.    local3 = FMAPOBSTR_pairs_(noname1227);
  1445.    if (noname1227->state == -1) goto after_loop;
  1446.    r_1224 = FMAPOBSTR_insert(r_1224, local3);
  1447.   }
  1448.  }
  1449.  after_loop: ;
  1450.  return r_1224;
  1451. }
  1452.  
  1453.  
  1454. void FMAPOBSTR_aset_I(FMAPOBSTR self, INT ind_1228, TUPOBSTR val_1229) {
  1455.  BOOL local0;
  1456.  INT local1;
  1457.  INT local2;
  1458.  if ((!((self==((FMAPOBSTR) NULL))))) {
  1459.   local1 = 0;
  1460.   local2 = (self->asize);
  1461.   local0 = INT_is_bet_INT_I(ind_1228, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1462.  } else {
  1463.   local0 = FALSE;
  1464.  }
  1465.  if (!(local0)) {
  1466.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1467.   exit(16);
  1468.  }
  1469.  if (ind_1228<0||ind_1228>=self->asize) {
  1470.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1471.   exit(16);
  1472.  }
  1473.  self->arr_part[ind_1228] = val_1229;
  1474. }
  1475.  
  1476.  
  1477. FMAPOBSTR FMAPOBSTR_insert_1222(FMAPOBSTR self, OB k, STR t_1230) {
  1478.  FMAPOBSTR noname1231;
  1479.  FMAPOBSTR r_1232;
  1480.  INT h = ((INT) 0);
  1481.  INT asm_1233 = ((INT) 0);
  1482.  OB tk;
  1483.  OB tk_1234;
  1484.  INT local0;
  1485.  INT local1;
  1486.  INT local2;
  1487.  INT local3;
  1488.  INT local4;
  1489.  r_1232 = self;
  1490.  if ((r_1232==((FMAPOBSTR) NULL))) {
  1491.   r_1232 = FMAPOBSTR_alloca(self, 5);
  1492.  }
  1493.  else {
  1494.   local0 = (c_INT_plus_INT_INT_chk(self->hsize,1));
  1495.   local1 = (c_INT_times_INT_INT_chk(local0,2));
  1496.   if ((local1>(self->asize))) {
  1497.    r_1232 = FMAPOBSTR_double(self);
  1498.   }
  1499.  }
  1500.  local2 = FMAPOBSTR_key_ha(r_1232, k);
  1501.  local3 = (r_1232->asize);
  1502.  h = (local2&(c_INT_minus_INT_INT_chk(local3,2)));
  1503.  local4 = (r_1232->asize);
  1504.  asm_1233 = (c_INT_minus_INT_INT_chk(local4,1));
  1505.  while (1) {
  1506.   tk = (TUPOBSTR_blob=FMAPOBSTR_aget_I(r_1232, h)).t1;
  1507.   if (FMAPOBSTR_key_eq(self, tk, FMAPOBSTR_key_nil_OB(self))) {
  1508.    goto after_loop;
  1509.   }
  1510.   if (FMAPOBSTR_key_eq(self, tk, k)) {
  1511.    FMAPOBSTR_aset_I(r_1232, h, TUPOBSTR_create_(TUPOBSTR_zero, k, t_1230));
  1512.    return r_1232;
  1513.   }
  1514.   h = (c_INT_plus_INT_INT_chk(h,1));
  1515.  }
  1516.  after_loop: ;
  1517.  if ((h==asm_1233)) {
  1518.   h = 0;
  1519.   while (1) {
  1520.    tk_1234 = (TUPOBSTR_blob=FMAPOBSTR_aget_I(r_1232, h)).t1;
  1521.    if (FMAPOBSTR_key_eq(self, tk_1234, FMAPOBSTR_key_nil_OB(self))) {
  1522.     goto after_loop_1236;
  1523.    }
  1524.    if (FMAPOBSTR_key_eq(self, tk_1234, k)) {
  1525.     FMAPOBSTR_aset_I(r_1232, h, TUPOBSTR_create_(TUPOBSTR_zero, k, t_1230));
  1526.     return r_1232;
  1527.    }
  1528.    h = (c_INT_plus_INT_INT_chk(h,1));
  1529.   }
  1530.   after_loop_1236: ;
  1531.   if (!((h!=asm_1233))) {
  1532.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:199:15\n");
  1533.    exit(16);
  1534.   }
  1535.  }
  1536.  FMAPOBSTR_aset_I(r_1232, h, TUPOBSTR_create_(TUPOBSTR_zero, k, t_1230));
  1537.  r_1232->hsize = (c_INT_plus_INT_INT_chk(r_1232->hsize,1));
  1538.  return r_1232;
  1539.  if (!FMAPOBSTR_invari(self)) {
  1540.   fprintf(stderr,"Failed invariant FMAP{$OB,STR}::invariant:BOOL ../Library/fmap.sa:180:9\n");
  1541.   exit(16);
  1542.  }
  1543. }
  1544.  
  1545.  
  1546. void BE_force_mangle_(BE self, OB ob_1238, STR s_1239) {
  1547.  STR x;
  1548.  STR local0;
  1549.  x = FMAPOBSTR_get_OB_STR(self->manglemap, ob_1238);
  1550.  if ((x==((STR) NULL))) {
  1551.   self->manglemap = FMAPOBSTR_insert_1222(self->manglemap, ob_1238, s_1239);
  1552.   self->mangleset = FSETSTR_insert_S(self->mangleset, s_1239);
  1553.  }
  1554.  else {
  1555.   if (STR_is_neq_STR_BOOL(x, s_1239)) {
  1556.    local0 = STR_plus_STR_STR(((STR) &Name_1240), s_1239);
  1557.    BE_barf_STR(self, STR_plus_STR_STR(local0, ((STR) &couldnotbeassign)));
  1558.   }
  1559.  }
  1560. }
  1561.  
  1562.  
  1563. void BE_insert_built__1241(BE self) {
  1564.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->dollar_ob));
  1565.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->bool_2));
  1566.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->char_5));
  1567.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->int_1));
  1568.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->flt));
  1569.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->fltd));
  1570.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->fltx));
  1571.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->fltdx));
  1572.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->str_4));
  1573.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->ext_ob));
  1574.  self->built_in_classes = FSETTP_insert_TP(self->built_in_classes, ((TP) self->prog->tp_builtin->dollar_rehash));
  1575.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->bool_2), ((STR) &BOOL_1242));
  1576.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->char_5), ((STR) &CHAR_1243));
  1577.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->int_1), ((STR) &INT_1244));
  1578.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->flt), ((STR) &FLT_1245));
  1579.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->fltd), ((STR) &FLTD_1246));
  1580.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->fltx), ((STR) &FLTX_1247));
  1581.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->fltdx), ((STR) &FLTDX_1248));
  1582.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->str_4), ((STR) &STR_1249));
  1583.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->dollar_ob), ((STR) &OB_1250));
  1584.  BE_force_mangle_(self, ((OB) self->prog->tp_builtin->rout), ((STR) &ROUT_1251));
  1585. }
  1586.  
  1587.  
  1588. void BE_insert_specia(BE self) {
  1589.  BE_LEX l;
  1590.  STR ident1;
  1591.  STR ident2;
  1592.  BE_LEX local0;
  1593.  local0 = ((BE_LEX) NULL);
  1594.  l = BE_LEX_create_ST(local0, STR_plus_STR_STR(self->prog->options_55->home, ((STR) &SystemEXTERNS)));
  1595.  while (1) {
  1596.   ident1 = BE_LEX_get_str_STR(l);
  1597.   ident2 = BE_LEX_get_str_STR(l);
  1598.   if ((ident1==((STR) NULL))) {
  1599.    goto after_loop;
  1600.   }
  1601.   else {
  1602.    if ((ident2==((STR) NULL))) {
  1603.     BE_barf_STR(self, ((STR) &MalformedEXTERNSfile));
  1604.    }
  1605.    else {
  1606.     self->special_externs = FMAPSTRSTR_inser_586(self->special_externs, ident1, ident2);
  1607.    }
  1608.   }
  1609.  }
  1610.  after_loop: ;
  1611. }
  1612.  
  1613.  
  1614. BE BE_create_PROG_BE(BE self, PROG p) {
  1615.  BE noname1253;
  1616.  BE res;
  1617.  BE local0;
  1618.  local0 = ((BE) sbi_alloc(sizeof(struct BE_struct), BE_tag));
  1619.  res = local0;
  1620.  res->prog = p;
  1621.  res->manglemap = FMAPOBSTR_create(((FMAPOBSTR) NULL));
  1622.  res->mangleset = FSETSTR_create_F(((FSETSTR) NULL));
  1623.  res->forbidden = FSETSTR_create_F(((FSETSTR) NULL));
  1624.  res->special_externs = FMAPSTRSTR_creat(((FMAPSTRSTR) NULL));
  1625.  res->counter_21 = 1;
  1626.  res->built_in_routines = FMAPSTRTUPSTRSTR_1033(((FMAPSTRTUPSTRSTR) NULL));
  1627.  res->built_in_iters = FMAPSTRITER_INLI(((FMAPSTRITER_INLINE) NULL));
  1628.  res->built_in_classes = FSETTP_create_FSETTP(((FSETTP) NULL));
  1629.  res->abstract_routs = FLISTAM_ROUT_DEF_1039(((FLISTAM_ROUT_DEF) NULL));
  1630.  res->bnd_rout_creates = FLISTAM_BND_CREA_1042(((FLISTAM_BND_CREA) NULL));
  1631.  res->str_count = 1;
  1632.  res->inlined_sigs = FMAPSIGAM_ROUT_D(((FMAPSIGAM_ROUT_DEF) NULL));
  1633.  BE_insert_forbid(res);
  1634.  BE_insert_built_(res);
  1635.  BE_insert_built__1167(res);
  1636.  BE_insert_built__1241(res);
  1637.  BE_insert_specia(res);
  1638.  return res;
  1639. }
  1640.  
  1641.  
  1642. void PROG_create_back_end(PROG self) {
  1643.  self->back_end = BE_create_PROG_BE(((BE) NULL), self);
  1644. }
  1645.  
  1646.  
  1647. void SFILE_ID_source_FSTR(SFILE_ID self, FSTR source_1254) {
  1648.  shared_SFILE_ID__1255 = source_1254;
  1649. }
  1650.  
  1651.  
  1652. FLISTSTR FLISTSTR_create__1256(FLISTSTR self, INT n_1257) {
  1653.  FLISTSTR noname1258;
  1654.  FLISTSTR local0;
  1655.  if (!((n_1257>=1))) {
  1656.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:57:9\n");
  1657.   exit(16);
  1658.  }
  1659.  local0 = ((FLISTSTR) sbi_arr_alloc(sizeof(struct FLISTSTR_struct), FLISTSTR_tag, sizeof(STR) , n_1257));
  1660.  local0->asize = n_1257;
  1661.  return local0;
  1662.  if (!FLISTSTR_invaria(self)) {
  1663.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:57:9\n");
  1664.   exit(16);
  1665.  }
  1666. }
  1667.  
  1668.  
  1669. void SFILE_ID_files_F(SFILE_ID self, FLISTSTR files_1259) {
  1670.  shared_SFILE_ID__801 = files_1259;
  1671. }
  1672.  
  1673.  
  1674. FLISTINT FLISTINT_create_(FLISTINT self, INT n_1260) {
  1675.  FLISTINT noname1261;
  1676.  FLISTINT local0;
  1677.  if (!((n_1260>=1))) {
  1678.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:57:9\n");
  1679.   exit(16);
  1680.  }
  1681.  local0 = ((FLISTINT) sbi_arr_alloc_atomic(sizeof(struct FLISTINT_struct), FLISTINT_tag, sizeof(INT) , n_1260));
  1682.  local0->asize = n_1260;
  1683.  return local0;
  1684.  if (!FLISTINT_invaria(self)) {
  1685.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:57:9\n");
  1686.   exit(16);
  1687.  }
  1688. }
  1689.  
  1690.  
  1691. void SFILE_ID_lines_F(SFILE_ID self, FLISTINT lines) {
  1692.  shared_SFILE_ID_ = lines;
  1693. }
  1694.  
  1695.  
  1696. BOOL FLISTINT_is_empt(FLISTINT self) {
  1697.  BOOL noname1262 = ((BOOL) 0);
  1698.  INT local0;
  1699.  local0 = FLISTINT_size_INT(self);
  1700.  return (local0==0);
  1701.  if (!FLISTINT_invaria(self)) {
  1702.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:113:11\n");
  1703.   exit(16);
  1704.  }
  1705. }
  1706.  
  1707.  
  1708. void FLISTINT_aclear(FLISTINT self) {
  1709.  INT nil = ((INT) 0);
  1710.  FLISTINT noname1263;
  1711.  if (!((!((self==((FLISTINT) NULL)))))) {
  1712.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  1713.   exit(16);
  1714.  }
  1715.  {
  1716.   struct FLISTINT_aset_INT_frame_struct temp1264_0;
  1717.   FLISTINT_aset_INT_frame 
  1718.   noname1265 = &temp1264_0;
  1719.   noname1265->state = 0;
  1720.   while (1) {
  1721.    if (noname1265->state == 0) {
  1722.     noname1263 = self;
  1723.     noname1265->arg0 = noname1263;
  1724.    }
  1725.    noname1265->arg1 = nil;
  1726.    FLISTINT_aset_INT(noname1265);
  1727.    if (noname1265->state == -1) goto after_loop;
  1728.    0 /* No return value from iter call */;
  1729.   }
  1730.  }
  1731.  after_loop: ;
  1732. }
  1733.  
  1734.  
  1735. void FLISTINT_clear(FLISTINT self) {
  1736.  if (FLISTINT_is_empt(self)) {
  1737.   return;
  1738.  }
  1739.  else {
  1740.   FLISTINT_aclear(self);
  1741.   self->loc_17 = 0;
  1742.  }
  1743.  if (!FLISTINT_invaria(self)) {
  1744.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:117:8\n");
  1745.   exit(16);
  1746.  }
  1747. }
  1748.  
  1749.  
  1750. void FLISTINT_aref_as(FLISTINT self, INT ind_1266, INT val_1267) {
  1751.  BOOL local0;
  1752.  INT local1;
  1753.  INT local2;
  1754.  if ((!((self==((FLISTINT) NULL))))) {
  1755.   local1 = 0;
  1756.   local2 = (self->asize);
  1757.   local0 = INT_is_bet_INT_I(ind_1266, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  1758.  } else {
  1759.   local0 = FALSE;
  1760.  }
  1761.  if (!(local0)) {
  1762.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  1763.   exit(16);
  1764.  }
  1765.  if (ind_1266<0||ind_1266>=self->asize) {
  1766.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  1767.   exit(16);
  1768.  }
  1769.  self->arr_part[ind_1266] = val_1267;
  1770. }
  1771.  
  1772.  
  1773. void FLISTINT_aset_IN(FLISTINT self, INT ind_1268, INT val_1269) {
  1774.  BOOL local0;
  1775.  INT local1;
  1776.  if ((!((self==((FLISTINT) NULL))))) {
  1777.   local1 = 0;
  1778.   local0 = INT_is_bet_INT_I(ind_1268, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  1779.  } else {
  1780.   local0 = FALSE;
  1781.  }
  1782.  if (!(local0)) {
  1783.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  1784.   exit(16);
  1785.  }
  1786.  FLISTINT_aref_as(self, ind_1268, val_1269);
  1787.  if (!FLISTINT_invaria(self)) {
  1788.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:73:7\n");
  1789.   exit(16);
  1790.  }
  1791. }
  1792.  
  1793.  
  1794. FLISTINT FLISTINT_push_IN(FLISTINT self, INT e_1270) {
  1795.  FLISTINT noname1271;
  1796.  FLISTINT r_1272 = ((FLISTINT) NULL);
  1797.  FLISTINT noname1273;
  1798.  FLISTINT noname1274;
  1799.  FLISTINT local0;
  1800.  INT local1;
  1801.  FLISTINT local2;
  1802.  INT local3;
  1803.  INT local4;
  1804.  INT local5;
  1805.  if ((self==((FLISTINT) NULL))) {
  1806.   local0 = ((FLISTINT) sbi_arr_alloc_atomic(sizeof(struct FLISTINT_struct), FLISTINT_tag, sizeof(INT) , 5));
  1807.   local0->asize = 5;
  1808.   r_1272 = local0;
  1809.  }
  1810.  else {
  1811.   local1 = self->loc_17;
  1812.   if ((local1<(self->asize))) {
  1813.    r_1272 = self;
  1814.   }
  1815.   else {
  1816.    local3 = 2;
  1817.    local2 = ((FLISTINT) sbi_arr_alloc_atomic(sizeof(struct FLISTINT_struct), FLISTINT_tag, sizeof(INT) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  1818.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  1819.    r_1272 = local2;
  1820.    r_1272->loc_17 = self->loc_17;
  1821.    {
  1822.     struct FLISTINT_elt_INT_frame_struct temp1275_0;
  1823.     FLISTINT_elt_INT_frame 
  1824.     noname1276 = &temp1275_0;
  1825.     struct FLISTINT_aset_INT_frame_struct temp1275_1;
  1826.     FLISTINT_aset_INT_frame 
  1827.     noname1277 = &temp1275_1;
  1828.     noname1276->state = 0;
  1829.     noname1277->state = 0;
  1830.     while (1) {
  1831.      if (noname1277->state == 0) {
  1832.       noname1274 = r_1272;
  1833.       noname1277->arg0 = noname1274;
  1834.      }
  1835.      if (noname1276->state == 0) {
  1836.       noname1273 = self;
  1837.       noname1276->arg0 = noname1273;
  1838.      }
  1839.      local4 = FLISTINT_elt_INT(noname1276);
  1840.      if (noname1276->state == -1) goto after_loop;
  1841.      noname1277->arg1 = local4;
  1842.      FLISTINT_aset_INT(noname1277);
  1843.      if (noname1277->state == -1) goto after_loop;
  1844.      0 /* No return value from iter call */;
  1845.     }
  1846.    }
  1847.    after_loop: ;
  1848.    FLISTINT_clear(self);
  1849.   }
  1850.  }
  1851.  r_1272->loc_17 = (c_INT_plus_INT_INT_chk(r_1272->loc_17,1));
  1852.  local5 = (c_INT_minus_INT_INT_chk(r_1272->loc_17,1));
  1853.  FLISTINT_aset_IN(r_1272, local5, e_1270);
  1854.  return r_1272;
  1855.  if (!FLISTINT_invaria(self)) {
  1856.   fprintf(stderr,"Failed invariant FLIST{INT}::invariant:BOOL ../Library/flist.sa:79:7\n");
  1857.   exit(16);
  1858.  }
  1859. }
  1860.  
  1861.  
  1862. void SFILE_ID_pos_INT(SFILE_ID self, INT pos_1278) {
  1863.  shared_SFILE_ID_pos = pos_1278;
  1864. }
  1865.  
  1866.  
  1867. void SFILE_ID_column_INT(SFILE_ID self, INT column) {
  1868.  shared_SFILE_ID__1279 = column;
  1869. }
  1870.  
  1871.  
  1872. void SFILE_ID_newline(SFILE_ID self, BOOL newline) {
  1873.  shared_SFILE_ID__1280 = newline;
  1874. }
  1875.  
  1876.  
  1877. SFILE_ID SFILE_ID_loc_INT(SFILE_ID self, INT loc_1281) {
  1878.  SFILE_ID local0;
  1879.  local0 = self;
  1880.  local0.loc_17 = loc_1281;
  1881.  return local0;
  1882. }
  1883.  
  1884.  
  1885. SFILE_ID SFILE_ID_create_(SFILE_ID self, INT loc_1282) {
  1886.  SFILE_ID noname1283 = SFILE_ID_zero;
  1887.  SFILE_ID r_1284 = SFILE_ID_zero;
  1888.  r_1284 = SFILE_ID_loc_INT(r_1284, loc_1282);
  1889.  return r_1284;
  1890. }
  1891.  
  1892.  
  1893. SFILE_ID SFILE_ID_no_loca(SFILE_ID self) {
  1894.  SFILE_ID noname1285 = SFILE_ID_zero;
  1895.  return SFILE_ID_create_(SFILE_ID_zero, -1);
  1896. }
  1897.  
  1898.  
  1899. void PROG_set_eloc_SF(PROG self, SFILE_ID l) {
  1900.  self->eloc = l;
  1901. }
  1902.  
  1903.  
  1904. BOOL SFILE_ID_open_fi(SFILE_ID self, PROG p, STR name_1286) {
  1905.  BOOL noname1287 = ((BOOL) 0);
  1906.  FILE_20 file_1288;
  1907.  file_1288 = FILE_open_for_re(file_1288, name_1286);
  1908.  if ((!(FILE_error_BOOL(file_1288)))) {
  1909.   SFILE_ID_source_FSTR(self, FILE_fstr_FSTR(file_1288));
  1910.   FILE_close(file_1288);
  1911.  }
  1912.  else {
  1913.   SFILE_ID_source_FSTR(self, ((FSTR) NULL));
  1914.  }
  1915.  if ((!((shared_SFILE_ID__1255==((FSTR) NULL))))) {
  1916.   if ((shared_SFILE_ID__801==((FLISTSTR) NULL))) {
  1917.    SFILE_ID_files_F(self, FLISTSTR_create__1256(((FLISTSTR) NULL), 64));
  1918.    SFILE_ID_lines_F(self, FLISTINT_create_(((FLISTINT) NULL), 64));
  1919.   }
  1920.   SFILE_ID_files_F(self, FLISTSTR_push_ST(shared_SFILE_ID__801, name_1286));
  1921.   SFILE_ID_lines_F(self, FLISTINT_push_IN(shared_SFILE_ID_, shared_SFILE_ID__1289));
  1922.   SFILE_ID_pos_INT(self, 0);
  1923.   SFILE_ID_column_INT(self, 1);
  1924.   SFILE_ID_newline(self, TRUE);
  1925.   return TRUE;
  1926.  }
  1927.  PROG_set_eloc_SF(p, SFILE_ID_no_loca(self));
  1928.  PROG_err_STR(p, STR_plus_STR_STR(((STR) &couldntreadfile), name_1286));
  1929.  return FALSE;
  1930. }
  1931.  
  1932.  
  1933. void SFILE_ID_line_INT(SFILE_ID self, INT line_1290) {
  1934.  shared_SFILE_ID_line = line_1290;
  1935. }
  1936.  
  1937.  
  1938. void SFILE_ID_line_po(SFILE_ID self, INT line_pos) {
  1939.  shared_SFILE_ID__1291 = line_pos;
  1940. }
  1941.  
  1942.  
  1943. CHAR SFILE_ID_next_CHAR(SFILE_ID self) {
  1944.  CHAR noname1292 = ((CHAR) 0);
  1945.  CHAR ch = ((CHAR) 0);
  1946.  CHAR noname1293 = ((CHAR) 0);
  1947.  INT local0;
  1948.  INT local1;
  1949.  INT local2;
  1950.  local0 = shared_SFILE_ID_pos;
  1951.  if ((local0<FSTR_size_INT(shared_SFILE_ID__1255))) {
  1952.   if (shared_SFILE_ID__1280) {
  1953.    SFILE_ID_line_INT(self, (c_INT_plus_INT_INT_chk(shared_SFILE_ID_line,1)));
  1954.    SFILE_ID_line_po(self, shared_SFILE_ID_pos);
  1955.    SFILE_ID_newline(self, FALSE);
  1956.    SFILE_ID_column_INT(self, 1);
  1957.   }
  1958.   ch = FSTR_aget_INT_CHAR(shared_SFILE_ID__1255, shared_SFILE_ID_pos);
  1959.   SFILE_ID_pos_INT(self, (c_INT_plus_INT_INT_chk(shared_SFILE_ID_pos,1)));
  1960.   noname1293 = ch;
  1961.   switch (noname1293) {
  1962.    case '\t':
  1963.     local1 = (c_INT_plus_INT_INT_chk(shared_SFILE_ID__1279,8));
  1964.     local2 = (c_INT_minus_INT_INT_chk(shared_SFILE_ID__1279,1));
  1965.     SFILE_ID_column_INT(self, (c_INT_minus_INT_INT_chk(local1,(c_INT_mod_INT_INT_chk(local2,8)))));
  1966.     break;
  1967.    case '\0':
  1968.     ch = ' ';
  1969.     break;
  1970.    case '\n':
  1971.     SFILE_ID_newline(self, TRUE);
  1972.     break;
  1973.    default: ;
  1974.     SFILE_ID_newline(self, FALSE);
  1975.     SFILE_ID_column_INT(self, (c_INT_plus_INT_INT_chk(shared_SFILE_ID__1279,1)));
  1976.   }
  1977.   return ch;
  1978.  }
  1979.  return shared_SFILE_ID__1294;
  1980. }
  1981.  
  1982.  
  1983. SCANNER SCANNER_create_P(SCANNER self, PROG p, STR file_1295, BOOL pSather_1296) {
  1984.  SCANNER noname1297;
  1985.  SCANNER res = ((SCANNER) NULL);
  1986.  SCANNER local0;
  1987.  if (SFILE_ID_open_fi(SFILE_ID_zero, p, file_1295)) {
  1988.   local0 = ((SCANNER) sbi_alloc(sizeof(struct SCANNER_struct), SCANNER_tag));
  1989.   res = local0;
  1990.   res->prog = p;
  1991.   res->next_8 = SFILE_ID_next_CHAR(SFILE_ID_zero);
  1992.   res->buf_18 = FSTR_create_INT_FSTR(((FSTR) NULL), 256);
  1993.   res->backed_up = FALSE;
  1994.   res->pSather = pSather_1296;
  1995.  }
  1996.  else {
  1997.   res = ((SCANNER) NULL);
  1998.  }
  1999.  return res;
  2000. }
  2001.  
  2002.  
  2003. void SCANNER_fetch(SCANNER self) {
  2004.  CHAR c_1298 = ((CHAR) 0);
  2005.  if (self->backed_up) {
  2006.   c_1298 = self->next_8;
  2007.   self->next_8 = self->last_char;
  2008.   self->last_char = c_1298;
  2009.   self->backed_up = FALSE;
  2010.  }
  2011.  else {
  2012.   self->last_char = self->next_8;
  2013.   self->next_8 = SFILE_ID_next_CHAR(SFILE_ID_zero);
  2014.  }
  2015. }
  2016.  
  2017.  
  2018. void SCANNER_skip_whi(SCANNER self) {
  2019.  while (1) {
  2020.   if (CHAR_is_space_BOOL(self->next_8)) {
  2021.   }
  2022.   else {
  2023.    goto after_loop;
  2024.   }
  2025.   SCANNER_fetch(self);
  2026.  }
  2027.  after_loop: ;
  2028. }
  2029.  
  2030.  
  2031. BOOL FSTR_is_eq_STR_BOOL(FSTR self, STR s_1300) {
  2032.  BOOL noname1301 = ((BOOL) 0);
  2033.  INT s1 = ((INT) 0);
  2034.  INT s2 = ((INT) 0);
  2035.  if ((self==((FSTR) NULL))) {
  2036.   s1 = -1;
  2037.  }
  2038.  else {
  2039.   s1 = self->loc_17;
  2040.  }
  2041.  if ((s_1300==((STR) NULL))) {
  2042.   s2 = -1;
  2043.  }
  2044.  else {
  2045.   s2 = STR_size_INT(s_1300);
  2046.  }
  2047.  if ((s1!=s2)) {
  2048.   return FALSE;
  2049.  }
  2050.  return ((memcmp(self->arr_part,s_1300->arr_part,s1)==0 ? TRUE : FALSE));
  2051.  if (!FSTR_invariant_BOOL(self)) {
  2052.   fprintf(stderr,"Failed invariant FSTR::invariant:BOOL ../Library/fstr.sa:177:8\n");
  2053.   exit(16);
  2054.  }
  2055. }
  2056.  
  2057.  
  2058. void SCANNER_add_buf_(SCANNER self) {
  2059.  PROG local0;
  2060.  local0 = self->prog;
  2061.  self->lex_value = PROG_ident_for_S(local0, FSTR_str_STR(self->buf_18));
  2062. }
  2063.  
  2064.  
  2065. TOKEN TOKEN_val_INT_TOKEN(TOKEN self, INT val_1302) {
  2066.  TOKEN local0;
  2067.  local0 = self;
  2068.  local0.val_16 = val_1302;
  2069.  return local0;
  2070. }
  2071.  
  2072.  
  2073. TOKEN TOKEN_create_INT(TOKEN self, INT val_1303) {
  2074.  TOKEN noname1304 = TOKEN_zero;
  2075.  TOKEN t_1305 = TOKEN_zero;
  2076.  t_1305 = TOKEN_val_INT_TOKEN(t_1305, val_1303);
  2077.  return t_1305;
  2078. }
  2079.  
  2080.  
  2081. TOKEN SCANNER_identifi(SCANNER self) {
  2082.  TOKEN noname1306 = TOKEN_zero;
  2083.  CHAR c_1307 = ((CHAR) 0);
  2084.  INT res = ((INT) 0);
  2085.  CHAR noname1308 = ((CHAR) 0);
  2086.  FSTR noname1309;
  2087.  FSTR noname1310;
  2088.  FSTR noname1311;
  2089.  FSTR noname1312;
  2090.  FSTR noname1313;
  2091.  FSTR noname1314;
  2092.  FSTR noname1315;
  2093.  FSTR noname1316;
  2094.  FSTR noname1317;
  2095.  FSTR noname1318;
  2096.  FSTR noname1319;
  2097.  FSTR noname1320;
  2098.  FSTR noname1321;
  2099.  FSTR noname1322;
  2100.  FSTR noname1323;
  2101.  BOOL local0;
  2102.  BOOL local1;
  2103.  BOOL local2;
  2104.  FSTR_clear(self->buf_18);
  2105.  while (1) {
  2106.   c_1307 = self->next_8;
  2107.   if (CHAR_is_alphanum(c_1307)) {
  2108.    local0 = TRUE;
  2109.   } else {
  2110.    local0 = (c_1307=='_');
  2111.   }
  2112.   if (local0) {
  2113.   }
  2114.   else {
  2115.    goto after_loop;
  2116.   }
  2117.   self->buf_18 = FSTR_plus_CHAR_FSTR(self->buf_18, c_1307);
  2118.   SCANNER_fetch(self);
  2119.  }
  2120.  after_loop: ;
  2121.  res = shared_SCANNER_i;
  2122.  noname1308 = FSTR_aget_INT_CHAR(self->buf_18, 0);
  2123.  switch (noname1308) {
  2124.   case 'a':
  2125.    noname1309 = self->buf_18;
  2126.    if (FSTR_is_eq_STR_BOOL(noname1309, ((STR) &attr_1325))) {
  2127.     res = shared_SCANNER_a;
  2128.    }
  2129.    else {
  2130.     if (FSTR_is_eq_STR_BOOL(noname1309, ((STR) &and_1326))) {
  2131.      res = shared_SCANNER_a_1327;
  2132.     }
  2133.     else {
  2134.      if (FSTR_is_eq_STR_BOOL(noname1309, ((STR) &assert_1328))) {
  2135.       res = shared_SCANNER_a_1329;
  2136.      }
  2137.      else {
  2138.       if (FSTR_is_eq_STR_BOOL(noname1309, ((STR) &as))) {
  2139.        if (self->pSather) {
  2140.         res = shared_SCANNER_a_1330;
  2141.        }
  2142.       }
  2143.      }
  2144.     }
  2145.    }
  2146.    break;
  2147.   case 'b':
  2148.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &break_1331))) {
  2149.     local1 = (self->next_8=='!');
  2150.    } else {
  2151.     local1 = FALSE;
  2152.    }
  2153.    if (local1) {
  2154.     SCANNER_fetch(self);
  2155.     res = shared_SCANNER_b;
  2156.    }
  2157.    break;
  2158.   case 'c':
  2159.    noname1310 = self->buf_18;
  2160.    if (FSTR_is_eq_STR_BOOL(noname1310, ((STR) &case_1332))) {
  2161.     res = shared_SCANNER_c;
  2162.    }
  2163.    else {
  2164.     if (FSTR_is_eq_STR_BOOL(noname1310, ((STR) &class_1333))) {
  2165.      res = shared_SCANNER_c_1334;
  2166.     }
  2167.     else {
  2168.      if (FSTR_is_eq_STR_BOOL(noname1310, ((STR) &const_1335))) {
  2169.       res = shared_SCANNER_c_1336;
  2170.      }
  2171.      else {
  2172.       if (FSTR_is_eq_STR_BOOL(noname1310, ((STR) &cobegin))) {
  2173.        if (self->pSather) {
  2174.         res = shared_SCANNER_c_1337;
  2175.        }
  2176.       }
  2177.      }
  2178.     }
  2179.    }
  2180.    break;
  2181.   case 'd':
  2182.    if (self->pSather) {
  2183.     noname1311 = self->buf_18;
  2184.     if (FSTR_is_eq_STR_BOOL(noname1311, ((STR) &dist))) {
  2185.      res = shared_SCANNER_d;
  2186.     }
  2187.     else {
  2188.      if (FSTR_is_eq_STR_BOOL(noname1311, ((STR) &do_1338))) {
  2189.       res = shared_SCANNER_d_1339;
  2190.      }
  2191.     }
  2192.    }
  2193.    break;
  2194.   case 'e':
  2195.    noname1312 = self->buf_18;
  2196.    if (FSTR_is_eq_STR_BOOL(noname1312, ((STR) &end_1340))) {
  2197.     res = shared_SCANNER_e;
  2198.    }
  2199.    else {
  2200.     if (FSTR_is_eq_STR_BOOL(noname1312, ((STR) &elsif))) {
  2201.      res = shared_SCANNER_e_1341;
  2202.     }
  2203.     else {
  2204.      if (FSTR_is_eq_STR_BOOL(noname1312, ((STR) &else_1342))) {
  2205.       res = shared_SCANNER_e_1343;
  2206.      }
  2207.      else {
  2208.       if (FSTR_is_eq_STR_BOOL(noname1312, ((STR) &exception_1344))) {
  2209.        res = shared_SCANNER_e_1345;
  2210.       }
  2211.       else {
  2212.        if (FSTR_is_eq_STR_BOOL(noname1312, ((STR) &external_1346))) {
  2213.         res = shared_SCANNER_e_1347;
  2214.        }
  2215.       }
  2216.      }
  2217.     }
  2218.    }
  2219.    break;
  2220.   case 'f':
  2221.    noname1313 = self->buf_18;
  2222.    if (FSTR_is_eq_STR_BOOL(noname1313, ((STR) &false_1348))) {
  2223.     res = shared_SCANNER_f;
  2224.    }
  2225.    else {
  2226.     if (FSTR_is_eq_STR_BOOL(noname1313, ((STR) &far_1349))) {
  2227.      if (self->pSather) {
  2228.       res = shared_SCANNER_f_1350;
  2229.      }
  2230.     }
  2231.    }
  2232.    break;
  2233.   case 'h':
  2234.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &here_1351))) {
  2235.     local2 = self->pSather;
  2236.    } else {
  2237.     local2 = FALSE;
  2238.    }
  2239.    if (local2) {
  2240.     res = shared_SCANNER_h;
  2241.    }
  2242.    break;
  2243.   case 'i':
  2244.    noname1314 = self->buf_18;
  2245.    if (FSTR_is_eq_STR_BOOL(noname1314, ((STR) &is))) {
  2246.     res = shared_SCANNER_i_1352;
  2247.    }
  2248.    else {
  2249.     if (FSTR_is_eq_STR_BOOL(noname1314, ((STR) &if_1353))) {
  2250.      res = shared_SCANNER_i_1354;
  2251.     }
  2252.     else {
  2253.      if (FSTR_is_eq_STR_BOOL(noname1314, ((STR) &initial_1355))) {
  2254.       res = shared_SCANNER_i_1356;
  2255.      }
  2256.      else {
  2257.       if (FSTR_is_eq_STR_BOOL(noname1314, ((STR) &include_1357))) {
  2258.        res = shared_SCANNER_i_1358;
  2259.       }
  2260.      }
  2261.     }
  2262.    }
  2263.    break;
  2264.   case 'I':
  2265.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &ITER))) {
  2266.     res = shared_SCANNER_I;
  2267.    }
  2268.    break;
  2269.   case 'l':
  2270.    noname1315 = self->buf_18;
  2271.    if (FSTR_is_eq_STR_BOOL(noname1315, ((STR) &loop))) {
  2272.     res = shared_SCANNER_l;
  2273.    }
  2274.    else {
  2275.     if (FSTR_is_eq_STR_BOOL(noname1315, ((STR) &lock_1359))) {
  2276.      if (self->pSather) {
  2277.       res = shared_SCANNER_l_1360;
  2278.      }
  2279.     }
  2280.    }
  2281.    break;
  2282.   case 'n':
  2283.    noname1316 = self->buf_18;
  2284.    if (FSTR_is_eq_STR_BOOL(noname1316, ((STR) &new_1361))) {
  2285.     res = shared_SCANNER_n;
  2286.    }
  2287.    else {
  2288.     if (FSTR_is_eq_STR_BOOL(noname1316, ((STR) &near))) {
  2289.      if (self->pSather) {
  2290.       res = shared_SCANNER_n_1362;
  2291.      }
  2292.     }
  2293.    }
  2294.    break;
  2295.   case 'o':
  2296.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &or))) {
  2297.     res = shared_SCANNER_o;
  2298.    }
  2299.    break;
  2300.   case 'p':
  2301.    noname1317 = self->buf_18;
  2302.    if (FSTR_is_eq_STR_BOOL(noname1317, ((STR) &pre_1363))) {
  2303.     res = shared_SCANNER_p;
  2304.    }
  2305.    else {
  2306.     if (FSTR_is_eq_STR_BOOL(noname1317, ((STR) &post_1364))) {
  2307.      res = shared_SCANNER_p_1365;
  2308.     }
  2309.     else {
  2310.      if (FSTR_is_eq_STR_BOOL(noname1317, ((STR) &private_1366))) {
  2311.       res = shared_SCANNER_p_1367;
  2312.      }
  2313.      else {
  2314.       if (FSTR_is_eq_STR_BOOL(noname1317, ((STR) &protect))) {
  2315.        res = shared_SCANNER_p_1368;
  2316.       }
  2317.      }
  2318.     }
  2319.    }
  2320.    break;
  2321.   case 'q':
  2322.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &quit_1369))) {
  2323.     res = shared_SCANNER_q;
  2324.    }
  2325.    break;
  2326.   case 'r':
  2327.    noname1318 = self->buf_18;
  2328.    if (FSTR_is_eq_STR_BOOL(noname1318, ((STR) &return_1370))) {
  2329.     res = shared_SCANNER_r;
  2330.    }
  2331.    else {
  2332.     if (FSTR_is_eq_STR_BOOL(noname1318, ((STR) &result_1371))) {
  2333.      res = shared_SCANNER_r_1372;
  2334.     }
  2335.     else {
  2336.      if (FSTR_is_eq_STR_BOOL(noname1318, ((STR) &readonly))) {
  2337.       res = shared_SCANNER_r_1373;
  2338.      }
  2339.      else {
  2340.       if (FSTR_is_eq_STR_BOOL(noname1318, ((STR) &raise_1374))) {
  2341.        res = shared_SCANNER_r_1375;
  2342.       }
  2343.      }
  2344.     }
  2345.    }
  2346.    break;
  2347.   case 'R':
  2348.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &ROUT_1376))) {
  2349.     res = shared_SCANNER_R;
  2350.    }
  2351.    break;
  2352.   case 's':
  2353.    noname1319 = self->buf_18;
  2354.    if (FSTR_is_eq_STR_BOOL(noname1319, ((STR) &self_1377))) {
  2355.     res = shared_SCANNER_s;
  2356.    }
  2357.    else {
  2358.     if (FSTR_is_eq_STR_BOOL(noname1319, ((STR) &shared_1378))) {
  2359.      res = shared_SCANNER_s_1379;
  2360.     }
  2361.     else {
  2362.      if (FSTR_is_eq_STR_BOOL(noname1319, ((STR) &spread))) {
  2363.       if (self->pSather) {
  2364.        res = shared_SCANNER_s_1380;
  2365.       }
  2366.      }
  2367.     }
  2368.    }
  2369.    break;
  2370.   case 'S':
  2371.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &SAME))) {
  2372.     res = shared_SCANNER_S;
  2373.    }
  2374.    break;
  2375.   case 't':
  2376.    noname1320 = self->buf_18;
  2377.    if (FSTR_is_eq_STR_BOOL(noname1320, ((STR) &then_1381))) {
  2378.     res = shared_SCANNER_t;
  2379.    }
  2380.    else {
  2381.     if (FSTR_is_eq_STR_BOOL(noname1320, ((STR) &true_1382))) {
  2382.      res = shared_SCANNER_t_1383;
  2383.     }
  2384.     else {
  2385.      if (FSTR_is_eq_STR_BOOL(noname1320, ((STR) &type_1384))) {
  2386.       res = shared_SCANNER_t_1385;
  2387.      }
  2388.      else {
  2389.       if (FSTR_is_eq_STR_BOOL(noname1320, ((STR) &typecase))) {
  2390.        res = shared_SCANNER_t_1386;
  2391.       }
  2392.       else {
  2393.        if (FSTR_is_eq_STR_BOOL(noname1320, ((STR) &try_1387))) {
  2394.         if (self->pSather) {
  2395.          res = shared_SCANNER_t_1388;
  2396.         }
  2397.        }
  2398.       }
  2399.      }
  2400.     }
  2401.    }
  2402.    break;
  2403.   case 'u':
  2404.    noname1321 = self->buf_18;
  2405.    if (FSTR_is_eq_STR_BOOL(noname1321, ((STR) &until_1389))) {
  2406.     if ((self->next_8=='!')) {
  2407.      SCANNER_fetch(self);
  2408.      res = shared_SCANNER_u;
  2409.     }
  2410.    }
  2411.    else {
  2412.     if (FSTR_is_eq_STR_BOOL(noname1321, ((STR) &unlock))) {
  2413.      if (self->pSather) {
  2414.       res = shared_SCANNER_u_1390;
  2415.      }
  2416.     }
  2417.    }
  2418.    break;
  2419.   case 'v':
  2420.    noname1322 = self->buf_18;
  2421.    if (FSTR_is_eq_STR_BOOL(noname1322, ((STR) &void_1391))) {
  2422.     res = shared_SCANNER_v;
  2423.    }
  2424.    else {
  2425.     if (FSTR_is_eq_STR_BOOL(noname1322, ((STR) &value_1392))) {
  2426.      res = shared_SCANNER_v_1393;
  2427.     }
  2428.    }
  2429.    break;
  2430.   case 'w':
  2431.    noname1323 = self->buf_18;
  2432.    if (FSTR_is_eq_STR_BOOL(noname1323, ((STR) &when_1394))) {
  2433.     res = shared_SCANNER_w;
  2434.    }
  2435.    else {
  2436.     if (FSTR_is_eq_STR_BOOL(noname1323, ((STR) &while_1395))) {
  2437.      if ((self->next_8=='!')) {
  2438.       SCANNER_fetch(self);
  2439.       res = shared_SCANNER_w_1396;
  2440.      }
  2441.     }
  2442.     else {
  2443.      if (FSTR_is_eq_STR_BOOL(noname1323, ((STR) &where_1397))) {
  2444.       if (self->pSather) {
  2445.        res = shared_SCANNER_w_1398;
  2446.       }
  2447.      }
  2448.      else {
  2449.       if (FSTR_is_eq_STR_BOOL(noname1323, ((STR) &with_1399))) {
  2450.        if (self->pSather) {
  2451.         res = shared_SCANNER_w_1400;
  2452.        }
  2453.       }
  2454.      }
  2455.     }
  2456.    }
  2457.    break;
  2458.   case 'y':
  2459.    if (FSTR_is_eq_STR_BOOL(self->buf_18, ((STR) &yield_1401))) {
  2460.     res = shared_SCANNER_y;
  2461.    }
  2462.    break;
  2463.   default: ;
  2464.  }
  2465.  if ((res==shared_SCANNER_i)) {
  2466.   SCANNER_add_buf_(self);
  2467.  }
  2468.  return TOKEN_create_INT(TOKEN_zero, res);
  2469. }
  2470.  
  2471.  
  2472. void SCANNER_comment(SCANNER self) {
  2473.  INT n_1402 = ((INT) 0);
  2474.  BOOL local0;
  2475.  n_1402 = 1;
  2476.  while (1) {
  2477.   if ((self->next_8!=shared_SFILE_ID__1294)) {
  2478.    local0 = (n_1402>0);
  2479.   } else {
  2480.    local0 = FALSE;
  2481.   }
  2482.   if (local0) {
  2483.   }
  2484.   else {
  2485.    goto after_loop;
  2486.   }
  2487.   if ((self->next_8=='(')) {
  2488.    SCANNER_fetch(self);
  2489.    if ((self->next_8=='*')) {
  2490.     SCANNER_fetch(self);
  2491.     n_1402 = (c_INT_plus_INT_INT_chk(n_1402,1));
  2492.    }
  2493.   }
  2494.   else {
  2495.    if ((self->next_8=='*')) {
  2496.     SCANNER_fetch(self);
  2497.     if ((self->next_8==')')) {
  2498.      SCANNER_fetch(self);
  2499.      n_1402 = (c_INT_minus_INT_INT_chk(n_1402,1));
  2500.     }
  2501.    }
  2502.    else {
  2503.     SCANNER_fetch(self);
  2504.    }
  2505.   }
  2506.  }
  2507.  after_loop: ;
  2508. }
  2509.  
  2510.  
  2511. BOOL CHAR_is_lower_BOOL(CHAR self) {
  2512.  BOOL noname1404 = ((BOOL) 0);
  2513.  CHAR noname1405 = ((CHAR) 0);
  2514.  noname1405 = self;
  2515.  switch (noname1405) {
  2516.   case 'a':
  2517.   case 'b':
  2518.   case 'c':
  2519.   case 'd':
  2520.   case 'e':
  2521.   case 'f':
  2522.   case 'g':
  2523.   case 'h':
  2524.   case 'i':
  2525.   case 'j':
  2526.   case 'k':
  2527.   case 'l':
  2528.   case 'm':
  2529.   case 'n':
  2530.   case 'o':
  2531.   case 'p':
  2532.   case 'q':
  2533.   case 'r':
  2534.   case 's':
  2535.   case 't':
  2536.   case 'u':
  2537.   case 'v':
  2538.   case 'w':
  2539.   case 'x':
  2540.   case 'y':
  2541.   case 'z':
  2542.    return TRUE;
  2543.    break;
  2544.   default: ;
  2545.  }
  2546.  return FALSE;
  2547. }
  2548.  
  2549.  
  2550. BOOL SCANNER_is_class(SCANNER self, STR s_1406) {
  2551.  BOOL noname1407 = ((BOOL) 0);
  2552.  STR noname1408;
  2553.  CHAR local0;
  2554.  STR local1;
  2555.  CHAR *local0p; INT local0n;
  2556.  {
  2557.   BOOL noname1410 = TRUE;
  2558.   while (1) {
  2559.    if (noname1410) {
  2560.     noname1410 = FALSE;
  2561.     noname1408 = s_1406;
  2562.     local1 = noname1408;
  2563.     local0p = local1->arr_part; local0n = local1->asize;
  2564.    } else {
  2565.     local0p++; local0n--;
  2566.    }
  2567.    if (local0n<=0) goto after_loop; local0 = *local0p;
  2568.    if (CHAR_is_lower_BOOL(local0)) {
  2569.     return FALSE;
  2570.    }
  2571.   }
  2572.  }
  2573.  after_loop: ;
  2574.  return TRUE;
  2575. }
  2576.  
  2577.  
  2578. INT INT_max_INT_INT(INT self, INT i) {
  2579.  INT noname1411 = ((INT) 0);
  2580.  if ((self>i)) {
  2581.   return self;
  2582.  }
  2583.  return i;
  2584. }
  2585.  
  2586.  
  2587. SFILE_ID SFILE_ID_source_(SFILE_ID self) {
  2588.  SFILE_ID noname1412 = SFILE_ID_zero;
  2589.  INT c_1413 = ((INT) 0);
  2590.  INT local0;
  2591.  INT local1;
  2592.  SFILE_ID local2;
  2593.  INT local3;
  2594.  if ((!((shared_SFILE_ID__1255==((FSTR) NULL))))) {
  2595.   local0 = (c_INT_minus_INT_INT_chk(shared_SFILE_ID__1279,2));
  2596.   local1 = INT_min_INT_INT(local0, (c_INT_minus_INT_INT_chk(shared_SFILE_ID_B,1)));
  2597.   c_1413 = INT_max_INT_INT(local1, 1);
  2598.   local2 = SFILE_ID_zero;
  2599.   local3 = (c_INT_times_INT_INT_chk(shared_SFILE_ID_line,shared_SFILE_ID_B));
  2600.   return SFILE_ID_create_(local2, (c_INT_plus_INT_INT_chk(local3,c_1413)));
  2601.  }
  2602.  return SFILE_ID_no_loca(self);
  2603. }
  2604.  
  2605.  
  2606. void SCANNER_error_STR(SCANNER self, STR msg_1414) {
  2607.  PROG local0;
  2608.  local0 = self->prog;
  2609.  PROG_set_eloc_SF(local0, SFILE_ID_source_(SFILE_ID_zero));
  2610.  PROG_err_STR(self->prog, msg_1414);
  2611. }
  2612.  
  2613.  
  2614. void SCANNER_backup(SCANNER self) {
  2615.  CHAR c_1415 = ((CHAR) 0);
  2616.  c_1415 = self->next_8;
  2617.  self->next_8 = self->last_char;
  2618.  self->last_char = c_1415;
  2619.  self->backed_up = TRUE;
  2620. }
  2621.  
  2622.  
  2623. INT CHAR_hex_digit_v(CHAR self) {
  2624.  INT noname1416 = ((INT) 0);
  2625.  CHAR noname1417 = ((CHAR) 0);
  2626.  noname1417 = self;
  2627.  switch (noname1417) {
  2628.   case '0':
  2629.    return 0;
  2630.    break;
  2631.   case '1':
  2632.    return 1;
  2633.    break;
  2634.   case '2':
  2635.    return 2;
  2636.    break;
  2637.   case '3':
  2638.    return 3;
  2639.    break;
  2640.   case '4':
  2641.    return 4;
  2642.    break;
  2643.   case '5':
  2644.    return 5;
  2645.    break;
  2646.   case '6':
  2647.    return 6;
  2648.    break;
  2649.   case '7':
  2650.    return 7;
  2651.    break;
  2652.   case '8':
  2653.    return 8;
  2654.    break;
  2655.   case '9':
  2656.    return 9;
  2657.    break;
  2658.   case 'a':
  2659.    return 10;
  2660.    break;
  2661.   case 'A':
  2662.    return 10;
  2663.    break;
  2664.   case 'b':
  2665.    return 11;
  2666.    break;
  2667.   case 'B':
  2668.    return 11;
  2669.    break;
  2670.   case 'c':
  2671.    return 12;
  2672.    break;
  2673.   case 'C':
  2674.    return 12;
  2675.    break;
  2676.   case 'd':
  2677.    return 13;
  2678.    break;
  2679.   case 'D':
  2680.    return 13;
  2681.    break;
  2682.   case 'e':
  2683.    return 14;
  2684.    break;
  2685.   case 'E':
  2686.    return 14;
  2687.    break;
  2688.   case 'f':
  2689.    return 15;
  2690.    break;
  2691.   case 'F':
  2692.    return 15;
  2693.    break;
  2694.   default: ;
  2695.  }
  2696.  return -1;
  2697. }
  2698.  
  2699.  
  2700. CHAR SCANNER_characte(SCANNER self) {
  2701.  CHAR noname1418 = ((CHAR) 0);
  2702.  CHAR res = ((CHAR) 0);
  2703.  CHAR noname1419 = ((CHAR) 0);
  2704.  INT v_1420 = ((INT) 0);
  2705.  INT d = ((INT) 0);
  2706.  BOOL local0;
  2707.  INT local1;
  2708.  SCANNER_fetch(self);
  2709.  noname1419 = self->next_8;
  2710.  switch (noname1419) {
  2711.   case '0':
  2712.   case '1':
  2713.   case '2':
  2714.   case '3':
  2715.   case '4':
  2716.   case '5':
  2717.   case '6':
  2718.   case '7':
  2719.    v_1420 = 0;
  2720.    while (1) {
  2721.     d = CHAR_hex_digit_v(self->next_8);
  2722.     if ((0<=d)) {
  2723.      local0 = (d<8);
  2724.     } else {
  2725.      local0 = FALSE;
  2726.     }
  2727.     if (local0) {
  2728.     }
  2729.     else {
  2730.      goto after_loop;
  2731.     }
  2732.     local1 = (c_INT_times_INT_INT_chk(v_1420,8));
  2733.     v_1420 = (c_INT_plus_INT_INT_chk(local1,d));
  2734.     SCANNER_fetch(self);
  2735.    }
  2736.    after_loop: ;
  2737.    res = ((CHAR)v_1420);
  2738.    break;
  2739.   case 'a':
  2740.    res = 'a';
  2741.    SCANNER_fetch(self);
  2742.    break;
  2743.   case 'b':
  2744.    res = '\b';
  2745.    SCANNER_fetch(self);
  2746.    break;
  2747.   case 'f':
  2748.    res = '\f';
  2749.    SCANNER_fetch(self);
  2750.    break;
  2751.   case 'n':
  2752.    res = '\n';
  2753.    SCANNER_fetch(self);
  2754.    break;
  2755.   case 'r':
  2756.    res = '\r';
  2757.    SCANNER_fetch(self);
  2758.    break;
  2759.   case 't':
  2760.    res = '\t';
  2761.    SCANNER_fetch(self);
  2762.    break;
  2763.   case 'v':
  2764.    res = '\v';
  2765.    SCANNER_fetch(self);
  2766.    break;
  2767.   case '\\':
  2768.    res = '\\';
  2769.    SCANNER_fetch(self);
  2770.    break;
  2771.   case '\'':
  2772.    res = '\'';
  2773.    SCANNER_fetch(self);
  2774.    break;
  2775.   case '\"':
  2776.    res = '\"';
  2777.    SCANNER_fetch(self);
  2778.    break;
  2779.   default: ;
  2780.    res = self->next_8;
  2781.    SCANNER_fetch(self);
  2782.  }
  2783.  return res;
  2784. }
  2785.  
  2786.  
  2787. INTI INTI_u_plus_INTI(INTI self, INTI x, INTI y) {
  2788.  INTI noname1422;
  2789.  INT xl = ((INT) 0);
  2790.  INT yl = ((INT) 0);
  2791.  INT l = ((INT) 0);
  2792.  INT i = ((INT) 0);
  2793.  INT c_1423 = ((INT) 0);
  2794.  INTI z = ((INTI) NULL);
  2795.  INTI local0;
  2796.  INT local1;
  2797.  INT local2;
  2798.  xl = INT_abs_INT(x->len_37);
  2799.  yl = INT_abs_INT(y->len_37);
  2800.  l = INT_min_INT_INT(xl, yl);
  2801.  i = 0;
  2802.  c_1423 = 0;
  2803.  local1 = INT_max_INT_INT(xl, yl);
  2804.  local0 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , (c_INT_plus_INT_INT_chk(local1,1))));
  2805.  local0->asize = (c_INT_plus_INT_INT_chk(local1,1));
  2806.  z = local0;
  2807.  while (1) {
  2808.   if ((i<l)) {
  2809.   }
  2810.   else {
  2811.    goto after_loop;
  2812.   }
  2813.   local2 = (c_INT_plus_INT_INT_chk(c_1423,INTI_aget_INT_INT(x, i)));
  2814.   c_1423 = (c_INT_plus_INT_INT_chk(local2,INTI_aget_INT_INT(y, i)));
  2815.   INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(c_1423,shared_INTI_B)));
  2816.   c_1423 = (c_INT_div_INT_INT_chk(c_1423,shared_INTI_B));
  2817.   i = (c_INT_plus_INT_INT_chk(i,1));
  2818.  }
  2819.  after_loop: ;
  2820.  while (1) {
  2821.   if ((i<xl)) {
  2822.   }
  2823.   else {
  2824.    goto after_loop_1425;
  2825.   }
  2826.   c_1423 = (c_INT_plus_INT_INT_chk(c_1423,INTI_aget_INT_INT(x, i)));
  2827.   INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(c_1423,shared_INTI_B)));
  2828.   c_1423 = (c_INT_div_INT_INT_chk(c_1423,shared_INTI_B));
  2829.   i = (c_INT_plus_INT_INT_chk(i,1));
  2830.  }
  2831.  after_loop_1425: ;
  2832.  while (1) {
  2833.   if ((i<yl)) {
  2834.   }
  2835.   else {
  2836.    goto after_loop_1427;
  2837.   }
  2838.   c_1423 = (c_INT_plus_INT_INT_chk(c_1423,INTI_aget_INT_INT(y, i)));
  2839.   INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(c_1423,shared_INTI_B)));
  2840.   c_1423 = (c_INT_div_INT_INT_chk(c_1423,shared_INTI_B));
  2841.   i = (c_INT_plus_INT_INT_chk(i,1));
  2842.  }
  2843.  after_loop_1427: ;
  2844.  if ((c_1423!=0)) {
  2845.   INTI_aset_INT_INT(z, i, c_1423);
  2846.   i = (c_INT_plus_INT_INT_chk(i,1));
  2847.  }
  2848.  z->len_37 = i;
  2849.  return z;
  2850. }
  2851.  
  2852.  
  2853. INT INTI_u_cmp_INTI_(INTI self, INTI x, INTI y) {
  2854.  INT noname1429 = ((INT) 0);
  2855.  INT i = ((INT) 0);
  2856.  INT j = ((INT) 0);
  2857.  INT z = ((INT) 0);
  2858.  BOOL local0;
  2859.  BOOL local1;
  2860.  INT local2;
  2861.  INT local3;
  2862.  i = INT_abs_INT(x->len_37);
  2863.  j = INT_abs_INT(y->len_37);
  2864.  if ((i==j)) {
  2865.   local0 = (i!=0);
  2866.  } else {
  2867.   local0 = FALSE;
  2868.  }
  2869.  if (local0) {
  2870.   i = (c_INT_minus_INT_INT_chk(i,1));
  2871.   while (1) {
  2872.    if ((i!=0)) {
  2873.     local2 = INTI_aget_INT_INT(x, i);
  2874.     local1 = (local2==INTI_aget_INT_INT(y, i));
  2875.    } else {
  2876.     local1 = FALSE;
  2877.    }
  2878.    if (local1) {
  2879.    }
  2880.    else {
  2881.     goto after_loop;
  2882.    }
  2883.    i = (c_INT_minus_INT_INT_chk(i,1));
  2884.   }
  2885.   after_loop: ;
  2886.   local3 = INTI_aget_INT_INT(x, i);
  2887.   z = (c_INT_minus_INT_INT_chk(local3,INTI_aget_INT_INT(y, i)));
  2888.  }
  2889.  else {
  2890.   z = (c_INT_minus_INT_INT_chk(i,j));
  2891.  }
  2892.  return z;
  2893. }
  2894.  
  2895.  
  2896. INTI INTI_u_minus_INT(INTI self, INTI x, INTI y) {
  2897.  INTI noname1431;
  2898.  INT xl = ((INT) 0);
  2899.  INT yl = ((INT) 0);
  2900.  INT i = ((INT) 0);
  2901.  INT c_1432 = ((INT) 0);
  2902.  INTI z = ((INTI) NULL);
  2903.  INTI local0;
  2904.  INT local1;
  2905.  BOOL local2;
  2906.  INT local3;
  2907.  xl = INT_abs_INT(x->len_37);
  2908.  yl = INT_abs_INT(y->len_37);
  2909.  i = 0;
  2910.  c_1432 = 0;
  2911.  local0 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , xl));
  2912.  local0->asize = xl;
  2913.  z = local0;
  2914.  while (1) {
  2915.   if ((i<yl)) {
  2916.   }
  2917.   else {
  2918.    goto after_loop;
  2919.   }
  2920.   local1 = (c_INT_plus_INT_INT_chk(c_1432,INTI_aget_INT_INT(x, i)));
  2921.   c_1432 = (c_INT_minus_INT_INT_chk(local1,INTI_aget_INT_INT(y, i)));
  2922.   INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(c_1432,shared_INTI_B)));
  2923.   c_1432 = (c_INT_div_INT_INT_chk(c_1432,shared_INTI_B));
  2924.   i = (c_INT_plus_INT_INT_chk(i,1));
  2925.  }
  2926.  after_loop: ;
  2927.  while (1) {
  2928.   if ((i<xl)) {
  2929.   }
  2930.   else {
  2931.    goto after_loop_1434;
  2932.   }
  2933.   c_1432 = (c_INT_plus_INT_INT_chk(c_1432,INTI_aget_INT_INT(x, i)));
  2934.   INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(c_1432,shared_INTI_B)));
  2935.   c_1432 = (c_INT_div_INT_INT_chk(c_1432,shared_INTI_B));
  2936.   i = (c_INT_plus_INT_INT_chk(i,1));
  2937.  }
  2938.  after_loop_1434: ;
  2939.  while (1) {
  2940.   if ((i>0)) {
  2941.    local3 = INTI_aget_INT_INT(z, (c_INT_minus_INT_INT_chk(i,1)));
  2942.    local2 = (local3==0);
  2943.   } else {
  2944.    local2 = FALSE;
  2945.   }
  2946.   if (local2) {
  2947.   }
  2948.   else {
  2949.    goto after_loop_1436;
  2950.   }
  2951.   i = (c_INT_minus_INT_INT_chk(i,1));
  2952.  }
  2953.  after_loop_1436: ;
  2954.  z->len_37 = i;
  2955.  return z;
  2956. }
  2957.  
  2958.  
  2959. INTI INTI_plus_INTI_INTI(INTI self, INTI y) {
  2960.  INTI noname1438;
  2961.  INTI z = ((INTI) NULL);
  2962.  BOOL local0;
  2963.  INT local1;
  2964.  local0 = (self->len_37<0);
  2965.  if (((local0)==((y->len_37<0)))) {
  2966.   z = INTI_u_plus_INTI(self, self, y);
  2967.  }
  2968.  else {
  2969.   local1 = INTI_u_cmp_INTI_(self, self, y);
  2970.   if ((local1<0)) {
  2971.    z = INTI_u_minus_INT(self, y, self);
  2972.    z->len_37 = INT_negate_INT(z->len_37);
  2973.   }
  2974.   else {
  2975.    z = INTI_u_minus_INT(self, self, y);
  2976.   }
  2977.  }
  2978.  if ((self->len_37<0)) {
  2979.   z->len_37 = INT_negate_INT(z->len_37);
  2980.  }
  2981.  return z;
  2982. }
  2983.  
  2984.  
  2985. INTI SCANNER_int_lite(SCANNER self, INT base_1439) {
  2986.  INTI noname1440;
  2987.  INTI b_1441;
  2988.  INTI x;
  2989.  INT d = ((INT) 0);
  2990.  BOOL local0;
  2991.  INTI local1;
  2992.  b_1441 = INTI_create_INT_INTI(((INTI) NULL), base_1439);
  2993.  x = INTI_create_INT_INTI(((INTI) NULL), 0);
  2994.  while (1) {
  2995.   d = CHAR_hex_digit_v(self->next_8);
  2996.   if ((self->next_8=='_')) {
  2997.    SCANNER_fetch(self);
  2998.   }
  2999.   else {
  3000.    if ((0<=d)) {
  3001.     local0 = (d<base_1439);
  3002.    } else {
  3003.     local0 = FALSE;
  3004.    }
  3005.    if (local0) {
  3006.     SCANNER_fetch(self);
  3007.     local1 = INTI_times_INTI_INTI(x, b_1441);
  3008.     x = INTI_plus_INTI_INTI(local1, INTI_create_INT_INTI(((INTI) NULL), d));
  3009.    }
  3010.    else {
  3011.     goto after_loop;
  3012.    }
  3013.   }
  3014.  }
  3015.  after_loop: ;
  3016.  return x;
  3017. }
  3018.  
  3019.  
  3020. INT CHAR_digit_value_INT(CHAR self) {
  3021.  INT noname1443 = ((INT) 0);
  3022.  CHAR noname1444 = ((CHAR) 0);
  3023.  noname1444 = self;
  3024.  switch (noname1444) {
  3025.   case '0':
  3026.    return 0;
  3027.    break;
  3028.   case '1':
  3029.    return 1;
  3030.    break;
  3031.   case '2':
  3032.    return 2;
  3033.    break;
  3034.   case '3':
  3035.    return 3;
  3036.    break;
  3037.   case '4':
  3038.    return 4;
  3039.    break;
  3040.   case '5':
  3041.    return 5;
  3042.    break;
  3043.   case '6':
  3044.    return 6;
  3045.    break;
  3046.   case '7':
  3047.    return 7;
  3048.    break;
  3049.   case '8':
  3050.    return 8;
  3051.    break;
  3052.   case '9':
  3053.    return 9;
  3054.    break;
  3055.   default: ;
  3056.  }
  3057.  return -1;
  3058. }
  3059.  
  3060.  
  3061. INTI INTI_minus_INTI_INTI(INTI self, INTI y) {
  3062.  INTI noname1445;
  3063.  INTI z = ((INTI) NULL);
  3064.  BOOL local0;
  3065.  INT local1;
  3066.  local0 = (self->len_37<0);
  3067.  if (((local0)!=((y->len_37<0)))) {
  3068.   z = INTI_u_plus_INTI(self, self, y);
  3069.  }
  3070.  else {
  3071.   local1 = INTI_u_cmp_INTI_(self, self, y);
  3072.   if ((local1<0)) {
  3073.    z = INTI_u_minus_INT(self, y, self);
  3074.    z->len_37 = INT_negate_INT(z->len_37);
  3075.   }
  3076.   else {
  3077.    z = INTI_u_minus_INT(self, self, y);
  3078.   }
  3079.  }
  3080.  if ((self->len_37<0)) {
  3081.   z->len_37 = INT_negate_INT(z->len_37);
  3082.  }
  3083.  return z;
  3084. }
  3085.  
  3086.  
  3087. BOOL INTI_is_neg_BOOL(INTI self) {
  3088.  BOOL noname1446 = ((BOOL) 0);
  3089.  return (self->len_37<0);
  3090. }
  3091.  
  3092.  
  3093. INT INTI_int_INT(INTI self) {
  3094.  INT noname1447 = ((INT) 0);
  3095.  INT i = ((INT) 0);
  3096.  INT z = ((INT) 0);
  3097.  INT local0;
  3098.  i = INT_abs_INT(self->len_37);
  3099.  z = 0;
  3100.  while (1) {
  3101.   if ((i>0)) {
  3102.   }
  3103.   else {
  3104.    goto after_loop;
  3105.   }
  3106.   i = (c_INT_minus_INT_INT_chk(i,1));
  3107.   local0 = (c_INT_times_INT_INT_chk(z,shared_INTI_B));
  3108.   z = (c_INT_plus_INT_INT_chk(local0,INTI_aget_INT_INT(self, i)));
  3109.  }
  3110.  after_loop: ;
  3111.  if ((self->len_37<0)) {
  3112.   z = INT_negate_INT(z);
  3113.  }
  3114.  return z;
  3115. }
  3116.  
  3117.  
  3118. BOOL INTI_is_zero_BOOL(INTI self) {
  3119.  BOOL noname1449 = ((BOOL) 0);
  3120.  return (self->len_37==0);
  3121. }
  3122.  
  3123.  
  3124. BOOL INTI_is_pos_BOOL(INTI self) {
  3125.  BOOL noname1450 = ((BOOL) 0);
  3126.  return (self->len_37>0);
  3127. }
  3128.  
  3129.  
  3130. INTI INTI_abs_INTI(INTI self) {
  3131.  INTI noname1451;
  3132.  INTI z;
  3133.  if ((self->len_37<0)) {
  3134.   z = INTI_copy_INTI(self);
  3135.   z->len_37 = INT_negate_INT(self->len_37);
  3136.   return z;
  3137.  }
  3138.  return self;
  3139. }
  3140.  
  3141.  
  3142. INTI INTI_u_div_mod_I(INTI self, INTI x, INTI y) {
  3143.  INTI noname1452;
  3144.  INT xl = ((INT) 0);
  3145.  INT yl = ((INT) 0);
  3146.  INT i = ((INT) 0);
  3147.  INT j = ((INT) 0);
  3148.  INT k = ((INT) 0);
  3149.  INT c_1453 = ((INT) 0);
  3150.  INT d = ((INT) 0);
  3151.  INT q = ((INT) 0);
  3152.  INT y1_1454 = ((INT) 0);
  3153.  INT y2 = ((INT) 0);
  3154.  INT local0;
  3155.  INT local1;
  3156.  INT local2;
  3157.  INT local3;
  3158.  INT local4;
  3159.  INT local5;
  3160.  INT local6;
  3161.  INT local7;
  3162.  INT local8;
  3163.  INT local9;
  3164.  INT local10;
  3165.  INT local11;
  3166.  INT local12;
  3167.  INT local13;
  3168.  INT local14;
  3169.  INT local15;
  3170.  INT local16;
  3171.  INT local17;
  3172.  INT local18;
  3173.  xl = INT_abs_INT(x->len_37);
  3174.  yl = INT_abs_INT(y->len_37);
  3175.  x = INTI_copy_INTI(x);
  3176.  if ((yl==1)) {
  3177.   i = (c_INT_minus_INT_INT_chk(xl,1));
  3178.   c_1453 = 0;
  3179.   d = INTI_aget_INT_INT(y, 0);
  3180.   while (1) {
  3181.    if ((i>=0)) {
  3182.    }
  3183.    else {
  3184.     goto after_loop;
  3185.    }
  3186.    local0 = (c_INT_times_INT_INT_chk(c_1453,shared_INTI_B));
  3187.    c_1453 = (c_INT_plus_INT_INT_chk(local0,INTI_aget_INT_INT(x, i)));
  3188.    local1 = (c_INT_plus_INT_INT_chk(i,1));
  3189.    INTI_aset_INT_INT(x, local1, (c_INT_div_INT_INT_chk(c_1453,d)));
  3190.    c_1453 = (c_INT_mod_INT_INT_chk(c_1453,d));
  3191.    i = (c_INT_minus_INT_INT_chk(i,1));
  3192.   }
  3193.   after_loop: ;
  3194.   INTI_aset_INT_INT(x, 0, c_1453);
  3195.  }
  3196.  else {
  3197.   if ((xl>=yl)) {
  3198.    INTI_aset_INT_INT(x, xl, 0);
  3199.    local2 = (c_INT_div_INT_INT_chk(shared_INTI_B,2));
  3200.    local3 = (c_INT_minus_INT_INT_chk(local2,1));
  3201.    local4 = (c_INT_div_INT_INT_chk(local3,INTI_aget_INT_INT(y, (c_INT_minus_INT_INT_chk(yl,1)))));
  3202.    d = (c_INT_plus_INT_INT_chk(local4,1));
  3203.    if ((d!=1)) {
  3204.     y = INTI_copy_INTI(y);
  3205.     i = 0;
  3206.     c_1453 = 0;
  3207.     while (1) {
  3208.      if ((i<xl)) {
  3209.      }
  3210.      else {
  3211.       goto after_loop_1456;
  3212.      }
  3213.      c_1453 = (c_INT_plus_INT_INT_chk(c_1453,(c_INT_times_INT_INT_chk(d,INTI_aget_INT_INT(x, i)))));
  3214.      INTI_aset_INT_INT(x, i, (c_INT_mod_INT_INT_chk(c_1453,shared_INTI_B)));
  3215.      c_1453 = (c_INT_div_INT_INT_chk(c_1453,shared_INTI_B));
  3216.      i = (c_INT_plus_INT_INT_chk(i,1));
  3217.     }
  3218.     after_loop_1456: ;
  3219.     INTI_aset_INT_INT(x, i, c_1453);
  3220.     i = 0;
  3221.     c_1453 = 0;
  3222.     while (1) {
  3223.      if ((i<yl)) {
  3224.      }
  3225.      else {
  3226.       goto after_loop_1458;
  3227.      }
  3228.      c_1453 = (c_INT_plus_INT_INT_chk(c_1453,(c_INT_times_INT_INT_chk(d,INTI_aget_INT_INT(y, i)))));
  3229.      INTI_aset_INT_INT(y, i, (c_INT_mod_INT_INT_chk(c_1453,shared_INTI_B)));
  3230.      c_1453 = (c_INT_div_INT_INT_chk(c_1453,shared_INTI_B));
  3231.      i = (c_INT_plus_INT_INT_chk(i,1));
  3232.     }
  3233.     after_loop_1458: ;
  3234.     if (!((c_1453==0))) {
  3235.      fprintf(stderr,"Violation of assertion ../Library/inti.sa:126:18\n");
  3236.      exit(16);
  3237.     }
  3238.    }
  3239.    y1_1454 = INTI_aget_INT_INT(y, (c_INT_minus_INT_INT_chk(yl,1)));
  3240.    y2 = INTI_aget_INT_INT(y, (c_INT_minus_INT_INT_chk(yl,2)));
  3241.    i = xl;
  3242.    while (1) {
  3243.     if ((i>=yl)) {
  3244.     }
  3245.     else {
  3246.      goto after_loop_1460;
  3247.     }
  3248.     local5 = INTI_aget_INT_INT(x, i);
  3249.     if ((local5!=y1_1454)) {
  3250.      local6 = INTI_aget_INT_INT(x, i);
  3251.      local7 = (c_INT_times_INT_INT_chk(local6,shared_INTI_B));
  3252.      local8 = (c_INT_plus_INT_INT_chk(local7,INTI_aget_INT_INT(x, (c_INT_minus_INT_INT_chk(i,1)))));
  3253.      q = (c_INT_div_INT_INT_chk(local8,y1_1454));
  3254.     }
  3255.     else {
  3256.      q = (c_INT_minus_INT_INT_chk(shared_INTI_B,1));
  3257.     }
  3258.     while (1) {
  3259.      local9 = (c_INT_times_INT_INT_chk(y2,q));
  3260.      local10 = INTI_aget_INT_INT(x, i);
  3261.      local11 = (c_INT_times_INT_INT_chk(local10,shared_INTI_B));
  3262.      local12 = (c_INT_plus_INT_INT_chk(local11,INTI_aget_INT_INT(x, (c_INT_minus_INT_INT_chk(i,1)))));
  3263.      local13 = (c_INT_minus_INT_INT_chk(local12,(c_INT_times_INT_INT_chk(y1_1454,q))));
  3264.      local14 = (c_INT_times_INT_INT_chk(local13,shared_INTI_B));
  3265.      if ((local9>(c_INT_plus_INT_INT_chk(local14,INTI_aget_INT_INT(x, (c_INT_minus_INT_INT_chk(i,2))))))) {
  3266.      }
  3267.      else {
  3268.       goto after_loop_1462;
  3269.      }
  3270.      q = (c_INT_minus_INT_INT_chk(q,1));
  3271.     }
  3272.     after_loop_1462: ;
  3273.     j = (c_INT_minus_INT_INT_chk(i,yl));
  3274.     k = 0;
  3275.     c_1453 = 0;
  3276.     while (1) {
  3277.      if ((k<yl)) {
  3278.      }
  3279.      else {
  3280.       goto after_loop_1464;
  3281.      }
  3282.      local15 = (c_INT_plus_INT_INT_chk(c_1453,INTI_aget_INT_INT(x, j)));
  3283.      c_1453 = (c_INT_minus_INT_INT_chk(local15,(c_INT_times_INT_INT_chk(q,INTI_aget_INT_INT(y, k)))));
  3284.      INTI_aset_INT_INT(x, j, (c_INT_mod_INT_INT_chk(c_1453,shared_INTI_B)));
  3285.      c_1453 = (c_INT_div_INT_INT_chk(c_1453,shared_INTI_B));
  3286.      j = (c_INT_plus_INT_INT_chk(j,1));
  3287.      k = (c_INT_plus_INT_INT_chk(k,1));
  3288.     }
  3289.     after_loop_1464: ;
  3290.     local16 = (c_INT_plus_INT_INT_chk(c_1453,INTI_aget_INT_INT(x, i)));
  3291.     if ((local16!=0)) {
  3292.      j = (c_INT_minus_INT_INT_chk(i,yl));
  3293.      k = 0;
  3294.      c_1453 = 0;
  3295.      while (1) {
  3296.       if ((k<yl)) {
  3297.       }
  3298.       else {
  3299.        goto after_loop_1466;
  3300.       }
  3301.       local17 = (c_INT_plus_INT_INT_chk(c_1453,INTI_aget_INT_INT(x, j)));
  3302.       c_1453 = (c_INT_plus_INT_INT_chk(local17,INTI_aget_INT_INT(y, k)));
  3303.       INTI_aset_INT_INT(x, j, (c_INT_mod_INT_INT_chk(c_1453,shared_INTI_B)));
  3304.       c_1453 = (c_INT_div_INT_INT_chk(c_1453,shared_INTI_B));
  3305.       j = (c_INT_plus_INT_INT_chk(j,1));
  3306.       k = (c_INT_plus_INT_INT_chk(k,1));
  3307.      }
  3308.      after_loop_1466: ;
  3309.      INTI_aset_INT_INT(x, i, (c_INT_minus_INT_INT_chk(q,1)));
  3310.     }
  3311.     else {
  3312.      INTI_aset_INT_INT(x, i, q);
  3313.     }
  3314.     i = (c_INT_minus_INT_INT_chk(i,1));
  3315.    }
  3316.    after_loop_1460: ;
  3317.    if ((d!=1)) {
  3318.     i = yl;
  3319.     c_1453 = 0;
  3320.     while (1) {
  3321.      if ((i>0)) {
  3322.      }
  3323.      else {
  3324.       goto after_loop_1468;
  3325.      }
  3326.      i = (c_INT_minus_INT_INT_chk(i,1));
  3327.      local18 = (c_INT_times_INT_INT_chk(c_1453,shared_INTI_B));
  3328.      c_1453 = (c_INT_plus_INT_INT_chk(local18,INTI_aget_INT_INT(x, i)));
  3329.      INTI_aset_INT_INT(x, i, (c_INT_div_INT_INT_chk(c_1453,d)));
  3330.      c_1453 = (c_INT_mod_INT_INT_chk(c_1453,d));
  3331.     }
  3332.     after_loop_1468: ;
  3333.    }
  3334.   }
  3335.  }
  3336.  return x;
  3337. }
  3338.  
  3339.  
  3340. INTI INTI_get_u_mod_I(INTI self, INTI x, INTI y, INTI q) {
  3341.  INTI noname1470;
  3342.  INT i = ((INT) 0);
  3343.  INTI z;
  3344.  INT local0;
  3345.  INT local1;
  3346.  BOOL local2;
  3347.  INT local3;
  3348.  INTI local4;
  3349.  local0 = INT_abs_INT(x->len_37);
  3350.  local1 = INT_min_INT_INT(local0, INT_abs_INT(y->len_37));
  3351.  i = (c_INT_minus_INT_INT_chk(local1,1));
  3352.  while (1) {
  3353.   if ((i>=0)) {
  3354.    local3 = INTI_aget_INT_INT(q, i);
  3355.    local2 = (local3==0);
  3356.   } else {
  3357.    local2 = FALSE;
  3358.   }
  3359.   if (local2) {
  3360.   }
  3361.   else {
  3362.    goto after_loop;
  3363.   }
  3364.   i = (c_INT_minus_INT_INT_chk(i,1));
  3365.  }
  3366.  after_loop: ;
  3367.  local4 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , (c_INT_plus_INT_INT_chk(i,1))));
  3368.  local4->asize = (c_INT_plus_INT_INT_chk(i,1));
  3369.  z = local4;
  3370.  z->len_37 = (c_INT_plus_INT_INT_chk(i,1));
  3371.  while (1) {
  3372.   if ((i>=0)) {
  3373.   }
  3374.   else {
  3375.    goto after_loop_1472;
  3376.   }
  3377.   INTI_aset_INT_INT(z, i, INTI_aget_INT_INT(q, i));
  3378.   i = (c_INT_minus_INT_INT_chk(i,1));
  3379.  }
  3380.  after_loop_1472: ;
  3381.  return z;
  3382. }
  3383.  
  3384.  
  3385. INTI INTI_mod_INTI_INTI(INTI self, INTI y) {
  3386.  INTI noname1474;
  3387.  INTI z = ((INTI) NULL);
  3388.  INT local0;
  3389.  BOOL local1;
  3390.  local0 = INT_abs_INT(self->len_37);
  3391.  if ((local0<INT_abs_INT(y->len_37))) {
  3392.   z = self;
  3393.  }
  3394.  else {
  3395.   z = INTI_get_u_mod_I(self, self, y, INTI_u_div_mod_I(self, self, y));
  3396.   if ((self->len_37<0)) {
  3397.    local1 = (z->len_37!=0);
  3398.   } else {
  3399.    local1 = FALSE;
  3400.   }
  3401.   if (local1) {
  3402.    z = INTI_u_minus_INT(self, y, z);
  3403.   }
  3404.  }
  3405.  return z;
  3406. }
  3407.  
  3408.  
  3409. INTI INTI_gcd_INTI_INTI(INTI self, INTI y) {
  3410.  INTI noname1475;
  3411.  if ((y->len_37==0)) {
  3412.   return INTI_abs_INTI(self);
  3413.  }
  3414.  return INTI_gcd_INTI_INTI(y, INTI_mod_INTI_INTI(self, y));
  3415.  if (!(INTI_is_pos_BOOL(noname1475))) {
  3416.   fprintf(stderr,"Violation of postcondition ../Library/inti.sa:354:6\n");
  3417.   exit(16);
  3418.  }
  3419. }
  3420.  
  3421.  
  3422. INTI INTI_get_u_div_I(INTI self, INTI x, INTI y, INTI q) {
  3423.  INTI noname1476;
  3424.  INT i = ((INT) 0);
  3425.  INT yl = ((INT) 0);
  3426.  INTI z;
  3427.  BOOL local0;
  3428.  INT local1;
  3429.  INTI local2;
  3430.  INT local3;
  3431.  INT local4;
  3432.  INT local5;
  3433.  i = INT_abs_INT(x->len_37);
  3434.  yl = INT_abs_INT(y->len_37);
  3435.  while (1) {
  3436.   if ((i>=yl)) {
  3437.    local1 = INTI_aget_INT_INT(q, i);
  3438.    local0 = (local1==0);
  3439.   } else {
  3440.    local0 = FALSE;
  3441.   }
  3442.   if (local0) {
  3443.   }
  3444.   else {
  3445.    goto after_loop;
  3446.   }
  3447.   i = (c_INT_minus_INT_INT_chk(i,1));
  3448.  }
  3449.  after_loop: ;
  3450.  local3 = (c_INT_minus_INT_INT_chk(i,yl));
  3451.  local2 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , (c_INT_plus_INT_INT_chk(local3,1))));
  3452.  local2->asize = (c_INT_plus_INT_INT_chk(local3,1));
  3453.  z = local2;
  3454.  local4 = (c_INT_minus_INT_INT_chk(i,yl));
  3455.  z->len_37 = (c_INT_plus_INT_INT_chk(local4,1));
  3456.  while (1) {
  3457.   if ((i>=yl)) {
  3458.   }
  3459.   else {
  3460.    goto after_loop_1478;
  3461.   }
  3462.   local5 = (c_INT_minus_INT_INT_chk(i,yl));
  3463.   INTI_aset_INT_INT(z, local5, INTI_aget_INT_INT(q, i));
  3464.   i = (c_INT_minus_INT_INT_chk(i,1));
  3465.  }
  3466.  after_loop_1478: ;
  3467.  return z;
  3468. }
  3469.  
  3470.  
  3471. INTI INTI_u_times_plu(INTI self, INTI x, INT y, INT c_1480) {
  3472.  INTI noname1481;
  3473.  INT xl = ((INT) 0);
  3474.  INT i = ((INT) 0);
  3475.  INTI z;
  3476.  BOOL local0;
  3477.  BOOL local1;
  3478.  BOOL local2;
  3479.  INTI local3;
  3480.  INT local4;
  3481.  if ((0<=y)) {
  3482.   local2 = (y<shared_INTI_B);
  3483.  } else {
  3484.   local2 = FALSE;
  3485.  }
  3486.  if (local2) {
  3487.   local1 = (0<=c_1480);
  3488.  } else {
  3489.   local1 = FALSE;
  3490.  }
  3491.  if (local1) {
  3492.   local0 = (c_1480<shared_INTI_B);
  3493.  } else {
  3494.   local0 = FALSE;
  3495.  }
  3496.  if (!(local0)) {
  3497.   fprintf(stderr,"Violation of precondition ../Library/inti.sa:177:23\n");
  3498.   exit(16);
  3499.  }
  3500.  xl = INT_abs_INT(x->len_37);
  3501.  i = 0;
  3502.  local3 = ((INTI) sbi_arr_alloc_atomic(sizeof(struct INTI_struct), INTI_tag, sizeof(INT) , (c_INT_plus_INT_INT_chk(xl,1))));
  3503.  local3->asize = (c_INT_plus_INT_INT_chk(xl,1));
  3504.  z = local3;
  3505.  while (1) {
  3506.   if ((i<xl)) {
  3507.   }
  3508.   else {
  3509.    goto after_loop;
  3510.   }
  3511.   local4 = INTI_aget_INT_INT(x, i);
  3512.   c_1480 = (c_INT_plus_INT_INT_chk(c_1480,(c_INT_times_INT_INT_chk(local4,y))));
  3513.   INTI_aset_INT_INT(z, i, (c_INT_mod_INT_INT_chk(c_1480,shared_INTI_B)));
  3514.   c_1480 = (c_INT_div_INT_INT_chk(c_1480,shared_INTI_B));
  3515.   i = (c_INT_plus_INT_INT_chk(i,1));
  3516.  }
  3517.  after_loop: ;
  3518.  if ((c_1480!=0)) {
  3519.   INTI_aset_INT_INT(z, i, c_1480);
  3520.   i = (c_INT_plus_INT_INT_chk(i,1));
  3521.  }
  3522.  z->len_37 = i;
  3523.  return z;
  3524. }
  3525.  
  3526.  
  3527. INTI INTI_div_INTI_INTI(INTI self, INTI y) {
  3528.  INTI noname1483;
  3529.  INTI z = ((INTI) NULL);
  3530.  INTI qr;
  3531.  INT local0;
  3532.  BOOL local1;
  3533.  BOOL local2;
  3534.  local0 = INT_abs_INT(self->len_37);
  3535.  if ((local0<INT_abs_INT(y->len_37))) {
  3536.   z = INTI_create_INT_INTI(((INTI) NULL), 0);
  3537.  }
  3538.  else {
  3539.   qr = INTI_u_div_mod_I(self, self, y);
  3540.   z = INTI_get_u_div_I(self, self, y, qr);
  3541.   if ((self->len_37<0)) {
  3542.    local1 = (INTI_get_u_mod_I(self, self, y, qr)->len_37!=0);
  3543.   } else {
  3544.    local1 = FALSE;
  3545.   }
  3546.   if (local1) {
  3547.    z = INTI_u_times_plu(self, z, 1, 1);
  3548.   }
  3549.   local2 = (self->len_37<0);
  3550.   if (((local2)!=((y->len_37<0)))) {
  3551.    z->len_37 = INT_negate_INT(z->len_37);
  3552.   }
  3553.  }
  3554.  return z;
  3555. }
  3556.  
  3557.  
  3558. RAT RAT_u_INTI_RAT(RAT self, INTI u_1484) {
  3559.  RAT local0;
  3560.  local0 = self;
  3561.  local0.u = u_1484;
  3562.  return local0;
  3563. }
  3564.  
  3565.  
  3566. RAT RAT_v_INTI_RAT(RAT self, INTI v_1485) {
  3567.  RAT local0;
  3568.  local0 = self;
  3569.  local0.v = v_1485;
  3570.  return local0;
  3571. }
  3572.  
  3573.  
  3574. RAT RAT_create_INTI_(RAT self, INTI u_1486, INTI v_1487) {
  3575.  RAT noname1488 = RAT_zero;
  3576.  INTI g_1489;
  3577.  RAT r_1490 = RAT_zero;
  3578.  RAT local0;
  3579.  if (!((!(INTI_is_zero_BOOL(v_1487))))) {
  3580.   fprintf(stderr,"Violation of assertion ../Library/rat.sa:28:12\n");
  3581.   exit(16);
  3582.  }
  3583.  if (INTI_is_zero_BOOL(u_1486)) {
  3584.   v_1487 = INTI_create_INT_INTI(((INTI) NULL), 1);
  3585.  }
  3586.  else {
  3587.   g_1489 = INTI_gcd_INTI_INTI(u_1486, v_1487);
  3588.   if (INTI_is_neg_BOOL(v_1487)) {
  3589.    g_1489 = INTI_negate_INTI(g_1489);
  3590.   }
  3591.   u_1486 = INTI_div_INTI_INTI(u_1486, g_1489);
  3592.   v_1487 = INTI_div_INTI_INTI(v_1487, g_1489);
  3593.  }
  3594.  if (!(INTI_is_pos_BOOL(v_1487))) {
  3595.   fprintf(stderr,"Violation of assertion ../Library/rat.sa:34:12\n");
  3596.   exit(16);
  3597.  }
  3598.  local0 = RAT_u_INTI_RAT(r_1490, u_1486);
  3599.  return RAT_v_INTI_RAT(local0, v_1487);
  3600. }
  3601.  
  3602.  
  3603. RAT RAT_create_INTI_RAT(RAT self, INTI u_1491) {
  3604.  RAT noname1492 = RAT_zero;
  3605.  RAT r_1493 = RAT_zero;
  3606.  RAT local0;
  3607.  local0 = RAT_u_INTI_RAT(r_1493, u_1491);
  3608.  return RAT_v_INTI_RAT(local0, INTI_create_INT_INTI(((INTI) NULL), 1));
  3609. }
  3610.  
  3611.  
  3612. TOKEN SCANNER_number_TOKEN(SCANNER self) {
  3613.  TOKEN noname1494 = TOKEN_zero;
  3614.  INT res = ((INT) 0);
  3615.  INT d = ((INT) 0);
  3616.  INTI m;
  3617.  INTI e_1495;
  3618.  INT ec = ((INT) 0);
  3619.  INTI ten;
  3620.  BOOL neg_1496 = ((BOOL) 0);
  3621.  BOOL local0;
  3622.  INTI local1;
  3623.  RAT local2;
  3624.  INTI local3;
  3625.  RAT local4;
  3626.  INTI local5;
  3627.  res = shared_SCANNER_l_1497;
  3628.  d = 10;
  3629.  if ((self->next_8=='0')) {
  3630.   SCANNER_fetch(self);
  3631.   if ((self->next_8=='b')) {
  3632.    SCANNER_fetch(self);
  3633.    d = 2;
  3634.   }
  3635.   else {
  3636.    if ((self->next_8=='o')) {
  3637.     SCANNER_fetch(self);
  3638.     d = 8;
  3639.    }
  3640.    else {
  3641.     if ((self->next_8=='x')) {
  3642.      SCANNER_fetch(self);
  3643.      d = 16;
  3644.     }
  3645.    }
  3646.   }
  3647.  }
  3648.  m = SCANNER_int_lite(self, d);
  3649.  e_1495 = INTI_create_INT_INTI(((INTI) NULL), 0);
  3650.  if ((self->next_8=='.')) {
  3651.   local0 = (d==10);
  3652.  } else {
  3653.   local0 = FALSE;
  3654.  }
  3655.  if (local0) {
  3656.   SCANNER_fetch(self);
  3657.   d = CHAR_digit_value_INT(self->next_8);
  3658.   if ((d>=0)) {
  3659.    ec = 0;
  3660.    ten = INTI_create_INT_INTI(((INTI) NULL), 10);
  3661.    while (1) {
  3662.     if ((self->next_8=='_')) {
  3663.      SCANNER_fetch(self);
  3664.     }
  3665.     else {
  3666.      if ((d>=0)) {
  3667.       SCANNER_fetch(self);
  3668.       local1 = INTI_times_INTI_INTI(m, ten);
  3669.       m = INTI_plus_INTI_INTI(local1, INTI_create_INT_INTI(((INTI) NULL), d));
  3670.       ec = (c_INT_minus_INT_INT_chk(ec,1));
  3671.      }
  3672.      else {
  3673.       goto after_loop;
  3674.      }
  3675.     }
  3676.     d = CHAR_digit_value_INT(self->next_8);
  3677.    }
  3678.    after_loop: ;
  3679.    e_1495 = INTI_create_INT_INTI(((INTI) NULL), ec);
  3680.    if ((self->next_8=='e')) {
  3681.     SCANNER_fetch(self);
  3682.     neg_1496 = FALSE;
  3683.     if ((self->next_8=='-')) {
  3684.      SCANNER_fetch(self);
  3685.      neg_1496 = TRUE;
  3686.     }
  3687.     d = CHAR_digit_value_INT(self->next_8);
  3688.     if ((d>=0)) {
  3689.      if (neg_1496) {
  3690.       e_1495 = INTI_minus_INTI_INTI(e_1495, SCANNER_int_lite(self, 10));
  3691.      }
  3692.      else {
  3693.       e_1495 = INTI_plus_INTI_INTI(e_1495, SCANNER_int_lite(self, 10));
  3694.      }
  3695.     }
  3696.     else {
  3697.      SCANNER_error_STR(self, ((STR) &malformedfloatin));
  3698.     }
  3699.    }
  3700.    res = shared_SCANNER_l_1499;
  3701.   }
  3702.   else {
  3703.    SCANNER_backup(self);
  3704.   }
  3705.  }
  3706.  if (INTI_is_neg_BOOL(e_1495)) {
  3707.   local2 = RAT_zero;
  3708.   local3 = INTI_create_INT_INTI(((INTI) NULL), 10);
  3709.   self->num_value = RAT_create_INTI_(local2, m, INTI_pow_INT_INTI(local3, INT_negate_INT(INTI_int_INT(e_1495))));
  3710.  }
  3711.  else {
  3712.   local4 = RAT_zero;
  3713.   local5 = INTI_create_INT_INTI(((INTI) NULL), 10);
  3714.   self->num_value = RAT_create_INTI_RAT(local4, INTI_times_INTI_INTI(m, INTI_pow_INT_INTI(local5, INTI_int_INT(e_1495))));
  3715.  }
  3716.  self->value_type = shared_TR_FLT_LI;
  3717.  if ((self->next_8=='i')) {
  3718.   SCANNER_fetch(self);
  3719.   self->value_type = shared_TR_FLT_LI_1500;
  3720.  }
  3721.  else {
  3722.   if ((res==shared_SCANNER_l_1499)) {
  3723.    if ((self->next_8=='d')) {
  3724.     SCANNER_fetch(self);
  3725.     if ((self->next_8=='x')) {
  3726.      SCANNER_fetch(self);
  3727.      self->value_type = shared_TR_FLT_LI_1501;
  3728.     }
  3729.     else {
  3730.      self->value_type = shared_TR_FLT_LI_1502;
  3731.     }
  3732.    }
  3733.    else {
  3734.     if ((self->next_8=='x')) {
  3735.      SCANNER_fetch(self);
  3736.      self->value_type = shared_TR_FLT_LI_1503;
  3737.     }
  3738.    }
  3739.   }
  3740.  }
  3741.  return TOKEN_create_INT(TOKEN_zero, res);
  3742. }
  3743.  
  3744.  
  3745. TOKEN SCANNER_token_TOKEN(SCANNER self) {
  3746.  TOKEN noname1504 = TOKEN_zero;
  3747.  BOOL whitespace = ((BOOL) 0);
  3748.  INT res = ((INT) 0);
  3749.  CHAR noname1505 = ((CHAR) 0);
  3750.  BOOL local0;
  3751.  PROG local1;
  3752.  BOOL local2;
  3753.  BOOL local3;
  3754.  BOOL local4;
  3755.  FSTR local5;
  3756.  STR local6;
  3757.  STR local7;
  3758.  whitespace = FALSE;
  3759.  res = shared_SCANNER_n_1506;
  3760.  while (1) {
  3761.   noname1505 = self->next_8;
  3762.   switch (noname1505) {
  3763.    case '\0':
  3764.     res = shared_SCANNER_e_1508;
  3765.     break;
  3766.    case '\n':
  3767.     whitespace = TRUE;
  3768.     SCANNER_skip_whi(self);
  3769.     break;
  3770.    case ' ':
  3771.     whitespace = TRUE;
  3772.     SCANNER_skip_whi(self);
  3773.     break;
  3774.    case '\t':
  3775.     whitespace = TRUE;
  3776.     SCANNER_skip_whi(self);
  3777.     break;
  3778.    case '\b':
  3779.     whitespace = TRUE;
  3780.     SCANNER_skip_whi(self);
  3781.     break;
  3782.    case '\r':
  3783.     whitespace = TRUE;
  3784.     SCANNER_skip_whi(self);
  3785.     break;
  3786.    case '\v':
  3787.     whitespace = TRUE;
  3788.     SCANNER_skip_whi(self);
  3789.     break;
  3790.    case 'a':
  3791.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3792.     break;
  3793.    case 'b':
  3794.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3795.     break;
  3796.    case 'c':
  3797.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3798.     break;
  3799.    case 'd':
  3800.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3801.     break;
  3802.    case 'e':
  3803.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3804.     break;
  3805.    case 'f':
  3806.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3807.     break;
  3808.    case 'g':
  3809.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3810.     break;
  3811.    case 'h':
  3812.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3813.     break;
  3814.    case 'i':
  3815.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3816.     break;
  3817.    case 'j':
  3818.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3819.     break;
  3820.    case 'k':
  3821.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3822.     break;
  3823.    case 'l':
  3824.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3825.     break;
  3826.    case 'm':
  3827.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3828.     break;
  3829.    case 'n':
  3830.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3831.     break;
  3832.    case 'o':
  3833.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3834.     break;
  3835.    case 'p':
  3836.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3837.     break;
  3838.    case 'q':
  3839.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3840.     break;
  3841.    case 'r':
  3842.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3843.     break;
  3844.    case 's':
  3845.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3846.     break;
  3847.    case 't':
  3848.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3849.     break;
  3850.    case 'u':
  3851.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3852.     break;
  3853.    case 'v':
  3854.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3855.     break;
  3856.    case 'w':
  3857.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3858.     break;
  3859.    case 'x':
  3860.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3861.     break;
  3862.    case 'y':
  3863.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3864.     break;
  3865.    case 'z':
  3866.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3867.     break;
  3868.    case 'A':
  3869.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3870.     break;
  3871.    case 'B':
  3872.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3873.     break;
  3874.    case 'C':
  3875.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3876.     break;
  3877.    case 'D':
  3878.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3879.     break;
  3880.    case 'E':
  3881.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3882.     break;
  3883.    case 'F':
  3884.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3885.     break;
  3886.    case 'G':
  3887.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3888.     break;
  3889.    case 'H':
  3890.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3891.     break;
  3892.    case 'I':
  3893.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3894.     break;
  3895.    case 'J':
  3896.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3897.     break;
  3898.    case 'K':
  3899.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3900.     break;
  3901.    case 'L':
  3902.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3903.     break;
  3904.    case 'M':
  3905.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3906.     break;
  3907.    case 'N':
  3908.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3909.     break;
  3910.    case 'O':
  3911.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3912.     break;
  3913.    case 'P':
  3914.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3915.     break;
  3916.    case 'Q':
  3917.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3918.     break;
  3919.    case 'R':
  3920.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3921.     break;
  3922.    case 'S':
  3923.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3924.     break;
  3925.    case 'T':
  3926.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3927.     break;
  3928.    case 'U':
  3929.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3930.     break;
  3931.    case 'V':
  3932.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3933.     break;
  3934.    case 'W':
  3935.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3936.     break;
  3937.    case 'X':
  3938.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3939.     break;
  3940.    case 'Y':
  3941.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3942.     break;
  3943.    case 'Z':
  3944.     res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3945.     break;
  3946.    case '(':
  3947.     SCANNER_fetch(self);
  3948.     if ((self->next_8=='*')) {
  3949.      SCANNER_fetch(self);
  3950.      SCANNER_comment(self);
  3951.     }
  3952.     else {
  3953.      res = shared_SCANNER_l_1509;
  3954.     }
  3955.     break;
  3956.    case ')':
  3957.     SCANNER_fetch(self);
  3958.     res = shared_SCANNER_r_1510;
  3959.     break;
  3960.    case '[':
  3961.     SCANNER_fetch(self);
  3962.     res = shared_SCANNER_l_1511;
  3963.     break;
  3964.    case ']':
  3965.     SCANNER_fetch(self);
  3966.     res = shared_SCANNER_r_1512;
  3967.     break;
  3968.    case '{':
  3969.     SCANNER_fetch(self);
  3970.     res = shared_SCANNER_l_1513;
  3971.     break;
  3972.    case '}':
  3973.     SCANNER_fetch(self);
  3974.     res = shared_SCANNER_r_1514;
  3975.     break;
  3976.    case ',':
  3977.     SCANNER_fetch(self);
  3978.     res = shared_SCANNER_c_1515;
  3979.     break;
  3980.    case '.':
  3981.     SCANNER_fetch(self);
  3982.     res = shared_SCANNER_d_1516;
  3983.     break;
  3984.    case ';':
  3985.     SCANNER_fetch(self);
  3986.     res = shared_SCANNER_s_1517;
  3987.     break;
  3988.    case '$':
  3989.     SCANNER_fetch(self);
  3990.     if (CHAR_is_upper_BOOL(self->next_8)) {
  3991.      res = (TOKEN_blob=SCANNER_identifi(self)).val_16;
  3992.      if ((res==shared_SCANNER_i)) {
  3993.       local0 = SCANNER_is_class(self, self->lex_value.str_4);
  3994.      } else {
  3995.       local0 = FALSE;
  3996.      }
  3997.      if (local0) {
  3998.       local1 = self->prog;
  3999.       self->lex_value = PROG_ident_for_S(local1, STR_plus_STR_STR(((STR) &name_1518), self->lex_value.str_4));
  4000.       res = shared_SCANNER_t_1519;
  4001.      }
  4002.     }
  4003.     if ((res!=shared_SCANNER_t_1519)) {
  4004.      SCANNER_error_STR(self, ((STR) &withouttypename));
  4005.     }
  4006.     break;
  4007.    case '+':
  4008.     SCANNER_fetch(self);
  4009.     res = shared_SCANNER_p_1520;
  4010.     break;
  4011.    case '-':
  4012.     SCANNER_fetch(self);
  4013.     if ((self->next_8=='-')) {
  4014.      while (1) {
  4015.       SCANNER_fetch(self);
  4016.       if ((self->next_8=='\n')) {
  4017.        local2 = TRUE;
  4018.       } else {
  4019.        local2 = (self->next_8==shared_SFILE_ID__1294);
  4020.       }
  4021.       if (local2) {
  4022.        goto after_loop_1521;
  4023.       }
  4024.      }
  4025.      after_loop_1521: ;
  4026.      if ((self->next_8=='\n')) {
  4027.       SCANNER_fetch(self);
  4028.      }
  4029.      else {
  4030.       res = shared_SCANNER_e_1508;
  4031.      }
  4032.     }
  4033.     else {
  4034.      if ((self->next_8=='>')) {
  4035.       SCANNER_fetch(self);
  4036.       res = shared_SCANNER_t_1523;
  4037.      }
  4038.      else {
  4039.       res = shared_SCANNER_m;
  4040.      }
  4041.     }
  4042.     break;
  4043.    case '*':
  4044.     SCANNER_fetch(self);
  4045.     res = shared_SCANNER_t_1524;
  4046.     break;
  4047.    case '#':
  4048.     SCANNER_fetch(self);
  4049.     res = shared_SCANNER_s_1525;
  4050.     break;
  4051.    case '^':
  4052.     SCANNER_fetch(self);
  4053.     res = shared_SCANNER_p_1526;
  4054.     break;
  4055.    case '%':
  4056.     SCANNER_fetch(self);
  4057.     res = shared_SCANNER_m_1527;
  4058.     break;
  4059.    case '|':
  4060.     SCANNER_fetch(self);
  4061.     res = shared_SCANNER_v_1528;
  4062.     break;
  4063.    case '!':
  4064.     SCANNER_fetch(self);
  4065.     if (whitespace) {
  4066.      res = shared_SCANNER_b_1529;
  4067.     }
  4068.     else {
  4069.      res = shared_SCANNER_i_1530;
  4070.     }
  4071.     break;
  4072.    case '_':
  4073.     SCANNER_fetch(self);
  4074.     res = shared_SCANNER_u_1531;
  4075.     break;
  4076.    case '=':
  4077.     SCANNER_fetch(self);
  4078.     res = shared_SCANNER_i_1532;
  4079.     break;
  4080.    case ':':
  4081.     SCANNER_fetch(self);
  4082.     if ((self->next_8==':')) {
  4083.      SCANNER_fetch(self);
  4084.      if ((self->next_8=='=')) {
  4085.       res = shared_SCANNER_c_1533;
  4086.       SCANNER_backup(self);
  4087.      }
  4088.      else {
  4089.       res = shared_SCANNER_d_1534;
  4090.      }
  4091.     }
  4092.     else {
  4093.      if ((self->next_8=='=')) {
  4094.       SCANNER_fetch(self);
  4095.       res = shared_SCANNER_a_1535;
  4096.      }
  4097.      else {
  4098.       if ((self->next_8=='-')) {
  4099.        local3 = self->pSather;
  4100.       } else {
  4101.        local3 = FALSE;
  4102.       }
  4103.       if (local3) {
  4104.        res = shared_SCANNER_f_1536;
  4105.       }
  4106.       else {
  4107.        res = shared_SCANNER_c_1533;
  4108.       }
  4109.      }
  4110.     }
  4111.     break;
  4112.    case '/':
  4113.     SCANNER_fetch(self);
  4114.     if ((self->next_8=='=')) {
  4115.      SCANNER_fetch(self);
  4116.      res = shared_SCANNER_i_1537;
  4117.     }
  4118.     else {
  4119.      res = shared_SCANNER_q_1538;
  4120.     }
  4121.     break;
  4122.    case '<':
  4123.     SCANNER_fetch(self);
  4124.     if ((self->next_8=='=')) {
  4125.      SCANNER_fetch(self);
  4126.      res = shared_SCANNER_i_1539;
  4127.     }
  4128.     else {
  4129.      res = shared_SCANNER_i_1540;
  4130.     }
  4131.     break;
  4132.    case '>':
  4133.     SCANNER_fetch(self);
  4134.     if ((self->next_8=='=')) {
  4135.      SCANNER_fetch(self);
  4136.      res = shared_SCANNER_i_1541;
  4137.     }
  4138.     else {
  4139.      res = shared_SCANNER_i_1542;
  4140.     }
  4141.     break;
  4142.    case '~':
  4143.     SCANNER_fetch(self);
  4144.     res = shared_SCANNER_n_1543;
  4145.     break;
  4146.    case '\'':
  4147.     SCANNER_fetch(self);
  4148.     if ((self->next_8=='\\')) {
  4149.      self->char_value = SCANNER_characte(self);
  4150.     }
  4151.     else {
  4152.      self->char_value = self->next_8;
  4153.      SCANNER_fetch(self);
  4154.     }
  4155.     if ((self->next_8!='\'')) {
  4156.      SCANNER_error_STR(self, ((STR) &malformedcharact));
  4157.     }
  4158.     SCANNER_fetch(self);
  4159.     res = shared_SCANNER_l_1544;
  4160.     break;
  4161.    case '\"':
  4162.     SCANNER_fetch(self);
  4163.     FSTR_clear(self->buf_18);
  4164.     while (1) {
  4165.      while (1) {
  4166.       if ((self->next_8=='\"')) {
  4167.        local4 = TRUE;
  4168.       } else {
  4169.        local4 = (self->next_8=='\n');
  4170.       }
  4171.       if (local4) {
  4172.        goto after_loop_1547;
  4173.       }
  4174.       if ((self->next_8=='\\')) {
  4175.        local5 = self->buf_18;
  4176.        self->buf_18 = FSTR_plus_CHAR_FSTR(local5, SCANNER_characte(self));
  4177.       }
  4178.       else {
  4179.        self->buf_18 = FSTR_plus_CHAR_FSTR(self->buf_18, self->next_8);
  4180.        SCANNER_fetch(self);
  4181.       }
  4182.      }
  4183.      after_loop_1547: ;
  4184.      if ((self->next_8=='\n')) {
  4185.       SCANNER_error_STR(self, ((STR) &unterminatedSTRl));
  4186.       goto after_loop_1545;
  4187.      }
  4188.      SCANNER_fetch(self);
  4189.      SCANNER_skip_whi(self);
  4190.      if ((self->next_8!='\"')) {
  4191.       goto after_loop_1545;
  4192.      }
  4193.      SCANNER_fetch(self);
  4194.     }
  4195.     after_loop_1545: ;
  4196.     SCANNER_add_buf_(self);
  4197.     res = shared_SCANNER_l_1549;
  4198.     break;
  4199.    case '0':
  4200.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4201.     break;
  4202.    case '1':
  4203.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4204.     break;
  4205.    case '2':
  4206.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4207.     break;
  4208.    case '3':
  4209.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4210.     break;
  4211.    case '4':
  4212.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4213.     break;
  4214.    case '5':
  4215.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4216.     break;
  4217.    case '6':
  4218.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4219.     break;
  4220.    case '7':
  4221.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4222.     break;
  4223.    case '8':
  4224.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4225.     break;
  4226.    case '9':
  4227.     res = (TOKEN_blob=SCANNER_number_TOKEN(self)).val_16;
  4228.     break;
  4229.    case '@':
  4230.     if (self->pSather) {
  4231.      SCANNER_fetch(self);
  4232.      res = shared_SCANNER_a_1550;
  4233.     }
  4234.     else {
  4235.      local6 = STR_plus_CHAR_STR(((STR) &unknowncharacter), self->next_8);
  4236.      SCANNER_error_STR(self, STR_plus_CHAR_STR(local6, '\''));
  4237.      SCANNER_fetch(self);
  4238.     }
  4239.     break;
  4240.    default: ;
  4241.     local7 = STR_plus_CHAR_STR(((STR) &unknowncharacter_1551), self->next_8);
  4242.     SCANNER_error_STR(self, STR_plus_CHAR_STR(local7, '\''));
  4243.     SCANNER_fetch(self);
  4244.   }
  4245.   if ((res==shared_SCANNER_n_1506)) {
  4246.   }
  4247.   else {
  4248.    goto after_loop;
  4249.   }
  4250.  }
  4251.  after_loop: ;
  4252.  return TOKEN_create_INT(TOKEN_zero, res);
  4253. }
  4254.  
  4255.  
  4256. PARSER PARSER_create_PR(PARSER self, PROG p, STR file_1552, BOOL pSather_1553) {
  4257.  PARSER noname1554;
  4258.  PARSER res = ((PARSER) NULL);
  4259.  SCANNER s_1555;
  4260.  PARSER local0;
  4261.  s_1555 = SCANNER_create_P(((SCANNER) NULL), p, file_1552, pSather_1553);
  4262.  if ((!((s_1555==((SCANNER) NULL))))) {
  4263.   local0 = ((PARSER) sbi_alloc(sizeof(struct PARSER_struct), PARSER_tag));
  4264.   res = local0;
  4265.   res->prog = p;
  4266.   res->scanner = s_1555;
  4267.   res->next_8 = SCANNER_token_TOKEN(res->scanner);
  4268.   res->entered = FLISTSTR_create__1256(((FLISTSTR) NULL), 64);
  4269.  }
  4270.  else {
  4271.   res = ((PARSER) NULL);
  4272.  }
  4273.  return res;
  4274. }
  4275.  
  4276.  
  4277. void PARSER_enter_STR(PARSER self, STR s_1556) {
  4278.  self->entered = FLISTSTR_push_ST(self->entered, s_1556);
  4279. }
  4280.  
  4281.  
  4282. BOOL PARSER_is_type_o(PARSER self, TOKEN t_1557) {
  4283.  BOOL noname1558 = ((BOOL) 0);
  4284.  INT noname1559 = ((INT) 0);
  4285.  noname1559 = t_1557.val_16;
  4286.  switch (noname1559) {
  4287.   case 40:
  4288.   case 94:
  4289.   case 43:
  4290.   case 15:
  4291.   case 9:
  4292.    return TRUE;
  4293.    break;
  4294.   default: ;
  4295.  }
  4296.  return FALSE;
  4297. }
  4298.  
  4299.  
  4300. BOOL TOKEN_is_eq_INT_BOOL(TOKEN self, INT y) {
  4301.  BOOL noname1560 = ((BOOL) 0);
  4302.  return (self.val_16==y);
  4303. }
  4304.  
  4305.  
  4306. TR_CLASS_DEF TR_CLASS_DEF_cre(TR_CLASS_DEF self) {
  4307.  TR_CLASS_DEF noname1561;
  4308.  TR_CLASS_DEF local0;
  4309.  local0 = ((TR_CLASS_DEF) sbi_alloc(sizeof(struct TR_CLASS_DEF_struct), TR_CLASS_DEF_tag));
  4310.  return local0;
  4311. }
  4312.  
  4313.  
  4314. SFILE_ID PARSER_source_lo(PARSER self) {
  4315.  SFILE_ID noname1562 = SFILE_ID_zero;
  4316.  return SFILE_ID_source_(SFILE_ID_zero);
  4317. }
  4318.  
  4319.  
  4320. BOOL TOKEN_is_neq_INT(TOKEN self, INT y) {
  4321.  BOOL noname1563 = ((BOOL) 0);
  4322.  return (self.val_16!=y);
  4323. }
  4324.  
  4325.  
  4326. STR TOKEN_str_STR(TOKEN self) {
  4327.  STR noname1564;
  4328.  STR res = ((STR) NULL);
  4329.  INT noname1565 = ((INT) 0);
  4330.  noname1565 = self.val_16;
  4331.  switch (noname1565) {
  4332.   case 0:
  4333.    res = ((STR) &endoffile);
  4334.    break;
  4335.   case 1:
  4336.    res = ((STR) &nullcharacter);
  4337.    break;
  4338.   case 2:
  4339.    res = ((STR) &anidentifier);
  4340.    break;
  4341.   case 3:
  4342.    res = ((STR) &anabstracttypename);
  4343.    break;
  4344.   case 4:
  4345.    res = ((STR) &and_1566);
  4346.    break;
  4347.   case 5:
  4348.    res = ((STR) &assert_1567);
  4349.    break;
  4350.   case 6:
  4351.    res = ((STR) &attr_1568);
  4352.    break;
  4353.   case 7:
  4354.    res = ((STR) &break_1569);
  4355.    break;
  4356.   case 8:
  4357.    res = ((STR) &case_1570);
  4358.    break;
  4359.   case 9:
  4360.    res = ((STR) &class_1571);
  4361.    break;
  4362.   case 10:
  4363.    res = ((STR) &const_1572);
  4364.    break;
  4365.   case 11:
  4366.    res = ((STR) &else_1573);
  4367.    break;
  4368.   case 12:
  4369.    res = ((STR) &elsif_1574);
  4370.    break;
  4371.   case 13:
  4372.    res = ((STR) &end_1575);
  4373.    break;
  4374.   case 14:
  4375.    res = ((STR) &exception_1576);
  4376.    break;
  4377.   case 15:
  4378.    res = ((STR) &external_1577);
  4379.    break;
  4380.   case 16:
  4381.    res = ((STR) &false_1578);
  4382.    break;
  4383.   case 17:
  4384.    res = ((STR) &if_1579);
  4385.    break;
  4386.   case 18:
  4387.    res = ((STR) &include_1580);
  4388.    break;
  4389.   case 19:
  4390.    res = ((STR) &initial_1581);
  4391.    break;
  4392.   case 20:
  4393.    res = ((STR) &is_1582);
  4394.    break;
  4395.   case 21:
  4396.    res = ((STR) &ITER_1583);
  4397.    break;
  4398.   case 22:
  4399.    res = ((STR) &loop_1584);
  4400.    break;
  4401.   case 23:
  4402.    res = ((STR) &new_1585);
  4403.    break;
  4404.   case 24:
  4405.    res = ((STR) &or_1586);
  4406.    break;
  4407.   case 25:
  4408.    res = ((STR) &post_1587);
  4409.    break;
  4410.   case 26:
  4411.    res = ((STR) &pre_1588);
  4412.    break;
  4413.   case 27:
  4414.    res = ((STR) &private_1589);
  4415.    break;
  4416.   case 28:
  4417.    res = ((STR) &protect_1590);
  4418.    break;
  4419.   case 29:
  4420.    res = ((STR) &quit_1591);
  4421.    break;
  4422.   case 30:
  4423.    res = ((STR) &raise_1592);
  4424.    break;
  4425.   case 31:
  4426.    res = ((STR) &readonly_1593);
  4427.    break;
  4428.   case 33:
  4429.    res = ((STR) &return_1594);
  4430.    break;
  4431.   case 34:
  4432.    res = ((STR) &ROUT_1595);
  4433.    break;
  4434.   case 35:
  4435.    res = ((STR) &SAME_1596);
  4436.    break;
  4437.   case 36:
  4438.    res = ((STR) &self_1597);
  4439.    break;
  4440.   case 37:
  4441.    res = ((STR) &shared_1598);
  4442.    break;
  4443.   case 38:
  4444.    res = ((STR) &then_1599);
  4445.    break;
  4446.   case 39:
  4447.    res = ((STR) &true_1600);
  4448.    break;
  4449.   case 40:
  4450.    res = ((STR) &type_1601);
  4451.    break;
  4452.   case 41:
  4453.    res = ((STR) &typecase_1602);
  4454.    break;
  4455.   case 43:
  4456.    res = ((STR) &value_1603);
  4457.    break;
  4458.   case 44:
  4459.    res = ((STR) &void_1604);
  4460.    break;
  4461.   case 45:
  4462.    res = ((STR) &when_1605);
  4463.    break;
  4464.   case 46:
  4465.    res = ((STR) &while_1606);
  4466.    break;
  4467.   case 47:
  4468.    res = ((STR) &yield_1607);
  4469.    break;
  4470.   case 48:
  4471.    res = ((STR) &anintegerliteral);
  4472.    break;
  4473.   case 49:
  4474.    res = ((STR) &afloatingpointli);
  4475.    break;
  4476.   case 50:
  4477.    res = ((STR) &astringliteral);
  4478.    break;
  4479.   case 51:
  4480.    res = ((STR) &acharacterliteral);
  4481.    break;
  4482.   case 52:
  4483.    res = ((STR) &aleftparenthesis);
  4484.    break;
  4485.   case 53:
  4486.    res = ((STR) &arightparenthesis);
  4487.    break;
  4488.   case 54:
  4489.    res = ((STR) &aleftbracket);
  4490.    break;
  4491.   case 55:
  4492.    res = ((STR) &arightbracket);
  4493.    break;
  4494.   case 56:
  4495.    res = ((STR) &aleftbrace);
  4496.    break;
  4497.   case 57:
  4498.    res = ((STR) &arightbrace);
  4499.    break;
  4500.   case 58:
  4501.    res = ((STR) &acomma);
  4502.    break;
  4503.   case 59:
  4504.    res = ((STR) &adot);
  4505.    break;
  4506.   case 60:
  4507.    res = ((STR) &asemicolon);
  4508.    break;
  4509.   case 61:
  4510.    res = ((STR) &acolon);
  4511.    break;
  4512.   case 62:
  4513.    res = ((STR) &anunderscore_);
  4514.    break;
  4515.   case 63:
  4516.    res = ((STR) &aplus);
  4517.    break;
  4518.   case 64:
  4519.    res = ((STR) &aminus);
  4520.    break;
  4521.   case 65:
  4522.    res = ((STR) &anasterisk);
  4523.    break;
  4524.   case 66:
  4525.    res = ((STR) &aslash);
  4526.    break;
  4527.   case 67:
  4528.    res = ((STR) &alessthan);
  4529.    break;
  4530.   case 68:
  4531.    res = ((STR) &agreaterthan);
  4532.    break;
  4533.   case 69:
  4534.    res = ((STR) &asharp);
  4535.    break;
  4536.   case 70:
  4537.    res = ((STR) &anexclamationmark);
  4538.    break;
  4539.   case 71:
  4540.    res = ((STR) &anexclamationmar_1608);
  4541.    break;
  4542.   case 72:
  4543.    res = ((STR) &acarat);
  4544.    break;
  4545.   case 73:
  4546.    res = ((STR) &apercent);
  4547.    break;
  4548.   case 74:
  4549.    res = ((STR) &averticalbar);
  4550.    break;
  4551.   case 75:
  4552.    res = ((STR) &anotequals);
  4553.    break;
  4554.   case 76:
  4555.    res = ((STR) &alessthanorequals);
  4556.    break;
  4557.   case 77:
  4558.    res = ((STR) &agreaterthanorequals);
  4559.    break;
  4560.   case 78:
  4561.    res = ((STR) &anassignoperator);
  4562.    break;
  4563.   case 80:
  4564.    res = ((STR) &atransform);
  4565.    break;
  4566.   case 81:
  4567.    res = ((STR) &aequals);
  4568.    break;
  4569.   case 82:
  4570.    res = ((STR) &anot);
  4571.    break;
  4572.   case 83:
  4573.    res = ((STR) &afork);
  4574.    break;
  4575.   case 84:
  4576.    res = ((STR) &lock_1609);
  4577.    break;
  4578.   case 85:
  4579.    res = ((STR) &unlock_1610);
  4580.    break;
  4581.   case 86:
  4582.    res = ((STR) &try_1611);
  4583.    break;
  4584.   case 87:
  4585.    res = ((STR) &cobegin_1612);
  4586.    break;
  4587.   case 88:
  4588.    res = ((STR) &with_1613);
  4589.    break;
  4590.   case 89:
  4591.    res = ((STR) &aat);
  4592.    break;
  4593.   case 90:
  4594.    res = ((STR) &here_1614);
  4595.    break;
  4596.   case 91:
  4597.    res = ((STR) &where_1615);
  4598.    break;
  4599.   case 92:
  4600.    res = ((STR) &near_1616);
  4601.    break;
  4602.   case 93:
  4603.    res = ((STR) &far_1617);
  4604.    break;
  4605.   case 94:
  4606.    res = ((STR) &spread_1618);
  4607.    break;
  4608.   case 95:
  4609.    res = ((STR) &dist_1619);
  4610.    break;
  4611.   case 96:
  4612.    res = ((STR) &do_1620);
  4613.    break;
  4614.   case 97:
  4615.    res = ((STR) &as_1621);
  4616.    break;
  4617.   default: ;
  4618.    res = ((STR) &unknowntoken);
  4619.  }
  4620.  return res;
  4621. }
  4622.  
  4623.  
  4624. STR FLISTSTR_top_STR(FLISTSTR self) {
  4625.  STR noname1622;
  4626.  INT local0;
  4627.  local0 = FLISTSTR_size_INT(self);
  4628.  if ((local0==0)) {
  4629.   return ((STR) NULL);
  4630.  }
  4631.  return FLISTSTR_aget_IN(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4632.  if (!FLISTSTR_invaria(self)) {
  4633.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:96:6\n");
  4634.   exit(16);
  4635.  }
  4636. }
  4637.  
  4638.  
  4639. void PARSER_error_STR(PARSER self, STR msg_1623) {
  4640.  PROG local0;
  4641.  PROG local1;
  4642.  STR local2;
  4643.  STR local3;
  4644.  local0 = self->prog;
  4645.  PROG_set_eloc_SF(local0, PARSER_source_lo(self));
  4646.  local1 = self->prog;
  4647.  local2 = STR_plus_STR_STR(msg_1623, ((STR) &in_1624));
  4648.  local3 = STR_plus_STR_STR(local2, FLISTSTR_top_STR(self->entered));
  4649.  PROG_err_STR(local1, STR_plus_CHAR_STR(local3, ')'));
  4650. }
  4651.  
  4652.  
  4653. void PARSER_exp_error_STR(PARSER self, STR msg_1625) {
  4654.  STR local0;
  4655.  local0 = STR_plus_STR_STR(msg_1625, ((STR) &expectedbutfound));
  4656.  PARSER_error_STR(self, STR_plus_STR_STR(local0, TOKEN_str_STR(self->next_8)));
  4657. }
  4658.  
  4659.  
  4660. void PARSER_fetch(PARSER self) {
  4661.  self->next_8 = SCANNER_token_TOKEN(self->scanner);
  4662. }
  4663.  
  4664.  
  4665. void PARSER_match_INT(PARSER self, INT t_1626) {
  4666.  if (TOKEN_is_neq_INT(self->next_8, t_1626)) {
  4667.   PARSER_exp_error_STR(self, TOKEN_str_STR(TOKEN_create_INT(TOKEN_zero, t_1626)));
  4668.  }
  4669.  PARSER_fetch(self);
  4670. }
  4671.  
  4672.  
  4673. BOOL PARSER_check_INT(PARSER self, INT t_1627) {
  4674.  BOOL noname1628 = ((BOOL) 0);
  4675.  if (TOKEN_is_eq_INT_BOOL(self->next_8, t_1627)) {
  4676.   PARSER_fetch(self);
  4677.   return TRUE;
  4678.  }
  4679.  return FALSE;
  4680. }
  4681.  
  4682.  
  4683. IDENT PARSER_ident_IDENT(PARSER self) {
  4684.  IDENT noname1629 = IDENT_zero;
  4685.  return self->scanner->lex_value;
  4686. }
  4687.  
  4688.  
  4689. TR_PARAM_DEC TR_PARAM_DEC_cre(TR_PARAM_DEC self) {
  4690.  TR_PARAM_DEC noname1630;
  4691.  TR_PARAM_DEC local0;
  4692.  local0 = ((TR_PARAM_DEC) sbi_alloc(sizeof(struct TR_PARAM_DEC_struct), TR_PARAM_DEC_tag));
  4693.  return local0;
  4694. }
  4695.  
  4696.  
  4697. BOOL PARSER_is_class_(PARSER self, IDENT x) {
  4698.  BOOL noname1631 = ((BOOL) 0);
  4699.  return SCANNER_is_class(((SCANNER) NULL), x.str_4);
  4700. }
  4701.  
  4702.  
  4703. TR_TYPE_SPEC TR_TYPE_SPEC_cre(TR_TYPE_SPEC self) {
  4704.  TR_TYPE_SPEC noname1632;
  4705.  TR_TYPE_SPEC local0;
  4706.  local0 = ((TR_TYPE_SPEC) sbi_alloc(sizeof(struct TR_TYPE_SPEC_struct), TR_TYPE_SPEC_tag));
  4707.  return local0;
  4708. }
  4709.  
  4710.  
  4711. void TR_TYPE_SPEC_app(TR_TYPE_SPEC self, TR_TYPE_SPEC l) {
  4712.  TR_TYPE_SPEC last_1633;
  4713.  if (!((!((self==((TR_TYPE_SPEC) NULL)))))) {
  4714.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  4715.   exit(16);
  4716.  }
  4717.  if ((self->next_8==((TR_TYPE_SPEC) NULL))) {
  4718.   self->next_8 = l;
  4719.   return;
  4720.  }
  4721.  last_1633 = self->next_8;
  4722.  while (1) {
  4723.   if ((last_1633->next_8==((TR_TYPE_SPEC) NULL))) {
  4724.    goto after_loop;
  4725.   }
  4726.   last_1633 = last_1633->next_8;
  4727.  }
  4728.  after_loop: ;
  4729.  last_1633->next_8 = l;
  4730. }
  4731.  
  4732.  
  4733. STR FLISTSTR_pop_STR(FLISTSTR self) {
  4734.  STR noname1635;
  4735.  STR r_1636;
  4736.  INT local0;
  4737.  INT local1;
  4738.  local0 = FLISTSTR_size_INT(self);
  4739.  if ((local0==0)) {
  4740.   return ((STR) NULL);
  4741.  }
  4742.  r_1636 = FLISTSTR_aget_IN(self, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  4743.  local1 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  4744.  FLISTSTR_aset_IN(self, local1, ((STR) NULL));
  4745.  self->loc_17 = (c_INT_minus_INT_INT_chk(self->loc_17,1));
  4746.  return r_1636;
  4747.  if (!FLISTSTR_invaria(self)) {
  4748.   fprintf(stderr,"Failed invariant FLIST{STR}::invariant:BOOL ../Library/flist.sa:90:6\n");
  4749.   exit(16);
  4750.  }
  4751. }
  4752.  
  4753.  
  4754. void PARSER_exit(PARSER self) {
  4755.  STR s_1637;
  4756.  s_1637 = FLISTSTR_pop_STR(self->entered);
  4757. }
  4758.  
  4759.  
  4760. TR_TYPE_SPEC PARSER_type_spec(PARSER self) {
  4761.  TR_TYPE_SPEC noname1638;
  4762.  TR_TYPE_SPEC res;
  4763.  PARSER_enter_STR(self, ((STR) &listoftypespecif));
  4764.  res = PARSER_type_spec_1639(self);
  4765.  while (1) {
  4766.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_co)) {
  4767.   }
  4768.   else {
  4769.    goto after_loop;
  4770.   }
  4771.   PARSER_fetch(self);
  4772.   TR_TYPE_SPEC_app(res, PARSER_type_spec_1639(self));
  4773.  }
  4774.  after_loop: ;
  4775.  PARSER_exit(self);
  4776.  return res;
  4777. }
  4778.  
  4779.  
  4780. TR_TYPE_SPEC PARSER_type_spec_1639(PARSER self) {
  4781.  TR_TYPE_SPEC noname1641;
  4782.  TR_TYPE_SPEC res;
  4783.  TR_TYPE_SPEC tp_1642;
  4784.  BOOL local0;
  4785.  BOOL local1;
  4786.  BOOL local2;
  4787.  PARSER_enter_STR(self, ((STR) &typespecification));
  4788.  res = TR_TYPE_SPEC_cre(((TR_TYPE_SPEC) NULL));
  4789.  res->source_38 = PARSER_source_lo(self);
  4790.  if (PARSER_check_INT(self, shared_PARSER_SA)) {
  4791.   res->kind = shared_TR_TYPE_S;
  4792.  }
  4793.  else {
  4794.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ty)) {
  4795.    local0 = TRUE;
  4796.   } else {
  4797.    local0 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id);
  4798.   }
  4799.   if (local0) {
  4800.    if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  4801.     local1 = (!(PARSER_is_class_(self, PARSER_ident_IDENT(self))));
  4802.    } else {
  4803.     local1 = FALSE;
  4804.    }
  4805.    if (local1) {
  4806.     PARSER_error_STR(self, ((STR) &classnamemustbea));
  4807.    }
  4808.    res->kind = shared_TR_TYPE_S_1643;
  4809.    res->name_19 = PARSER_ident_IDENT(self);
  4810.    PARSER_fetch(self);
  4811.    if (PARSER_check_INT(self, shared_PARSER_lb)) {
  4812.     res->params = PARSER_type_spec(self);
  4813.     PARSER_match_INT(self, shared_PARSER_rb);
  4814.    }
  4815.   }
  4816.   else {
  4817.    if (PARSER_check_INT(self, shared_PARSER_RO)) {
  4818.     res->kind = shared_TR_TYPE_S_1644;
  4819.    }
  4820.    else {
  4821.     if (PARSER_check_INT(self, shared_PARSER_IT)) {
  4822.      res->kind = shared_TR_TYPE_S_1645;
  4823.     }
  4824.     else {
  4825.      PARSER_exp_error_STR(self, ((STR) &typespecifier));
  4826.     }
  4827.    }
  4828.    if (PARSER_check_INT(self, shared_PARSER_lb)) {
  4829.     while (1) {
  4830.      tp_1642 = PARSER_type_spec_1639(self);
  4831.      if (PARSER_check_INT(self, shared_PARSER_ba)) {
  4832.       local2 = TRUE;
  4833.      } else {
  4834.       local2 = PARSER_check_INT(self, shared_PARSER_it);
  4835.      }
  4836.      if (local2) {
  4837.       if ((res->kind==shared_TR_TYPE_S_1645)) {
  4838.        tp_1642->is_hot = TRUE;
  4839.       }
  4840.       else {
  4841.        PARSER_error_STR(self, ((STR) &nohotargumentsin));
  4842.       }
  4843.      }
  4844.      if ((res->params==((TR_TYPE_SPEC) NULL))) {
  4845.       res->params = tp_1642;
  4846.      }
  4847.      else {
  4848.       TR_TYPE_SPEC_app(res->params, tp_1642);
  4849.      }
  4850.      if (PARSER_check_INT(self, shared_PARSER_co)) {
  4851.      }
  4852.      else {
  4853.       goto after_loop;
  4854.      }
  4855.     }
  4856.     after_loop: ;
  4857.     PARSER_match_INT(self, shared_PARSER_rb);
  4858.    }
  4859.    if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  4860.     res->ret = PARSER_type_spec_1639(self);
  4861.    }
  4862.   }
  4863.  }
  4864.  PARSER_exit(self);
  4865.  return res;
  4866. }
  4867.  
  4868.  
  4869. TR_PARAM_DEC PARSER_param_dec(PARSER self) {
  4870.  TR_PARAM_DEC noname1648;
  4871.  TR_PARAM_DEC res;
  4872.  PARSER_enter_STR(self, ((STR) ¶meterdeclaration));
  4873.  res = TR_PARAM_DEC_cre(((TR_PARAM_DEC) NULL));
  4874.  res->source_38 = PARSER_source_lo(self);
  4875.  PARSER_match_INT(self, shared_PARSER_id);
  4876.  res->name_19 = PARSER_ident_IDENT(self);
  4877.  if ((!(PARSER_is_class_(self, res->name_19)))) {
  4878.   PARSER_exp_error_STR(self, ((STR) &classname));
  4879.  }
  4880.  if (PARSER_check_INT(self, shared_PARSER_is)) {
  4881.   res->type_constraint = PARSER_type_spec_1639(self);
  4882.  }
  4883.  PARSER_exit(self);
  4884.  return res;
  4885. }
  4886.  
  4887.  
  4888. void TR_PARAM_DEC_app(TR_PARAM_DEC self, TR_PARAM_DEC l) {
  4889.  TR_PARAM_DEC last_1649;
  4890.  if (!((!((self==((TR_PARAM_DEC) NULL)))))) {
  4891.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  4892.   exit(16);
  4893.  }
  4894.  if ((self->next_8==((TR_PARAM_DEC) NULL))) {
  4895.   self->next_8 = l;
  4896.   return;
  4897.  }
  4898.  last_1649 = self->next_8;
  4899.  while (1) {
  4900.   if ((last_1649->next_8==((TR_PARAM_DEC) NULL))) {
  4901.    goto after_loop;
  4902.   }
  4903.   last_1649 = last_1649->next_8;
  4904.  }
  4905.  after_loop: ;
  4906.  last_1649->next_8 = l;
  4907. }
  4908.  
  4909.  
  4910. TR_ROUT_DEF TR_ROUT_DEF_crea(TR_ROUT_DEF self) {
  4911.  TR_ROUT_DEF noname1651;
  4912.  TR_ROUT_DEF local0;
  4913.  local0 = ((TR_ROUT_DEF) sbi_alloc(sizeof(struct TR_ROUT_DEF_struct), TR_ROUT_DEF_tag));
  4914.  return local0;
  4915. }
  4916.  
  4917.  
  4918. IDENT PARSER_append_ba(PARSER self, IDENT arg_1652) {
  4919.  IDENT noname1653 = IDENT_zero;
  4920.  PROG local0;
  4921.  local0 = self->prog;
  4922.  return PROG_ident_for_S(local0, STR_plus_STR_STR(arg_1652.str_4, ((STR) &name_1654)));
  4923. }
  4924.  
  4925.  
  4926. IDENT PARSER_rout_or_i(PARSER self) {
  4927.  IDENT noname1655 = IDENT_zero;
  4928.  IDENT res = IDENT_zero;
  4929.  BOOL local0;
  4930.  if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  4931.   res = PARSER_ident_IDENT(self);
  4932.   PARSER_fetch(self);
  4933.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_it)) {
  4934.    PARSER_fetch(self);
  4935.    res = PARSER_append_ba(self, res);
  4936.   }
  4937.   else {
  4938.    if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ba)) {
  4939.     PARSER_fetch(self);
  4940.     res = PARSER_append_ba(self, res);
  4941.     PARSER_error_STR(self, ((STR) ¬acorrectiter_name));
  4942.    }
  4943.   }
  4944.  }
  4945.  else {
  4946.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ba)) {
  4947.    local0 = TRUE;
  4948.   } else {
  4949.    local0 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_it);
  4950.   }
  4951.   if (local0) {
  4952.    PARSER_fetch(self);
  4953.    res = PROG_ident_for_S(self->prog, ((STR) &name_1656));
  4954.   }
  4955.   else {
  4956.    PARSER_exp_error_STR(self, ((STR) &routineoritername));
  4957.    res = PROG_ident_for_S(self->prog, ((STR) &a_1657));
  4958.   }
  4959.  }
  4960.  return res;
  4961. }
  4962.  
  4963.  
  4964. BOOL IDENT_is_iter_BOOL(IDENT self) {
  4965.  BOOL noname1658 = ((BOOL) 0);
  4966.  BOOL local0;
  4967.  STR local1;
  4968.  INT local2;
  4969.  CHAR local3;
  4970.  if ((!((self.str_4==((STR) NULL))))) {
  4971.   local1 = self.str_4;
  4972.   local2 = STR_size_INT(self.str_4);
  4973.   local3 = STR_aget_INT_CHAR(local1, (c_INT_minus_INT_INT_chk(local2,1)));
  4974.   local0 = (local3=='!');
  4975.  } else {
  4976.   local0 = FALSE;
  4977.  }
  4978.  return local0;
  4979. }
  4980.  
  4981.  
  4982. TR_ARG_DEC TR_ARG_DEC_creat(TR_ARG_DEC self) {
  4983.  TR_ARG_DEC noname1659;
  4984.  TR_ARG_DEC local0;
  4985.  local0 = ((TR_ARG_DEC) sbi_alloc(sizeof(struct TR_ARG_DEC_struct), TR_ARG_DEC_tag));
  4986.  return local0;
  4987. }
  4988.  
  4989.  
  4990. void TR_ARG_DEC_appen(TR_ARG_DEC self, TR_ARG_DEC l) {
  4991.  TR_ARG_DEC last_1660;
  4992.  if (!((!((self==((TR_ARG_DEC) NULL)))))) {
  4993.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  4994.   exit(16);
  4995.  }
  4996.  if ((self->next_8==((TR_ARG_DEC) NULL))) {
  4997.   self->next_8 = l;
  4998.   return;
  4999.  }
  5000.  last_1660 = self->next_8;
  5001.  while (1) {
  5002.   if ((last_1660->next_8==((TR_ARG_DEC) NULL))) {
  5003.    goto after_loop;
  5004.   }
  5005.   last_1660 = last_1660->next_8;
  5006.  }
  5007.  after_loop: ;
  5008.  last_1660->next_8 = l;
  5009. }
  5010.  
  5011.  
  5012. TR_ARG_DEC PARSER_abstract_(PARSER self, BOOL is_iter_1662) {
  5013.  TR_ARG_DEC noname1663;
  5014.  TR_ARG_DEC res = ((TR_ARG_DEC) NULL);
  5015.  TR_ARG_DEC newa;
  5016.  TR_TYPE_SPEC tp_1664;
  5017.  BOOL hot_1665 = ((BOOL) 0);
  5018.  TR_ARG_DEC p;
  5019.  BOOL local0;
  5020.  BOOL local1;
  5021.  PARSER_enter_STR(self, ((STR) &abstractargument));
  5022.  while (1) {
  5023.   newa = TR_ARG_DEC_creat(((TR_ARG_DEC) NULL));
  5024.   newa->source_38 = PARSER_source_lo(self);
  5025.   PARSER_match_INT(self, shared_PARSER_id);
  5026.   newa->name_19 = PARSER_ident_IDENT(self);
  5027.   if ((res==((TR_ARG_DEC) NULL))) {
  5028.    res = newa;
  5029.   }
  5030.   else {
  5031.    TR_ARG_DEC_appen(res, newa);
  5032.   }
  5033.   if (PARSER_check_INT(self, shared_PARSER_co)) {
  5034.   }
  5035.   else {
  5036.    goto after_loop;
  5037.   }
  5038.  }
  5039.  after_loop: ;
  5040.  PARSER_match_INT(self, shared_PARSER_co_1647);
  5041.  tp_1664 = PARSER_type_spec_1639(self);
  5042.  if (PARSER_check_INT(self, shared_PARSER_ba)) {
  5043.   local0 = TRUE;
  5044.  } else {
  5045.   local0 = PARSER_check_INT(self, shared_PARSER_it);
  5046.  }
  5047.  hot_1665 = local0;
  5048.  if (hot_1665) {
  5049.   local1 = (!(is_iter_1662));
  5050.  } else {
  5051.   local1 = FALSE;
  5052.  }
  5053.  if (local1) {
  5054.   PARSER_error_STR(self, ((STR) &hotargumentsnota));
  5055.  }
  5056.  p = res;
  5057.  while (1) {
  5058.   if ((p==((TR_ARG_DEC) NULL))) {
  5059.    goto after_loop_1667;
  5060.   }
  5061.   p->tp = tp_1664;
  5062.   p->is_hot = hot_1665;
  5063.   p = p->next_8;
  5064.  }
  5065.  after_loop_1667: ;
  5066.  PARSER_exit(self);
  5067.  return res;
  5068. }
  5069.  
  5070.  
  5071. TR_ROUT_DEF PARSER_abstract__1669(PARSER self) {
  5072.  TR_ROUT_DEF noname1670;
  5073.  TR_ROUT_DEF res;
  5074.  TR_ARG_DEC local0;
  5075.  PARSER_enter_STR(self, ((STR) &abstractsignature));
  5076.  res = TR_ROUT_DEF_crea(((TR_ROUT_DEF) NULL));
  5077.  res->source_38 = PARSER_source_lo(self);
  5078.  res->is_abstract = TRUE;
  5079.  res->name_19 = PARSER_rout_or_i(self);
  5080.  if (PARSER_check_INT(self, shared_PARSER_lp)) {
  5081.   PARSER_enter_STR(self, ((STR) &abstractarguments));
  5082.   while (1) {
  5083.    if ((res->args_dec==((TR_ARG_DEC) NULL))) {
  5084.     res->args_dec = PARSER_abstract_(self, IDENT_is_iter_BOOL(res->name_19));
  5085.    }
  5086.    else {
  5087.     local0 = res->args_dec;
  5088.     TR_ARG_DEC_appen(local0, PARSER_abstract_(self, IDENT_is_iter_BOOL(res->name_19)));
  5089.    }
  5090.    if (PARSER_check_INT(self, shared_PARSER_co)) {
  5091.    }
  5092.    else {
  5093.     goto after_loop;
  5094.    }
  5095.   }
  5096.   after_loop: ;
  5097.   PARSER_match_INT(self, shared_PARSER_rp);
  5098.   PARSER_exit(self);
  5099.  }
  5100.  if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  5101.   PARSER_enter_STR(self, ((STR) &returntypespecif));
  5102.   res->ret_dec = PARSER_type_spec_1639(self);
  5103.   PARSER_exit(self);
  5104.  }
  5105.  PARSER_exit(self);
  5106.  return res;
  5107. }
  5108.  
  5109.  
  5110. TR_CLASS_ELT PARSER_abstract__1672(PARSER self) {
  5111.  TR_CLASS_ELT noname1673;
  5112.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  5113.  BOOL local0;
  5114.  BOOL local1;
  5115.  TR_CLASS_ELT local2;
  5116.  BOOL local3;
  5117.  PARSER_enter_STR(self, ((STR) &listofabstractsi));
  5118.  while (1) {
  5119.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  5120.    local1 = TRUE;
  5121.   } else {
  5122.    local1 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ba);
  5123.   }
  5124.   if (local1) {
  5125.    local0 = TRUE;
  5126.   } else {
  5127.    local0 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_it);
  5128.   }
  5129.   if (local0) {
  5130.    if ((res==((TR_CLASS_ELT) NULL))) {
  5131.     res = ((TR_CLASS_ELT) PARSER_abstract__1669(self));
  5132.    }
  5133.    else {
  5134.     local2 = res;
  5135.     (*TR_CLASS_ELT_app[local2->header.tag+TR_CLASS_ELT_app_offset])(local2, ((TR_CLASS_ELT) PARSER_abstract__1669(self)));
  5136.    }
  5137.   }
  5138.   if (PARSER_check_INT(self, shared_PARSER_se)) {
  5139.   }
  5140.   else {
  5141.    if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  5142.     PARSER_exp_error_STR(self, ((STR) &semicolon));
  5143.    }
  5144.    else {
  5145.     goto after_loop;
  5146.    }
  5147.   }
  5148.  }
  5149.  after_loop: ;
  5150.  if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_en)) {
  5151.   PARSER_exp_error_STR(self, ((STR) &semicolon_1675));
  5152.   while (1) {
  5153.    if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_en)) {
  5154.     local3 = TOKEN_is_neq_INT(self->next_8, shared_PARSER_eo);
  5155.    } else {
  5156.     local3 = FALSE;
  5157.    }
  5158.    if (local3) {
  5159.    }
  5160.    else {
  5161.     goto after_loop_1676;
  5162.    }
  5163.    PARSER_fetch(self);
  5164.   }
  5165.   after_loop_1676: ;
  5166.  }
  5167.  PARSER_exit(self);
  5168.  return res;
  5169. }
  5170.  
  5171.  
  5172. TR_CLASS_DEF PARSER_abstract__1678(PARSER self) {
  5173.  TR_CLASS_DEF noname1679;
  5174.  TR_CLASS_DEF res;
  5175.  TR_PARAM_DEC local0;
  5176.  PARSER_enter_STR(self, ((STR) &abstracttypedefi));
  5177.  res = TR_CLASS_DEF_cre(((TR_CLASS_DEF) NULL));
  5178.  res->source_38 = PARSER_source_lo(self);
  5179.  res->kind = shared_TR_CLASS_;
  5180.  PARSER_match_INT(self, shared_PARSER_ty_1680);
  5181.  if (PARSER_check_INT(self, shared_PARSER_ty)) {
  5182.  }
  5183.  else {
  5184.   PARSER_exp_error_STR(self, ((STR) &abstracttypename));
  5185.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  5186.    PARSER_fetch(self);
  5187.   }
  5188.  }
  5189.  res->name_19 = PARSER_ident_IDENT(self);
  5190.  if (PARSER_check_INT(self, shared_PARSER_lb)) {
  5191.   while (1) {
  5192.    if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_id)) {
  5193.     goto after_loop;
  5194.    }
  5195.    if ((res->params==((TR_PARAM_DEC) NULL))) {
  5196.     res->params = PARSER_param_dec(self);
  5197.    }
  5198.    else {
  5199.     local0 = res->params;
  5200.     TR_PARAM_DEC_app(local0, PARSER_param_dec(self));
  5201.    }
  5202.    if ((!(PARSER_check_INT(self, shared_PARSER_co)))) {
  5203.     goto after_loop;
  5204.    }
  5205.   }
  5206.   after_loop: ;
  5207.   PARSER_match_INT(self, shared_PARSER_rb);
  5208.  }
  5209.  if (PARSER_check_INT(self, shared_PARSER_is)) {
  5210.   res->under = PARSER_type_spec(self);
  5211.  }
  5212.  if (PARSER_check_INT(self, shared_PARSER_is_1682)) {
  5213.   res->over = PARSER_type_spec(self);
  5214.  }
  5215.  PARSER_match_INT(self, shared_PARSER_is_tok);
  5216.  res->body = PARSER_abstract__1672(self);
  5217.  PARSER_match_INT(self, shared_PARSER_en);
  5218.  PARSER_exit(self);
  5219.  return res;
  5220. }
  5221.  
  5222.  
  5223. void TR_CLASS_DEF_app(TR_CLASS_DEF self, TR_CLASS_DEF l) {
  5224.  TR_CLASS_DEF last_1683;
  5225.  if (!((!((self==((TR_CLASS_DEF) NULL)))))) {
  5226.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  5227.   exit(16);
  5228.  }
  5229.  if ((self->next_8==((TR_CLASS_DEF) NULL))) {
  5230.   self->next_8 = l;
  5231.   return;
  5232.  }
  5233.  last_1683 = self->next_8;
  5234.  while (1) {
  5235.   if ((last_1683->next_8==((TR_CLASS_DEF) NULL))) {
  5236.    goto after_loop;
  5237.   }
  5238.   last_1683 = last_1683->next_8;
  5239.  }
  5240.  after_loop: ;
  5241.  last_1683->next_8 = l;
  5242. }
  5243.  
  5244.  
  5245. BOOL PARSER_is_class__1685(PARSER self, TOKEN t_1686) {
  5246.  BOOL noname1687 = ((BOOL) 0);
  5247.  INT noname1688 = ((INT) 0);
  5248.  noname1688 = t_1686.val_16;
  5249.  switch (noname1688) {
  5250.   case 27:
  5251.   case 31:
  5252.   case 10:
  5253.   case 37:
  5254.   case 6:
  5255.   case 18:
  5256.   case 2:
  5257.   case 70:
  5258.   case 71:
  5259.    return TRUE;
  5260.    break;
  5261.   default: ;
  5262.  }
  5263.  return FALSE;
  5264. }
  5265.  
  5266.  
  5267. TR_INCLUDE_CLAUSE TR_INCLUDE_CLAUS(TR_INCLUDE_CLAUSE self) {
  5268.  TR_INCLUDE_CLAUSE noname1689;
  5269.  TR_INCLUDE_CLAUSE local0;
  5270.  local0 = ((TR_INCLUDE_CLAUSE) sbi_alloc(sizeof(struct TR_INCLUDE_CLAUSE_struct), TR_INCLUDE_CLAUSE_tag));
  5271.  return local0;
  5272. }
  5273.  
  5274.  
  5275. TR_FEAT_MOD TR_FEAT_MOD_crea(TR_FEAT_MOD self) {
  5276.  TR_FEAT_MOD noname1690;
  5277.  TR_FEAT_MOD local0;
  5278.  local0 = ((TR_FEAT_MOD) sbi_alloc(sizeof(struct TR_FEAT_MOD_struct), TR_FEAT_MOD_tag));
  5279.  return local0;
  5280. }
  5281.  
  5282.  
  5283. void TR_FEAT_MOD_appe(TR_FEAT_MOD self, TR_FEAT_MOD l) {
  5284.  TR_FEAT_MOD last_1691;
  5285.  if (!((!((self==((TR_FEAT_MOD) NULL)))))) {
  5286.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  5287.   exit(16);
  5288.  }
  5289.  if ((self->next_8==((TR_FEAT_MOD) NULL))) {
  5290.   self->next_8 = l;
  5291.   return;
  5292.  }
  5293.  last_1691 = self->next_8;
  5294.  while (1) {
  5295.   if ((last_1691->next_8==((TR_FEAT_MOD) NULL))) {
  5296.    goto after_loop;
  5297.   }
  5298.   last_1691 = last_1691->next_8;
  5299.  }
  5300.  after_loop: ;
  5301.  last_1691->next_8 = l;
  5302. }
  5303.  
  5304.  
  5305. TR_CLASS_ELT PARSER_include_c(PARSER self, TOKEN mode_1693) {
  5306.  TR_CLASS_ELT noname1694;
  5307.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  5308.  TR_INCLUDE_CLAUSE incl;
  5309.  TR_FEAT_MOD newm;
  5310.  INT noname1695 = ((INT) 0);
  5311.  BOOL local0;
  5312.  BOOL local1;
  5313.  BOOL local2;
  5314.  PARSER_enter_STR(self, ((STR) &includeclause));
  5315.  if (TOKEN_is_eq_INT_BOOL(mode_1693, shared_PARSER_re)) {
  5316.   PARSER_error_STR(self, ((STR) &readonlynotallow));
  5317.  }
  5318.  PARSER_match_INT(self, shared_PARSER_in);
  5319.  incl = TR_INCLUDE_CLAUS(((TR_INCLUDE_CLAUSE) NULL));
  5320.  incl->source_38 = PARSER_source_lo(self);
  5321.  incl->is_private = TOKEN_is_eq_INT_BOOL(mode_1693, shared_PARSER_pr);
  5322.  incl->tp = PARSER_type_spec_1639(self);
  5323.  res = ((TR_CLASS_ELT) incl);
  5324.  if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  5325.   local1 = TRUE;
  5326.  } else {
  5327.   local1 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ba);
  5328.  }
  5329.  if (local1) {
  5330.   local0 = TRUE;
  5331.  } else {
  5332.   local0 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_it);
  5333.  }
  5334.  if (local0) {
  5335.   while (1) {
  5336.    newm = TR_FEAT_MOD_crea(((TR_FEAT_MOD) NULL));
  5337.    newm->source_38 = PARSER_source_lo(self);
  5338.    newm->name_19 = PARSER_rout_or_i(self);
  5339.    PARSER_match_INT(self, shared_PARSER_tr);
  5340.    noname1695 = self->next_8.val_16;
  5341.    switch (noname1695) {
  5342.     case 27:
  5343.      PARSER_fetch(self);
  5344.      newm->is_private = TRUE;
  5345.      newm->new_name = PARSER_rout_or_i(self);
  5346.      break;
  5347.     case 31:
  5348.      PARSER_fetch(self);
  5349.      newm->is_readonly = TRUE;
  5350.      newm->new_name = PARSER_rout_or_i(self);
  5351.      break;
  5352.     case 2:
  5353.      newm->new_name = PARSER_rout_or_i(self);
  5354.      break;
  5355.     case 70:
  5356.      newm->new_name = PARSER_rout_or_i(self);
  5357.      break;
  5358.     case 71:
  5359.      newm->new_name = PARSER_rout_or_i(self);
  5360.      break;
  5361.     default: ;
  5362.    }
  5363.    if ((!((newm->new_name.str_4==(STR)0)))) {
  5364.     local2 = IDENT_is_iter_BOOL(newm->name_19);
  5365.     if (((local2)!=(IDENT_is_iter_BOOL(newm->new_name)))) {
  5366.      PARSER_error_STR(self, ((STR) &routinecantbecom));
  5367.     }
  5368.    }
  5369.    if ((incl->mods==((TR_FEAT_MOD) NULL))) {
  5370.     incl->mods = newm;
  5371.    }
  5372.    else {
  5373.     TR_FEAT_MOD_appe(incl->mods, newm);
  5374.    }
  5375.    if (PARSER_check_INT(self, shared_PARSER_co)) {
  5376.    }
  5377.    else {
  5378.     goto after_loop;
  5379.    }
  5380.   }
  5381.   after_loop: ;
  5382.  }
  5383.  PARSER_exit(self);
  5384.  return res;
  5385. }
  5386.  
  5387.  
  5388. TR_CONST_DEF TR_CONST_DEF_cre(TR_CONST_DEF self) {
  5389.  TR_CONST_DEF noname1697;
  5390.  TR_CONST_DEF local0;
  5391.  local0 = ((TR_CONST_DEF) sbi_alloc(sizeof(struct TR_CONST_DEF_struct), TR_CONST_DEF_tag));
  5392.  return local0;
  5393. }
  5394.  
  5395.  
  5396. TR_INT_LIT_EXPR TR_INT_LIT_EXPR_(TR_INT_LIT_EXPR self) {
  5397.  TR_INT_LIT_EXPR noname1698;
  5398.  TR_INT_LIT_EXPR local0;
  5399.  local0 = ((TR_INT_LIT_EXPR) sbi_alloc(sizeof(struct TR_INT_LIT_EXPR_struct), TR_INT_LIT_EXPR_tag));
  5400.  return local0;
  5401. }
  5402.  
  5403.  
  5404. TR_FLT_LIT_EXPR TR_FLT_LIT_EXPR_(TR_FLT_LIT_EXPR self) {
  5405.  TR_FLT_LIT_EXPR noname1699;
  5406.  TR_FLT_LIT_EXPR local0;
  5407.  local0 = ((TR_FLT_LIT_EXPR) sbi_alloc(sizeof(struct TR_FLT_LIT_EXPR_struct), TR_FLT_LIT_EXPR_tag));
  5408.  return local0;
  5409. }
  5410.  
  5411.  
  5412. RAT RAT_negate_RAT(RAT self) {
  5413.  RAT noname1700 = RAT_zero;
  5414.  RAT r_1701 = RAT_zero;
  5415.  RAT local0;
  5416.  local0 = RAT_u_INTI_RAT(r_1701, INTI_negate_INTI(self.u));
  5417.  return RAT_v_INTI_RAT(local0, self.v);
  5418. }
  5419.  
  5420.  
  5421. TR_CALL_EXPR TR_CALL_EXPR_cre(TR_CALL_EXPR self) {
  5422.  TR_CALL_EXPR noname1702;
  5423.  TR_CALL_EXPR local0;
  5424.  local0 = ((TR_CALL_EXPR) sbi_alloc(sizeof(struct TR_CALL_EXPR_struct), TR_CALL_EXPR_tag));
  5425.  return local0;
  5426. }
  5427.  
  5428.  
  5429. TR_SELF_EXPR TR_SELF_EXPR_cre(TR_SELF_EXPR self) {
  5430.  TR_SELF_EXPR noname1703;
  5431.  TR_SELF_EXPR local0;
  5432.  local0 = ((TR_SELF_EXPR) sbi_alloc(sizeof(struct TR_SELF_EXPR_struct), TR_SELF_EXPR_tag));
  5433.  return local0;
  5434. }
  5435.  
  5436.  
  5437. TR_IS_VOID_EXPR TR_IS_VOID_EXPR_(TR_IS_VOID_EXPR self) {
  5438.  TR_IS_VOID_EXPR noname1704;
  5439.  TR_IS_VOID_EXPR local0;
  5440.  local0 = ((TR_IS_VOID_EXPR) sbi_alloc(sizeof(struct TR_IS_VOID_EXPR_struct), TR_IS_VOID_EXPR_tag));
  5441.  return local0;
  5442. }
  5443.  
  5444.  
  5445. TR_VOID_EXPR TR_VOID_EXPR_cre(TR_VOID_EXPR self) {
  5446.  TR_VOID_EXPR noname1705;
  5447.  TR_VOID_EXPR local0;
  5448.  local0 = ((TR_VOID_EXPR) sbi_alloc(sizeof(struct TR_VOID_EXPR_struct), TR_VOID_EXPR_tag));
  5449.  return local0;
  5450. }
  5451.  
  5452.  
  5453. TR_NEW_EXPR TR_NEW_EXPR_crea(TR_NEW_EXPR self) {
  5454.  TR_NEW_EXPR noname1706;
  5455.  TR_NEW_EXPR local0;
  5456.  local0 = ((TR_NEW_EXPR) sbi_alloc(sizeof(struct TR_NEW_EXPR_struct), TR_NEW_EXPR_tag));
  5457.  return local0;
  5458. }
  5459.  
  5460.  
  5461. TR_BOUND_CREATE_EXPR TR_BOUND_CREATE_(TR_BOUND_CREATE_EXPR self) {
  5462.  TR_BOUND_CREATE_EXPR noname1707;
  5463.  TR_BOUND_CREATE_EXPR local0;
  5464.  local0 = ((TR_BOUND_CREATE_EXPR) sbi_alloc(sizeof(struct TR_BOUND_CREATE_EXPR_struct), TR_BOUND_CREATE_EXPR_tag));
  5465.  return local0;
  5466. }
  5467.  
  5468.  
  5469. TR_UNDERSCORE_ARG TR_UNDERSCORE_AR(TR_UNDERSCORE_ARG self) {
  5470.  TR_UNDERSCORE_ARG noname1708;
  5471.  TR_UNDERSCORE_ARG local0;
  5472.  local0 = ((TR_UNDERSCORE_ARG) sbi_alloc(sizeof(struct TR_UNDERSCORE_ARG_struct), TR_UNDERSCORE_ARG_tag));
  5473.  return local0;
  5474. }
  5475.  
  5476.  
  5477. TR_EXPR PARSER_expr_list(PARSER self, BOOL underscore_args) {
  5478.  TR_EXPR noname1709;
  5479.  TR_EXPR res = ((TR_EXPR) NULL);
  5480.  TR_EXPR x = ((TR_EXPR) NULL);
  5481.  TR_UNDERSCORE_ARG u_1710;
  5482.  TR_EXPR local0;
  5483.  if (underscore_args) {
  5484.   PARSER_enter_STR(self, ((STR) &listofboundarguments));
  5485.  }
  5486.  else {
  5487.   PARSER_enter_STR(self, ((STR) &listofexpressions));
  5488.  }
  5489.  while (1) {
  5490.   if (PARSER_check_INT(self, shared_PARSER_un)) {
  5491.    u_1710 = TR_UNDERSCORE_AR(((TR_UNDERSCORE_ARG) NULL));
  5492.    u_1710->source_38 = PARSER_source_lo(self);
  5493.    u_1710->source_38 = PARSER_source_lo(self);
  5494.    x = ((TR_EXPR) u_1710);
  5495.    if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  5496.     u_1710->tp = PARSER_type_spec_1639(self);
  5497.    }
  5498.    if ((!(underscore_args))) {
  5499.     PARSER_error_STR(self, ((STR) &nounderscoreargu));
  5500.    }
  5501.   }
  5502.   else {
  5503.    x = PARSER_expr_TR_EXPR(self);
  5504.   }
  5505.   if ((res==((TR_EXPR) NULL))) {
  5506.    res = x;
  5507.   }
  5508.   else {
  5509.    local0 = res;
  5510.    (*TR_EXPR_append_T[local0->header.tag+TR_EXPR_append_T_offset])(local0, x);
  5511.   }
  5512.   if (PARSER_check_INT(self, shared_PARSER_co)) {
  5513.   }
  5514.   else {
  5515.    goto after_loop;
  5516.   }
  5517.  }
  5518.  after_loop: ;
  5519.  PARSER_exit(self);
  5520.  return res;
  5521. }
  5522.  
  5523.  
  5524. TR_CALL_EXPR PARSER_call_expr(PARSER self, TR_EXPR ob_1712, TR_TYPE_SPEC tp_1713, BOOL underscore_args) {
  5525.  TR_CALL_EXPR noname1714;
  5526.  TR_CALL_EXPR res = ((TR_CALL_EXPR) NULL);
  5527.  PARSER_enter_STR(self, ((STR) &callexpressions));
  5528.  res = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  5529.  res->source_38 = PARSER_source_lo(self);
  5530.  res->ob = ob_1712;
  5531.  res->tp = tp_1713;
  5532.  res->name_19 = PARSER_rout_or_i(self);
  5533.  if (PARSER_check_INT(self, shared_PARSER_lp)) {
  5534.   res->args_7 = PARSER_expr_list(self, underscore_args);
  5535.   PARSER_match_INT(self, shared_PARSER_rp);
  5536.  }
  5537.  PARSER_exit(self);
  5538.  return res;
  5539. }
  5540.  
  5541.  
  5542. void PARSER_check_und(PARSER self, TR_CALL_EXPR call_1715, BOOL is_iter_1716) {
  5543.  TR_EXPR ob_1717;
  5544.  TR_EXPR this_1718;
  5545.  TR_EXPR arg_1719;
  5546.  BOOL local0;
  5547.  TR_EXPR local1;
  5548.  local0 = IDENT_is_iter_BOOL(call_1715->name_19);
  5549.  if (((local0)!=(is_iter_1716))) {
  5550.   if (is_iter_1716) {
  5551.    PARSER_error_STR(self, ((STR) &boundroutinemust));
  5552.   }
  5553.   else {
  5554.    PARSER_error_STR(self, ((STR) &boundroutinemust_1720));
  5555.   }
  5556.  }
  5557.  if (call_1715->is_array) {
  5558.   PARSER_error_STR(self, ((STR) &onlycallexpressi));
  5559.  }
  5560.  ob_1717 = call_1715->ob;
  5561.  while (1) {
  5562.   if ((ob_1717==((TR_EXPR) NULL))) {
  5563.    goto after_loop;
  5564.   }
  5565.   this_1718 = ob_1717;
  5566.   if (this_1718==NULL) {
  5567.    if (ob_1717==NULL) {
  5568.    } else
  5569.    switch (ob_1717->header.tag) {
  5570.     case TR_UNDERSCORE_ARG_tag:
  5571.      if ((!(c_SYS_ob_eq_OB_OB_BOOL(((OB) ob_1717),((OB) call_1715->ob))))) {
  5572.       PARSER_error_STR(self, ((STR) &illegalunderscor));
  5573.      } break;
  5574.     default: ;
  5575.    }
  5576.    return;
  5577.   } else
  5578.   switch (this_1718->header.tag) {
  5579.    case TR_CALL_EXPR_tag:
  5580.     ob_1717 = ((TR_CALL_EXPR) this_1718)->ob;
  5581.     arg_1719 = ((TR_CALL_EXPR) this_1718)->args_7;
  5582.     while (1) {
  5583.      if ((arg_1719==((TR_EXPR) NULL))) {
  5584.       goto after_loop_1722;
  5585.      }
  5586.      if (arg_1719==NULL) {
  5587.      } else
  5588.      switch (arg_1719->header.tag) {
  5589.       case TR_UNDERSCORE_ARG_tag:
  5590.        PARSER_error_STR(self, ((STR) &illegalunderscor_1724));
  5591.        return; break;
  5592.       default: ;
  5593.      }
  5594.      local1 = arg_1719;
  5595.      arg_1719 = (*TR_EXPR_next_TR_EXPR[local1->header.tag+TR_EXPR_next_TR_EXPR_offset])(local1);
  5596.     }
  5597.     after_loop_1722: ; break;
  5598.    default: ;
  5599.     if (ob_1717==NULL) {
  5600.     } else
  5601.     switch (ob_1717->header.tag) {
  5602.      case TR_UNDERSCORE_ARG_tag:
  5603.       if ((!(c_SYS_ob_eq_OB_OB_BOOL(((OB) ob_1717),((OB) call_1715->ob))))) {
  5604.        PARSER_error_STR(self, ((STR) &illegalunderscor_1725));
  5605.       } break;
  5606.      default: ;
  5607.     }
  5608.     return;
  5609.   }
  5610.  }
  5611.  after_loop: ;
  5612. }
  5613.  
  5614.  
  5615. TR_BOUND_CREATE_EXPR PARSER_bound_cre(PARSER self) {
  5616.  TR_BOUND_CREATE_EXPR noname1726;
  5617.  TR_BOUND_CREATE_EXPR res;
  5618.  TR_UNDERSCORE_ARG u_1727;
  5619.  TR_EXPR x;
  5620.  PARSER_enter_STR(self, ((STR) &boundcreateexpre));
  5621.  res = TR_BOUND_CREATE_(((TR_BOUND_CREATE_EXPR) NULL));
  5622.  res->source_38 = PARSER_source_lo(self);
  5623.  res->is_iter = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_IT);
  5624.  PARSER_fetch(self);
  5625.  PARSER_match_INT(self, shared_PARSER_lp);
  5626.  if (PARSER_check_INT(self, shared_PARSER_un)) {
  5627.   u_1727 = TR_UNDERSCORE_AR(((TR_UNDERSCORE_ARG) NULL));
  5628.   u_1727->source_38 = PARSER_source_lo(self);
  5629.   if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  5630.    u_1727->tp = PARSER_type_spec_1639(self);
  5631.   }
  5632.   PARSER_match_INT(self, shared_PARSER_do);
  5633.   res->call_43 = PARSER_call_expr(self, ((TR_EXPR) u_1727), ((TR_TYPE_SPEC) NULL), TRUE);
  5634.  }
  5635.  else {
  5636.   x = PARSER_expr1_BOO(self, TRUE);
  5637.   if (x==NULL) {
  5638.   } else
  5639.   switch (x->header.tag) {
  5640.    case TR_CALL_EXPR_tag:
  5641.     res->call_43 = ((TR_CALL_EXPR) x); break;
  5642.    default: ;
  5643.     fprintf(stderr,"No applicable type in typecase ./parse.sa:2292:17\n");
  5644.     exit(16);
  5645.   }
  5646.  }
  5647.  PARSER_check_und(self, res->call_43, res->is_iter);
  5648.  if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  5649.   res->ret = PARSER_type_spec_1639(self);
  5650.  }
  5651.  PARSER_match_INT(self, shared_PARSER_rp);
  5652.  PARSER_exit(self);
  5653.  return res;
  5654. }
  5655.  
  5656.  
  5657. TR_CREATE_EXPR TR_CREATE_EXPR_c(TR_CREATE_EXPR self) {
  5658.  TR_CREATE_EXPR noname1728;
  5659.  TR_CREATE_EXPR local0;
  5660.  local0 = ((TR_CREATE_EXPR) sbi_alloc(sizeof(struct TR_CREATE_EXPR_struct), TR_CREATE_EXPR_tag));
  5661.  return local0;
  5662. }
  5663.  
  5664.  
  5665. TR_CREATE_EXPR PARSER_create_ex(PARSER self) {
  5666.  TR_CREATE_EXPR noname1729;
  5667.  TR_CREATE_EXPR res;
  5668.  BOOL local0;
  5669.  PARSER_enter_STR(self, ((STR) &createexpression));
  5670.  res = TR_CREATE_EXPR_c(((TR_CREATE_EXPR) NULL));
  5671.  res->source_38 = PARSER_source_lo(self);
  5672.  if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  5673.   local0 = TRUE;
  5674.  } else {
  5675.   local0 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_SA);
  5676.  }
  5677.  if (local0) {
  5678.   res->tp = PARSER_type_spec_1639(self);
  5679.  }
  5680.  else {
  5681.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ty)) {
  5682.    res->tp = PARSER_type_spec_1639(self);
  5683.    PARSER_error_STR(self, ((STR) &noabstracttypesa));
  5684.   }
  5685.  }
  5686.  if (PARSER_check_INT(self, shared_PARSER_lp)) {
  5687.   res->elts = PARSER_expr_list(self, FALSE);
  5688.   PARSER_match_INT(self, shared_PARSER_rp);
  5689.  }
  5690.  PARSER_exit(self);
  5691.  return res;
  5692. }
  5693.  
  5694.  
  5695. TR_ARRAY_EXPR TR_ARRAY_EXPR_cr(TR_ARRAY_EXPR self) {
  5696.  TR_ARRAY_EXPR noname1730;
  5697.  TR_ARRAY_EXPR local0;
  5698.  local0 = ((TR_ARRAY_EXPR) sbi_alloc(sizeof(struct TR_ARRAY_EXPR_struct), TR_ARRAY_EXPR_tag));
  5699.  return local0;
  5700. }
  5701.  
  5702.  
  5703. TR_EXCEPT_EXPR TR_EXCEPT_EXPR_c(TR_EXCEPT_EXPR self) {
  5704.  TR_EXCEPT_EXPR noname1731;
  5705.  TR_EXCEPT_EXPR local0;
  5706.  local0 = ((TR_EXCEPT_EXPR) sbi_alloc(sizeof(struct TR_EXCEPT_EXPR_struct), TR_EXCEPT_EXPR_tag));
  5707.  return local0;
  5708. }
  5709.  
  5710.  
  5711. TR_INITIAL_EXPR TR_INITIAL_EXPR_(TR_INITIAL_EXPR self) {
  5712.  TR_INITIAL_EXPR noname1732;
  5713.  TR_INITIAL_EXPR local0;
  5714.  local0 = ((TR_INITIAL_EXPR) sbi_alloc(sizeof(struct TR_INITIAL_EXPR_struct), TR_INITIAL_EXPR_tag));
  5715.  return local0;
  5716. }
  5717.  
  5718.  
  5719. TR_RESULT_EXPR TR_RESULT_EXPR_c(TR_RESULT_EXPR self) {
  5720.  TR_RESULT_EXPR noname1733;
  5721.  TR_RESULT_EXPR local0;
  5722.  local0 = ((TR_RESULT_EXPR) sbi_alloc(sizeof(struct TR_RESULT_EXPR_struct), TR_RESULT_EXPR_tag));
  5723.  return local0;
  5724. }
  5725.  
  5726.  
  5727. TR_BOOL_LIT_EXPR TR_BOOL_LIT_EXPR_1734(TR_BOOL_LIT_EXPR self) {
  5728.  TR_BOOL_LIT_EXPR noname1735;
  5729.  TR_BOOL_LIT_EXPR local0;
  5730.  local0 = ((TR_BOOL_LIT_EXPR) sbi_alloc(sizeof(struct TR_BOOL_LIT_EXPR_struct), TR_BOOL_LIT_EXPR_tag));
  5731.  return local0;
  5732. }
  5733.  
  5734.  
  5735. TR_CHAR_LIT_EXPR TR_CHAR_LIT_EXPR_1736(TR_CHAR_LIT_EXPR self) {
  5736.  TR_CHAR_LIT_EXPR noname1737;
  5737.  TR_CHAR_LIT_EXPR local0;
  5738.  local0 = ((TR_CHAR_LIT_EXPR) sbi_alloc(sizeof(struct TR_CHAR_LIT_EXPR_struct), TR_CHAR_LIT_EXPR_tag));
  5739.  return local0;
  5740. }
  5741.  
  5742.  
  5743. TR_STR_LIT_EXPR TR_STR_LIT_EXPR_(TR_STR_LIT_EXPR self) {
  5744.  TR_STR_LIT_EXPR noname1738;
  5745.  TR_STR_LIT_EXPR local0;
  5746.  local0 = ((TR_STR_LIT_EXPR) sbi_alloc(sizeof(struct TR_STR_LIT_EXPR_struct), TR_STR_LIT_EXPR_tag));
  5747.  return local0;
  5748. }
  5749.  
  5750.  
  5751. INT INTI_cmp_INTI_INT(INTI self, INTI y) {
  5752.  INT noname1739 = ((INT) 0);
  5753.  BOOL local0;
  5754.  local0 = (self->len_37<0);
  5755.  if (((local0)!=((y->len_37<0)))) {
  5756.   return self->len_37;
  5757.  }
  5758.  else {
  5759.   if ((self->len_37<0)) {
  5760.    return INTI_u_cmp_INTI_(self, y, self);
  5761.   }
  5762.  }
  5763.  return INTI_u_cmp_INTI_(self, self, y);
  5764. }
  5765.  
  5766.  
  5767. BOOL INTI_is_eq_INTI_BOOL(INTI self, INTI y) {
  5768.  BOOL noname1740 = ((BOOL) 0);
  5769.  BOOL local0;
  5770.  INT local1;
  5771.  if (c_SYS_ob_eq_OB_OB_BOOL(((OB) self),((OB) y))) {
  5772.   local0 = TRUE;
  5773.  } else {
  5774.   local1 = INTI_cmp_INTI_INT(self, y);
  5775.   local0 = (local1==0);
  5776.  }
  5777.  return local0;
  5778. }
  5779.  
  5780.  
  5781. BOOL RAT_is_int_BOOL(RAT self) {
  5782.  BOOL noname1741 = ((BOOL) 0);
  5783.  INTI local0;
  5784.  local0 = self.v;
  5785.  return INTI_is_eq_INTI_BOOL(local0, INTI_create_INT_INTI(((INTI) NULL), 1));
  5786. }
  5787.  
  5788.  
  5789. INTI RAT_floor_INTI(RAT self) {
  5790.  INTI noname1742;
  5791.  return INTI_div_INTI_INTI(self.u, self.v);
  5792. }
  5793.  
  5794.  
  5795. TR_HERE_EXPR TR_HERE_EXPR_cre(TR_HERE_EXPR self) {
  5796.  TR_HERE_EXPR noname1743;
  5797.  TR_HERE_EXPR local0;
  5798.  local0 = ((TR_HERE_EXPR) sbi_alloc(sizeof(struct TR_HERE_EXPR_struct), TR_HERE_EXPR_tag));
  5799.  return local0;
  5800. }
  5801.  
  5802.  
  5803. TR_WHERE_EXPR TR_WHERE_EXPR_cr(TR_WHERE_EXPR self) {
  5804.  TR_WHERE_EXPR noname1744;
  5805.  TR_WHERE_EXPR local0;
  5806.  local0 = ((TR_WHERE_EXPR) sbi_alloc(sizeof(struct TR_WHERE_EXPR_struct), TR_WHERE_EXPR_tag));
  5807.  return local0;
  5808. }
  5809.  
  5810.  
  5811. TR_NEAR_EXPR TR_NEAR_EXPR_cre(TR_NEAR_EXPR self) {
  5812.  TR_NEAR_EXPR noname1745;
  5813.  TR_NEAR_EXPR local0;
  5814.  local0 = ((TR_NEAR_EXPR) sbi_alloc(sizeof(struct TR_NEAR_EXPR_struct), TR_NEAR_EXPR_tag));
  5815.  return local0;
  5816. }
  5817.  
  5818.  
  5819. TR_FAR_EXPR TR_FAR_EXPR_crea(TR_FAR_EXPR self) {
  5820.  TR_FAR_EXPR noname1746;
  5821.  TR_FAR_EXPR local0;
  5822.  local0 = ((TR_FAR_EXPR) sbi_alloc(sizeof(struct TR_FAR_EXPR_struct), TR_FAR_EXPR_tag));
  5823.  return local0;
  5824. }
  5825.  
  5826.  
  5827. TR_EXPR PARSER_expr0_TR_EXPR(PARSER self) {
  5828.  TR_EXPR noname1747;
  5829.  TR_EXPR res = ((TR_EXPR) NULL);
  5830.  INT noname1748 = ((INT) 0);
  5831.  TR_CALL_EXPR call_exp;
  5832.  TR_CALL_EXPR r_1749;
  5833.  TR_CALL_EXPR r_1750;
  5834.  TR_CALL_EXPR r_1751;
  5835.  TR_IS_VOID_EXPR vtest;
  5836.  TR_NEW_EXPR new_ex;
  5837.  TR_ARRAY_EXPR arr_ex;
  5838.  TR_INITIAL_EXPR init_ex;
  5839.  TR_BOOL_LIT_EXPR r_1752;
  5840.  TR_BOOL_LIT_EXPR r_1753;
  5841.  TR_CHAR_LIT_EXPR c_1754;
  5842.  TR_STR_LIT_EXPR s_1755;
  5843.  TR_INT_LIT_EXPR i;
  5844.  TR_FLT_LIT_EXPR f_1756;
  5845.  TR_CALL_EXPR a_1757;
  5846.  TR_WHERE_EXPR r_1758;
  5847.  TR_NEAR_EXPR r_1759;
  5848.  TR_FAR_EXPR r_1760;
  5849.  TR_EXPR local0;
  5850.  TR_EXPR local1;
  5851.  BOOL local2;
  5852.  TR_EXPR local3;
  5853.  TR_EXPR local4;
  5854.  TR_EXPR local5;
  5855.  TR_EXPR local6;
  5856.  TR_EXPR local7;
  5857.  PARSER_enter_STR(self, ((STR) &expressionprec0));
  5858.  noname1748 = self->next_8.val_16;
  5859.  switch (noname1748) {
  5860.   case 36:
  5861.    PARSER_fetch(self);
  5862.    res = ((TR_EXPR) TR_SELF_EXPR_cre(((TR_SELF_EXPR) NULL)));
  5863.    local0 = res;
  5864.    (*TR_EXPR_source_S[local0->header.tag+TR_EXPR_source_S_offset])(local0, PARSER_source_lo(self));
  5865.    break;
  5866.   case 2:
  5867.    call_exp = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  5868.    call_exp->source_38 = PARSER_source_lo(self);
  5869.    if (PARSER_is_class_(self, PARSER_ident_IDENT(self))) {
  5870.     call_exp->tp = PARSER_type_spec_1639(self);
  5871.     if ((call_exp->tp->kind==shared_TR_TYPE_S_1643)) {
  5872.      if ((call_exp->tp->params==((TR_TYPE_SPEC) NULL))) {
  5873.       call_exp->name_19 = call_exp->tp->name_19;
  5874.       call_exp->tp = ((TR_TYPE_SPEC) NULL);
  5875.      }
  5876.      else {
  5877.       if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_dc)) {
  5878.        PARSER_error_STR(self, ((STR) &Thistypespecneit));
  5879.       }
  5880.      }
  5881.     }
  5882.    }
  5883.    else {
  5884.     call_exp->name_19 = PARSER_ident_IDENT(self);
  5885.     PARSER_fetch(self);
  5886.    }
  5887.    res = ((TR_EXPR) call_exp);
  5888.    break;
  5889.   case 70:
  5890.    r_1749 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  5891.    r_1749->source_38 = PARSER_source_lo(self);
  5892.    r_1749->name_19 = PROG_ident_for_S(self->prog, ((STR) &name_1761));
  5893.    PARSER_fetch(self);
  5894.    res = ((TR_EXPR) r_1749);
  5895.    break;
  5896.   case 71:
  5897.    r_1750 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  5898.    r_1750->source_38 = PARSER_source_lo(self);
  5899.    r_1750->name_19 = PROG_ident_for_S(self->prog, ((STR) &name_1762));
  5900.    PARSER_fetch(self);
  5901.    res = ((TR_EXPR) r_1750);
  5902.    break;
  5903.   case 35:
  5904.    r_1751 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  5905.    r_1751->source_38 = PARSER_source_lo(self);
  5906.    r_1751->tp = PARSER_type_spec_1639(self);
  5907.    res = ((TR_EXPR) r_1751);
  5908.    break;
  5909.   case 44:
  5910.    PARSER_enter_STR(self, ((STR) &voidexpressions));
  5911.    PARSER_fetch(self);
  5912.    if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_lp)) {
  5913.     PARSER_fetch(self);
  5914.     vtest = TR_IS_VOID_EXPR_(((TR_IS_VOID_EXPR) NULL));
  5915.     vtest->source_38 = PARSER_source_lo(self);
  5916.     vtest->arg_51 = PARSER_expr_TR_EXPR(self);
  5917.     res = ((TR_EXPR) vtest);
  5918.     PARSER_match_INT(self, shared_PARSER_rp);
  5919.    }
  5920.    else {
  5921.     res = ((TR_EXPR) TR_VOID_EXPR_cre(((TR_VOID_EXPR) NULL)));
  5922.     local1 = res;
  5923.     (*TR_EXPR_source_S[local1->header.tag+TR_EXPR_source_S_offset])(local1, PARSER_source_lo(self));
  5924.    }
  5925.    PARSER_exit(self);
  5926.    break;
  5927.   case 23:
  5928.    PARSER_enter_STR(self, ((STR) &newexpression));
  5929.    PARSER_fetch(self);
  5930.    new_ex = TR_NEW_EXPR_crea(((TR_NEW_EXPR) NULL));
  5931.    new_ex->source_38 = PARSER_source_lo(self);
  5932.    res = ((TR_EXPR) new_ex);
  5933.    if (PARSER_check_INT(self, shared_PARSER_lp)) {
  5934.     new_ex->arg_51 = PARSER_expr_TR_EXPR(self);
  5935.     PARSER_match_INT(self, shared_PARSER_rp);
  5936.    }
  5937.    PARSER_exit(self);
  5938.    break;
  5939.   case 69:
  5940.    PARSER_fetch(self);
  5941.    if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_RO)) {
  5942.     local2 = TRUE;
  5943.    } else {
  5944.     local2 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_IT);
  5945.    }
  5946.    if (local2) {
  5947.     res = ((TR_EXPR) PARSER_bound_cre(self));
  5948.    }
  5949.    else {
  5950.     res = ((TR_EXPR) PARSER_create_ex(self));
  5951.    }
  5952.    break;
  5953.   case 74:
  5954.    PARSER_enter_STR(self, ((STR) &arrayexpression));
  5955.    PARSER_fetch(self);
  5956.    arr_ex = TR_ARRAY_EXPR_cr(((TR_ARRAY_EXPR) NULL));
  5957.    arr_ex->source_38 = PARSER_source_lo(self);
  5958.    res = ((TR_EXPR) arr_ex);
  5959.    arr_ex->elts = PARSER_expr_list(self, FALSE);
  5960.    PARSER_match_INT(self, shared_PARSER_vb);
  5961.    PARSER_exit(self);
  5962.    break;
  5963.   case 14:
  5964.    PARSER_fetch(self);
  5965.    res = ((TR_EXPR) TR_EXCEPT_EXPR_c(((TR_EXCEPT_EXPR) NULL)));
  5966.    local3 = res;
  5967.    (*TR_EXPR_source_S[local3->header.tag+TR_EXPR_source_S_offset])(local3, PARSER_source_lo(self));
  5968.    break;
  5969.   case 19:
  5970.    PARSER_enter_STR(self, ((STR) &initialexpression));
  5971.    PARSER_fetch(self);
  5972.    PARSER_match_INT(self, shared_PARSER_lp);
  5973.    init_ex = TR_INITIAL_EXPR_(((TR_INITIAL_EXPR) NULL));
  5974.    init_ex->source_38 = PARSER_source_lo(self);
  5975.    res = ((TR_EXPR) init_ex);
  5976.    init_ex->e = PARSER_expr_TR_EXPR(self);
  5977.    PARSER_match_INT(self, shared_PARSER_rp);
  5978.    PARSER_exit(self);
  5979.    break;
  5980.   case 32:
  5981.    PARSER_fetch(self);
  5982.    res = ((TR_EXPR) TR_RESULT_EXPR_c(((TR_RESULT_EXPR) NULL)));
  5983.    local4 = res;
  5984.    (*TR_EXPR_source_S[local4->header.tag+TR_EXPR_source_S_offset])(local4, PARSER_source_lo(self));
  5985.    break;
  5986.   case 46:
  5987.    PARSER_enter_STR(self, ((STR) &whileexpression));
  5988.    PARSER_fetch(self);
  5989.    PARSER_match_INT(self, shared_PARSER_lp);
  5990.    res = PARSER_expr_TR_EXPR(self);
  5991.    PARSER_match_INT(self, shared_PARSER_rp);
  5992.    PARSER_error_STR(self, ((STR) &whileexpressionm));
  5993.    PARSER_exit(self);
  5994.    break;
  5995.   case 42:
  5996.    PARSER_enter_STR(self, ((STR) &untilexpression));
  5997.    PARSER_fetch(self);
  5998.    PARSER_match_INT(self, shared_PARSER_lp);
  5999.    res = PARSER_expr_TR_EXPR(self);
  6000.    PARSER_match_INT(self, shared_PARSER_rp);
  6001.    PARSER_error_STR(self, ((STR) &untilexpressionm));
  6002.    PARSER_exit(self);
  6003.    break;
  6004.   case 7:
  6005.    PARSER_fetch(self);
  6006.    res = ((TR_EXPR) TR_BOOL_LIT_EXPR_1734(((TR_BOOL_LIT_EXPR) NULL)));
  6007.    local5 = res;
  6008.    (*TR_EXPR_source_S[local5->header.tag+TR_EXPR_source_S_offset])(local5, PARSER_source_lo(self));
  6009.    PARSER_error_STR(self, ((STR) &breakexpressionm));
  6010.    break;
  6011.   case 39:
  6012.    r_1752 = TR_BOOL_LIT_EXPR_1734(((TR_BOOL_LIT_EXPR) NULL));
  6013.    r_1752->source_38 = PARSER_source_lo(self);
  6014.    r_1752->val_16 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_tr_1763);
  6015.    res = ((TR_EXPR) r_1752);
  6016.    PARSER_fetch(self);
  6017.    break;
  6018.   case 16:
  6019.    r_1753 = TR_BOOL_LIT_EXPR_1734(((TR_BOOL_LIT_EXPR) NULL));
  6020.    r_1753->source_38 = PARSER_source_lo(self);
  6021.    r_1753->val_16 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_tr_1763);
  6022.    res = ((TR_EXPR) r_1753);
  6023.    PARSER_fetch(self);
  6024.    break;
  6025.   case 51:
  6026.    c_1754 = TR_CHAR_LIT_EXPR_1736(((TR_CHAR_LIT_EXPR) NULL));
  6027.    c_1754->source_38 = PARSER_source_lo(self);
  6028.    c_1754->val_16 = ((INT)self->scanner->char_value);
  6029.    res = ((TR_EXPR) c_1754);
  6030.    PARSER_fetch(self);
  6031.    break;
  6032.   case 50:
  6033.    s_1755 = TR_STR_LIT_EXPR_(((TR_STR_LIT_EXPR) NULL));
  6034.    s_1755->source_38 = PARSER_source_lo(self);
  6035.    s_1755->s = (IDENT_blob=PARSER_ident_IDENT(self)).str_4;
  6036.    res = ((TR_EXPR) s_1755);
  6037.    PARSER_fetch(self);
  6038.    break;
  6039.   case 48:
  6040.    if (!(RAT_is_int_BOOL(self->scanner->num_value))) {
  6041.     fprintf(stderr,"Violation of assertion ./parse.sa:2203:15\n");
  6042.     exit(16);
  6043.    }
  6044.    i = TR_INT_LIT_EXPR_(((TR_INT_LIT_EXPR) NULL));
  6045.    i->source_38 = PARSER_source_lo(self);
  6046.    i->val_16 = RAT_floor_INTI(self->scanner->num_value);
  6047.    i->is_inti = (self->scanner->value_type==shared_TR_FLT_LI_1500);
  6048.    res = ((TR_EXPR) i);
  6049.    PARSER_fetch(self);
  6050.    break;
  6051.   case 49:
  6052.    f_1756 = TR_FLT_LIT_EXPR_(((TR_FLT_LIT_EXPR) NULL));
  6053.    f_1756->source_38 = PARSER_source_lo(self);
  6054.    f_1756->val_16 = self->scanner->num_value;
  6055.    f_1756->tp = self->scanner->value_type;
  6056.    res = ((TR_EXPR) f_1756);
  6057.    PARSER_fetch(self);
  6058.    break;
  6059.   case 52:
  6060.    PARSER_fetch(self);
  6061.    res = PARSER_expr_TR_EXPR(self);
  6062.    PARSER_match_INT(self, shared_PARSER_rp);
  6063.    break;
  6064.   case 54:
  6065.    PARSER_fetch(self);
  6066.    a_1757 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6067.    a_1757->source_38 = PARSER_source_lo(self);
  6068.    a_1757->args_7 = PARSER_expr_list(self, FALSE);
  6069.    a_1757->is_array = TRUE;
  6070.    res = ((TR_EXPR) a_1757);
  6071.    PARSER_match_INT(self, shared_PARSER_rb_1764);
  6072.    break;
  6073.   case 90:
  6074.    PARSER_fetch(self);
  6075.    res = ((TR_EXPR) TR_HERE_EXPR_cre(((TR_HERE_EXPR) NULL)));
  6076.    local6 = res;
  6077.    (*TR_EXPR_source_S[local6->header.tag+TR_EXPR_source_S_offset])(local6, PARSER_source_lo(self));
  6078.    break;
  6079.   case 91:
  6080.    PARSER_enter_STR(self, ((STR) &whereexpression));
  6081.    r_1758 = TR_WHERE_EXPR_cr(((TR_WHERE_EXPR) NULL));
  6082.    r_1758->source_38 = PARSER_source_lo(self);
  6083.    res = ((TR_EXPR) r_1758);
  6084.    PARSER_fetch(self);
  6085.    PARSER_match_INT(self, shared_PARSER_lp);
  6086.    r_1758->e = PARSER_expr_TR_EXPR(self);
  6087.    PARSER_match_INT(self, shared_PARSER_rp);
  6088.    PARSER_exit(self);
  6089.    break;
  6090.   case 92:
  6091.    PARSER_enter_STR(self, ((STR) &nearexpression));
  6092.    r_1759 = TR_NEAR_EXPR_cre(((TR_NEAR_EXPR) NULL));
  6093.    r_1759->source_38 = PARSER_source_lo(self);
  6094.    res = ((TR_EXPR) r_1759);
  6095.    PARSER_fetch(self);
  6096.    PARSER_match_INT(self, shared_PARSER_lp);
  6097.    r_1759->e = PARSER_expr_TR_EXPR(self);
  6098.    PARSER_match_INT(self, shared_PARSER_rp);
  6099.    PARSER_exit(self);
  6100.    break;
  6101.   case 93:
  6102.    PARSER_enter_STR(self, ((STR) &farexpression));
  6103.    r_1760 = TR_FAR_EXPR_crea(((TR_FAR_EXPR) NULL));
  6104.    r_1760->source_38 = PARSER_source_lo(self);
  6105.    res = ((TR_EXPR) r_1760);
  6106.    PARSER_fetch(self);
  6107.    PARSER_match_INT(self, shared_PARSER_lp);
  6108.    r_1760->e = PARSER_expr_TR_EXPR(self);
  6109.    PARSER_match_INT(self, shared_PARSER_rp);
  6110.    PARSER_exit(self);
  6111.    break;
  6112.   default: ;
  6113.    PARSER_exp_error_STR(self, ((STR) &expression));
  6114.    res = ((TR_EXPR) TR_VOID_EXPR_cre(((TR_VOID_EXPR) NULL)));
  6115.    local7 = res;
  6116.    (*TR_EXPR_source_S[local7->header.tag+TR_EXPR_source_S_offset])(local7, PARSER_source_lo(self));
  6117.  }
  6118.  PARSER_exit(self);
  6119.  return res;
  6120. }
  6121.  
  6122.  
  6123. TR_TYPE_SPEC PARSER_type_of_T(PARSER self, TR_EXPR x) {
  6124.  TR_TYPE_SPEC noname1765;
  6125.  TR_TYPE_SPEC tp_1766;
  6126.  if (x==NULL) {
  6127.  } else
  6128.  switch (x->header.tag) {
  6129.   case TR_CALL_EXPR_tag:
  6130.    if ((((TR_CALL_EXPR) x)->ob==((TR_EXPR) NULL))) {
  6131.     if ((((TR_CALL_EXPR) x)->tp==((TR_TYPE_SPEC) NULL))) {
  6132.      if (PARSER_is_class_(self, ((TR_CALL_EXPR) x)->name_19)) {
  6133.       tp_1766 = TR_TYPE_SPEC_cre(((TR_TYPE_SPEC) NULL));
  6134.       tp_1766->source_38 = ((TR_CALL_EXPR) x)->source_38;
  6135.       tp_1766->kind = shared_TR_TYPE_S_1643;
  6136.       tp_1766->is_hot = FALSE;
  6137.       tp_1766->name_19 = ((TR_CALL_EXPR) x)->name_19;
  6138.       tp_1766->params = ((TR_TYPE_SPEC) NULL);
  6139.       tp_1766->ret = ((TR_TYPE_SPEC) NULL);
  6140.       return tp_1766;
  6141.      }
  6142.     }
  6143.     else {
  6144.      return ((TR_CALL_EXPR) x)->tp;
  6145.     }
  6146.    } break;
  6147.   default: ;
  6148.  }
  6149.  PARSER_error_STR(self, ((STR) &typespecifierexp));
  6150.  return ((TR_TYPE_SPEC) NULL);
  6151. }
  6152.  
  6153.  
  6154. IDENT PARSER_ident_of_(PARSER self, TR_EXPR x) {
  6155.  IDENT noname1767 = IDENT_zero;
  6156.  BOOL local0;
  6157.  BOOL local1;
  6158.  if (x==NULL) {
  6159.  } else
  6160.  switch (x->header.tag) {
  6161.   case TR_CALL_EXPR_tag:
  6162.    if ((((TR_CALL_EXPR) x)->ob==((TR_EXPR) NULL))) {
  6163.     local1 = (!((((TR_CALL_EXPR) x)->name_19.str_4==(STR)0)));
  6164.    } else {
  6165.     local1 = FALSE;
  6166.    }
  6167.    if (local1) {
  6168.     local0 = (((TR_CALL_EXPR) x)->args_7==((TR_EXPR) NULL));
  6169.    } else {
  6170.     local0 = FALSE;
  6171.    }
  6172.    if (local0) {
  6173.     return ((TR_CALL_EXPR) x)->name_19;
  6174.    } break;
  6175.   default: ;
  6176.  }
  6177.  PARSER_error_STR(self, ((STR) &identifieronlyex));
  6178.  return IDENT_zero;
  6179. }
  6180.  
  6181.  
  6182. TR_EXPR PARSER_expr1_BOO(PARSER self, BOOL underscore_args) {
  6183.  TR_EXPR noname1768;
  6184.  TR_EXPR res;
  6185.  TR_CALL_EXPR c_1769 = ((TR_CALL_EXPR) NULL);
  6186.  TR_EXPR local0;
  6187.  TR_TYPE_SPEC local1;
  6188.  PARSER_enter_STR(self, ((STR) &expressionprec1));
  6189.  res = PARSER_expr0_TR_EXPR(self);
  6190.  if (PARSER_check_INT(self, shared_PARSER_do)) {
  6191.   res = ((TR_EXPR) PARSER_call_expr(self, res, ((TR_TYPE_SPEC) NULL), underscore_args));
  6192.  }
  6193.  else {
  6194.   if (PARSER_check_INT(self, shared_PARSER_dc)) {
  6195.    local0 = ((TR_EXPR) NULL);
  6196.    local1 = PARSER_type_of_T(self, res);
  6197.    res = ((TR_EXPR) PARSER_call_expr(self, local0, local1, underscore_args));
  6198.   }
  6199.   else {
  6200.    if (PARSER_check_INT(self, shared_PARSER_it)) {
  6201.     c_1769 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6202.     c_1769->source_38 = PARSER_source_lo(self);
  6203.     c_1769->name_19 = PARSER_append_ba(self, PARSER_ident_of_(self, res));
  6204.     if (PARSER_check_INT(self, shared_PARSER_lp)) {
  6205.      c_1769->args_7 = PARSER_expr_list(self, underscore_args);
  6206.      PARSER_match_INT(self, shared_PARSER_rp);
  6207.     }
  6208.     res = ((TR_EXPR) c_1769);
  6209.    }
  6210.    else {
  6211.     if (PARSER_check_INT(self, shared_PARSER_lp)) {
  6212.      c_1769 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6213.      c_1769->source_38 = PARSER_source_lo(self);
  6214.      c_1769->name_19 = PARSER_ident_of_(self, res);
  6215.      c_1769->args_7 = PARSER_expr_list(self, underscore_args);
  6216.      PARSER_match_INT(self, shared_PARSER_rp);
  6217.      res = ((TR_EXPR) c_1769);
  6218.     }
  6219.     else {
  6220.      if (PARSER_check_INT(self, shared_PARSER_lb_1770)) {
  6221.       c_1769 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6222.       c_1769->source_38 = PARSER_source_lo(self);
  6223.       c_1769->ob = res;
  6224.       c_1769->args_7 = PARSER_expr_list(self, FALSE);
  6225.       c_1769->is_array = TRUE;
  6226.       PARSER_match_INT(self, shared_PARSER_rb_1764);
  6227.       res = ((TR_EXPR) c_1769);
  6228.      }
  6229.     }
  6230.    }
  6231.   }
  6232.  }
  6233.  while (1) {
  6234.   if (PARSER_check_INT(self, shared_PARSER_do)) {
  6235.    res = ((TR_EXPR) PARSER_call_expr(self, res, ((TR_TYPE_SPEC) NULL), underscore_args));
  6236.   }
  6237.   else {
  6238.    if (PARSER_check_INT(self, shared_PARSER_lb_1770)) {
  6239.     c_1769 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6240.     c_1769->source_38 = PARSER_source_lo(self);
  6241.     c_1769->ob = res;
  6242.     c_1769->args_7 = PARSER_expr_list(self, FALSE);
  6243.     c_1769->is_array = TRUE;
  6244.     PARSER_match_INT(self, shared_PARSER_rb_1764);
  6245.     res = ((TR_EXPR) c_1769);
  6246.    }
  6247.    else {
  6248.     goto after_loop;
  6249.    }
  6250.   }
  6251.  }
  6252.  after_loop: ;
  6253.  PARSER_exit(self);
  6254.  return res;
  6255. }
  6256.  
  6257.  
  6258. TR_EXPR PARSER_expr2_TR_EXPR(PARSER self) {
  6259.  TR_EXPR noname1772;
  6260.  TR_EXPR res;
  6261.  TR_CALL_EXPR c_1773;
  6262.  PARSER_enter_STR(self, ((STR) &expressionprec2));
  6263.  res = PARSER_expr1_BOO(self, FALSE);
  6264.  if (PARSER_check_INT(self, shared_PARSER_po)) {
  6265.   c_1773 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6266.   c_1773->source_38 = PARSER_source_lo(self);
  6267.   c_1773->name_19 = self->prog->ident_builtin->pow_ident;
  6268.   c_1773->ob = res;
  6269.   c_1773->args_7 = PARSER_expr2_TR_EXPR(self);
  6270.   res = ((TR_EXPR) c_1773);
  6271.  }
  6272.  PARSER_exit(self);
  6273.  return res;
  6274. }
  6275.  
  6276.  
  6277. TR_EXPR PARSER_expr3_TR_EXPR(PARSER self) {
  6278.  TR_EXPR noname1774;
  6279.  TR_EXPR x = ((TR_EXPR) NULL);
  6280.  TR_CALL_EXPR c_1775 = ((TR_CALL_EXPR) NULL);
  6281.  TR_EXPR res = ((TR_EXPR) NULL);
  6282.  TR_INT_LIT_EXPR i;
  6283.  TR_FLT_LIT_EXPR f_1776;
  6284.  PARSER_enter_STR(self, ((STR) &expressionprec3));
  6285.  if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_mi)) {
  6286.   PARSER_fetch(self);
  6287.   x = PARSER_expr3_TR_EXPR(self);
  6288.   if (x==NULL) {
  6289.    c_1775 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6290.    c_1775->source_38 = PARSER_source_lo(self);
  6291.    c_1775->name_19 = self->prog->ident_builtin->negate_ident;
  6292.    c_1775->ob = x;
  6293.    res = ((TR_EXPR) c_1775);
  6294.   } else
  6295.   switch (x->header.tag) {
  6296.    case TR_INT_LIT_EXPR_tag:
  6297.     i = TR_INT_LIT_EXPR_(((TR_INT_LIT_EXPR) NULL));
  6298.     i->source_38 = PARSER_source_lo(self);
  6299.     i->val_16 = INTI_negate_INTI(((TR_INT_LIT_EXPR) x)->val_16);
  6300.     res = ((TR_EXPR) i); break;
  6301.    case TR_FLT_LIT_EXPR_tag:
  6302.     f_1776 = TR_FLT_LIT_EXPR_(((TR_FLT_LIT_EXPR) NULL));
  6303.     f_1776->source_38 = PARSER_source_lo(self);
  6304.     f_1776->val_16 = RAT_negate_RAT(((TR_FLT_LIT_EXPR) x)->val_16);
  6305.     f_1776->tp = ((TR_FLT_LIT_EXPR) x)->tp;
  6306.     res = ((TR_EXPR) f_1776); break;
  6307.    default: ;
  6308.     c_1775 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6309.     c_1775->source_38 = PARSER_source_lo(self);
  6310.     c_1775->name_19 = self->prog->ident_builtin->negate_ident;
  6311.     c_1775->ob = x;
  6312.     res = ((TR_EXPR) c_1775);
  6313.   }
  6314.  }
  6315.  else {
  6316.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_no)) {
  6317.    PARSER_fetch(self);
  6318.    x = PARSER_expr3_TR_EXPR(self);
  6319.    c_1775 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6320.    c_1775->source_38 = PARSER_source_lo(self);
  6321.    c_1775->name_19 = self->prog->ident_builtin->not_ident;
  6322.    c_1775->ob = x;
  6323.    res = ((TR_EXPR) c_1775);
  6324.   }
  6325.   else {
  6326.    res = PARSER_expr2_TR_EXPR(self);
  6327.   }
  6328.  }
  6329.  PARSER_exit(self);
  6330.  return res;
  6331. }
  6332.  
  6333.  
  6334. TR_EXPR PARSER_expr4_TR_EXPR(PARSER self) {
  6335.  TR_EXPR noname1777;
  6336.  TR_EXPR res;
  6337.  IDENT name_1778 = IDENT_zero;
  6338.  TR_CALL_EXPR c_1779;
  6339.  PARSER_enter_STR(self, ((STR) &expressionprec4));
  6340.  res = PARSER_expr3_TR_EXPR(self);
  6341.  while (1) {
  6342.   if (PARSER_check_INT(self, shared_PARSER_ti)) {
  6343.    name_1778 = self->prog->ident_builtin->times_ident;
  6344.   }
  6345.   else {
  6346.    if (PARSER_check_INT(self, shared_PARSER_qu)) {
  6347.     name_1778 = self->prog->ident_builtin->div_ident;
  6348.    }
  6349.    else {
  6350.     if (PARSER_check_INT(self, shared_PARSER_mo)) {
  6351.      name_1778 = self->prog->ident_builtin->mod_ident;
  6352.     }
  6353.     else {
  6354.      goto after_loop;
  6355.     }
  6356.    }
  6357.   }
  6358.   c_1779 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6359.   c_1779->source_38 = PARSER_source_lo(self);
  6360.   c_1779->name_19 = name_1778;
  6361.   c_1779->ob = res;
  6362.   c_1779->args_7 = PARSER_expr3_TR_EXPR(self);
  6363.   res = ((TR_EXPR) c_1779);
  6364.  }
  6365.  after_loop: ;
  6366.  PARSER_exit(self);
  6367.  return res;
  6368. }
  6369.  
  6370.  
  6371. TR_EXPR PARSER_expr5_TR_EXPR(PARSER self) {
  6372.  TR_EXPR noname1781;
  6373.  TR_EXPR res;
  6374.  IDENT name_1782 = IDENT_zero;
  6375.  TR_CALL_EXPR c_1783;
  6376.  PARSER_enter_STR(self, ((STR) &expressionprec5));
  6377.  res = PARSER_expr4_TR_EXPR(self);
  6378.  while (1) {
  6379.   if (PARSER_check_INT(self, shared_PARSER_pl)) {
  6380.    name_1782 = self->prog->ident_builtin->plus_ident;
  6381.   }
  6382.   else {
  6383.    if (PARSER_check_INT(self, shared_PARSER_mi)) {
  6384.     name_1782 = self->prog->ident_builtin->minus_ident;
  6385.    }
  6386.    else {
  6387.     goto after_loop;
  6388.    }
  6389.   }
  6390.   c_1783 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6391.   c_1783->source_38 = PARSER_source_lo(self);
  6392.   c_1783->name_19 = name_1782;
  6393.   c_1783->ob = res;
  6394.   c_1783->args_7 = PARSER_expr4_TR_EXPR(self);
  6395.   res = ((TR_EXPR) c_1783);
  6396.  }
  6397.  after_loop: ;
  6398.  PARSER_exit(self);
  6399.  return res;
  6400. }
  6401.  
  6402.  
  6403. TR_EXPR PARSER_expr6_TR_EXPR(PARSER self) {
  6404.  TR_EXPR noname1785;
  6405.  TR_EXPR res;
  6406.  IDENT name_1786 = IDENT_zero;
  6407.  TR_CALL_EXPR c_1787;
  6408.  PARSER_enter_STR(self, ((STR) &expressionprec6));
  6409.  res = PARSER_expr5_TR_EXPR(self);
  6410.  while (1) {
  6411.   if (PARSER_check_INT(self, shared_PARSER_is_1789)) {
  6412.    name_1786 = self->prog->ident_builtin->is_eq_ident;
  6413.   }
  6414.   else {
  6415.    if (PARSER_check_INT(self, shared_PARSER_is_1790)) {
  6416.     name_1786 = self->prog->ident_builtin->is_neq_ident;
  6417.    }
  6418.    else {
  6419.     if (PARSER_check_INT(self, shared_PARSER_is)) {
  6420.      name_1786 = self->prog->ident_builtin->is_lt_ident;
  6421.     }
  6422.     else {
  6423.      if (PARSER_check_INT(self, shared_PARSER_is_1791)) {
  6424.       name_1786 = self->prog->ident_builtin->is_leq_ident;
  6425.      }
  6426.      else {
  6427.       if (PARSER_check_INT(self, shared_PARSER_is_1792)) {
  6428.        name_1786 = self->prog->ident_builtin->is_geq_ident;
  6429.       }
  6430.       else {
  6431.        if (PARSER_check_INT(self, shared_PARSER_is_1682)) {
  6432.         name_1786 = self->prog->ident_builtin->is_gt_ident;
  6433.        }
  6434.        else {
  6435.         goto after_loop;
  6436.        }
  6437.       }
  6438.      }
  6439.     }
  6440.    }
  6441.   }
  6442.   c_1787 = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6443.   c_1787->source_38 = PARSER_source_lo(self);
  6444.   c_1787->name_19 = name_1786;
  6445.   c_1787->ob = res;
  6446.   c_1787->args_7 = PARSER_expr5_TR_EXPR(self);
  6447.   res = ((TR_EXPR) c_1787);
  6448.  }
  6449.  after_loop: ;
  6450.  PARSER_exit(self);
  6451.  return res;
  6452. }
  6453.  
  6454.  
  6455. TR_AND_EXPR TR_AND_EXPR_crea(TR_AND_EXPR self) {
  6456.  TR_AND_EXPR noname1793;
  6457.  TR_AND_EXPR local0;
  6458.  local0 = ((TR_AND_EXPR) sbi_alloc(sizeof(struct TR_AND_EXPR_struct), TR_AND_EXPR_tag));
  6459.  return local0;
  6460. }
  6461.  
  6462.  
  6463. TR_OR_EXPR TR_OR_EXPR_creat(TR_OR_EXPR self) {
  6464.  TR_OR_EXPR noname1794;
  6465.  TR_OR_EXPR local0;
  6466.  local0 = ((TR_OR_EXPR) sbi_alloc(sizeof(struct TR_OR_EXPR_struct), TR_OR_EXPR_tag));
  6467.  return local0;
  6468. }
  6469.  
  6470.  
  6471. TR_EXPR PARSER_expr7_TR_EXPR(PARSER self) {
  6472.  TR_EXPR noname1795;
  6473.  TR_EXPR res;
  6474.  TR_AND_EXPR a_1796;
  6475.  TR_OR_EXPR o_1797;
  6476.  PARSER_enter_STR(self, ((STR) &expressionprec7));
  6477.  res = PARSER_expr6_TR_EXPR(self);
  6478.  while (1) {
  6479.   if (PARSER_check_INT(self, shared_PARSER_an)) {
  6480.    a_1796 = TR_AND_EXPR_crea(((TR_AND_EXPR) NULL));
  6481.    a_1796->source_38 = PARSER_source_lo(self);
  6482.    a_1796->e1 = res;
  6483.    a_1796->e2 = PARSER_expr6_TR_EXPR(self);
  6484.    res = ((TR_EXPR) a_1796);
  6485.   }
  6486.   else {
  6487.    if (PARSER_check_INT(self, shared_PARSER_or_tok)) {
  6488.     o_1797 = TR_OR_EXPR_creat(((TR_OR_EXPR) NULL));
  6489.     o_1797->source_38 = PARSER_source_lo(self);
  6490.     o_1797->e1 = res;
  6491.     o_1797->e2 = PARSER_expr6_TR_EXPR(self);
  6492.     res = ((TR_EXPR) o_1797);
  6493.    }
  6494.    else {
  6495.     goto after_loop;
  6496.    }
  6497.   }
  6498.  }
  6499.  after_loop: ;
  6500.  PARSER_exit(self);
  6501.  return res;
  6502. }
  6503.  
  6504.  
  6505. TR_AT_EXPR TR_AT_EXPR_creat(TR_AT_EXPR self) {
  6506.  TR_AT_EXPR noname1799;
  6507.  TR_AT_EXPR local0;
  6508.  local0 = ((TR_AT_EXPR) sbi_alloc(sizeof(struct TR_AT_EXPR_struct), TR_AT_EXPR_tag));
  6509.  return local0;
  6510. }
  6511.  
  6512.  
  6513. TR_EXPR PARSER_expr_TR_EXPR(PARSER self) {
  6514.  TR_EXPR noname1800;
  6515.  TR_EXPR res;
  6516.  TR_AT_EXPR h;
  6517.  PARSER_enter_STR(self, ((STR) &expressionprec8));
  6518.  res = PARSER_expr7_TR_EXPR(self);
  6519.  while (1) {
  6520.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_at_tok)) {
  6521.   }
  6522.   else {
  6523.    goto after_loop;
  6524.   }
  6525.   PARSER_fetch(self);
  6526.   h = TR_AT_EXPR_creat(((TR_AT_EXPR) NULL));
  6527.   h->source_38 = PARSER_source_lo(self);
  6528.   h->e = res;
  6529.   h->at = PARSER_expr7_TR_EXPR(self);
  6530.   res = ((TR_EXPR) h);
  6531.  }
  6532.  after_loop: ;
  6533.  PARSER_exit(self);
  6534.  return res;
  6535. }
  6536.  
  6537.  
  6538. TR_CLASS_ELT PARSER_const_def(PARSER self, TOKEN mode_1802) {
  6539.  TR_CLASS_ELT noname1803;
  6540.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  6541.  TR_CONST_DEF con_1804;
  6542.  TR_INT_LIT_EXPR zero_1805;
  6543.  INT counter_1806 = ((INT) 0);
  6544.  TR_CONST_DEF newc;
  6545.  TR_INT_LIT_EXPR arg_1807;
  6546.  TR_CALL_EXPR ex;
  6547.  TR_CLASS_ELT local0;
  6548.  PARSER_enter_STR(self, ((STR) &constdefinition));
  6549.  if (TOKEN_is_eq_INT_BOOL(mode_1802, shared_PARSER_re)) {
  6550.   PARSER_error_STR(self, ((STR) &readonlynotallow_1808));
  6551.  }
  6552.  PARSER_match_INT(self, shared_PARSER_co_1809);
  6553.  con_1804 = TR_CONST_DEF_cre(((TR_CONST_DEF) NULL));
  6554.  con_1804->source_38 = PARSER_source_lo(self);
  6555.  con_1804->is_private = TOKEN_is_eq_INT_BOOL(mode_1802, shared_PARSER_pr);
  6556.  res = ((TR_CLASS_ELT) con_1804);
  6557.  PARSER_match_INT(self, shared_PARSER_id);
  6558.  con_1804->name_19 = PARSER_ident_IDENT(self);
  6559.  if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  6560.   con_1804->tp = PARSER_type_spec_1639(self);
  6561.   PARSER_match_INT(self, shared_PARSER_as);
  6562.   con_1804->init = PARSER_expr_TR_EXPR(self);
  6563.  }
  6564.  else {
  6565.   if (PARSER_check_INT(self, shared_PARSER_as)) {
  6566.    con_1804->init = PARSER_expr_TR_EXPR(self);
  6567.   }
  6568.   else {
  6569.    zero_1805 = TR_INT_LIT_EXPR_(((TR_INT_LIT_EXPR) NULL));
  6570.    zero_1805->source_38 = PARSER_source_lo(self);
  6571.    zero_1805->val_16 = INTI_create_INT_INTI(((INTI) NULL), 0);
  6572.    con_1804->init = ((TR_EXPR) zero_1805);
  6573.   }
  6574.   counter_1806 = 1;
  6575.   while (1) {
  6576.    if (PARSER_check_INT(self, shared_PARSER_co)) {
  6577.    }
  6578.    else {
  6579.     goto after_loop;
  6580.    }
  6581.    newc = TR_CONST_DEF_cre(((TR_CONST_DEF) NULL));
  6582.    newc->source_38 = PARSER_source_lo(self);
  6583.    newc->is_private = TOKEN_is_eq_INT_BOOL(mode_1802, shared_PARSER_pr);
  6584.    PARSER_match_INT(self, shared_PARSER_id);
  6585.    newc->name_19 = PARSER_ident_IDENT(self);
  6586.    arg_1807 = TR_INT_LIT_EXPR_(((TR_INT_LIT_EXPR) NULL));
  6587.    arg_1807->source_38 = PARSER_source_lo(self);
  6588.    arg_1807->val_16 = INTI_create_INT_INTI(((INTI) NULL), counter_1806);
  6589.    ex = TR_CALL_EXPR_cre(((TR_CALL_EXPR) NULL));
  6590.    ex->source_38 = PARSER_source_lo(self);
  6591.    ex->ob = con_1804->init;
  6592.    ex->name_19 = self->prog->ident_builtin->plus_ident;
  6593.    ex->args_7 = ((TR_EXPR) arg_1807);
  6594.    newc->init = ((TR_EXPR) ex);
  6595.    if ((res==((TR_CLASS_ELT) NULL))) {
  6596.     res = ((TR_CLASS_ELT) newc);
  6597.    }
  6598.    else {
  6599.     local0 = res;
  6600.     (*TR_CLASS_ELT_app[local0->header.tag+TR_CLASS_ELT_app_offset])(local0, ((TR_CLASS_ELT) newc));
  6601.    }
  6602.    counter_1806 = (c_INT_plus_INT_INT_chk(counter_1806,1));
  6603.   }
  6604.   after_loop: ;
  6605.  }
  6606.  PARSER_exit(self);
  6607.  return res;
  6608. }
  6609.  
  6610.  
  6611. TR_SHARED_DEF TR_SHARED_DEF_cr(TR_SHARED_DEF self) {
  6612.  TR_SHARED_DEF noname1811;
  6613.  TR_SHARED_DEF local0;
  6614.  local0 = ((TR_SHARED_DEF) sbi_alloc(sizeof(struct TR_SHARED_DEF_struct), TR_SHARED_DEF_tag));
  6615.  return local0;
  6616. }
  6617.  
  6618.  
  6619. TR_CLASS_ELT PARSER_shared_de(PARSER self, TOKEN mode_1812) {
  6620.  TR_CLASS_ELT noname1813;
  6621.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  6622.  TR_SHARED_DEF newid;
  6623.  TR_TYPE_SPEC tp_1814;
  6624.  TR_CLASS_ELT p;
  6625.  TR_CLASS_ELT local0;
  6626.  TR_CLASS_ELT local1;
  6627.  TR_CLASS_ELT local2;
  6628.  PARSER_enter_STR(self, ((STR) &shareddefinition));
  6629.  PARSER_match_INT(self, shared_PARSER_sh);
  6630.  while (1) {
  6631.   newid = TR_SHARED_DEF_cr(((TR_SHARED_DEF) NULL));
  6632.   newid->source_38 = PARSER_source_lo(self);
  6633.   newid->is_private = TOKEN_is_eq_INT_BOOL(mode_1812, shared_PARSER_pr);
  6634.   newid->is_readonly = TOKEN_is_eq_INT_BOOL(mode_1812, shared_PARSER_re);
  6635.   PARSER_match_INT(self, shared_PARSER_id);
  6636.   newid->name_19 = PARSER_ident_IDENT(self);
  6637.   if ((res==((TR_CLASS_ELT) NULL))) {
  6638.    res = ((TR_CLASS_ELT) newid);
  6639.   }
  6640.   else {
  6641.    local0 = res;
  6642.    (*TR_CLASS_ELT_app[local0->header.tag+TR_CLASS_ELT_app_offset])(local0, ((TR_CLASS_ELT) newid));
  6643.   }
  6644.   if (PARSER_check_INT(self, shared_PARSER_co)) {
  6645.   }
  6646.   else {
  6647.    goto after_loop;
  6648.   }
  6649.  }
  6650.  after_loop: ;
  6651.  PARSER_match_INT(self, shared_PARSER_co_1647);
  6652.  tp_1814 = PARSER_type_spec_1639(self);
  6653.  p = res;
  6654.  while (1) {
  6655.   if ((p==((TR_CLASS_ELT) NULL))) {
  6656.    goto after_loop_1816;
  6657.   }
  6658.   if (p==NULL) {
  6659.   } else
  6660.   switch (p->header.tag) {
  6661.    case TR_SHARED_DEF_tag:
  6662.     ((TR_SHARED_DEF) p)->tp = tp_1814; break;
  6663.    default: ;
  6664.     fprintf(stderr,"No applicable type in typecase ./parse.sa:1213:17\n");
  6665.     exit(16);
  6666.   }
  6667.   local1 = p;
  6668.   p = (*TR_CLASS_ELT_nex[local1->header.tag+TR_CLASS_ELT_nex_offset])(local1);
  6669.  }
  6670.  after_loop_1816: ;
  6671.  if (PARSER_check_INT(self, shared_PARSER_as)) {
  6672.   if (res==NULL) {
  6673.   } else
  6674.   switch (res->header.tag) {
  6675.    case TR_SHARED_DEF_tag:
  6676.     ((TR_SHARED_DEF) res)->init = PARSER_expr_TR_EXPR(self); break;
  6677.    default: ;
  6678.     fprintf(stderr,"No applicable type in typecase ./parse.sa:1217:17\n");
  6679.     exit(16);
  6680.   }
  6681.   local2 = res;
  6682.   if ((!(((*TR_CLASS_ELT_nex[local2->header.tag+TR_CLASS_ELT_nex_offset])(local2)==((TR_CLASS_ELT) NULL))))) {
  6683.    PARSER_error_STR(self, ((STR) &onlysingleshared));
  6684.   }
  6685.  }
  6686.  PARSER_exit(self);
  6687.  return res;
  6688. }
  6689.  
  6690.  
  6691. TR_ATTR_DEF TR_ATTR_DEF_crea(TR_ATTR_DEF self) {
  6692.  TR_ATTR_DEF noname1818;
  6693.  TR_ATTR_DEF local0;
  6694.  local0 = ((TR_ATTR_DEF) sbi_alloc(sizeof(struct TR_ATTR_DEF_struct), TR_ATTR_DEF_tag));
  6695.  return local0;
  6696. }
  6697.  
  6698.  
  6699. TR_CLASS_ELT PARSER_attr_def_(PARSER self, TOKEN mode_1819) {
  6700.  TR_CLASS_ELT noname1820;
  6701.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  6702.  TR_ATTR_DEF newid;
  6703.  TR_TYPE_SPEC tp_1821;
  6704.  TR_CLASS_ELT p;
  6705.  TR_CLASS_ELT local0;
  6706.  TR_CLASS_ELT local1;
  6707.  PARSER_enter_STR(self, ((STR) &attributedefinition));
  6708.  PARSER_match_INT(self, shared_PARSER_at);
  6709.  while (1) {
  6710.   newid = TR_ATTR_DEF_crea(((TR_ATTR_DEF) NULL));
  6711.   newid->source_38 = PARSER_source_lo(self);
  6712.   newid->is_private = TOKEN_is_eq_INT_BOOL(mode_1819, shared_PARSER_pr);
  6713.   newid->is_readonly = TOKEN_is_eq_INT_BOOL(mode_1819, shared_PARSER_re);
  6714.   PARSER_match_INT(self, shared_PARSER_id);
  6715.   newid->name_19 = PARSER_ident_IDENT(self);
  6716.   if ((res==((TR_CLASS_ELT) NULL))) {
  6717.    res = ((TR_CLASS_ELT) newid);
  6718.   }
  6719.   else {
  6720.    local0 = res;
  6721.    (*TR_CLASS_ELT_app[local0->header.tag+TR_CLASS_ELT_app_offset])(local0, ((TR_CLASS_ELT) newid));
  6722.   }
  6723.   if (PARSER_check_INT(self, shared_PARSER_co)) {
  6724.   }
  6725.   else {
  6726.    goto after_loop;
  6727.   }
  6728.  }
  6729.  after_loop: ;
  6730.  PARSER_match_INT(self, shared_PARSER_co_1647);
  6731.  tp_1821 = PARSER_type_spec_1639(self);
  6732.  p = res;
  6733.  while (1) {
  6734.   if ((p==((TR_CLASS_ELT) NULL))) {
  6735.    goto after_loop_1823;
  6736.   }
  6737.   if (p==NULL) {
  6738.   } else
  6739.   switch (p->header.tag) {
  6740.    case TR_ATTR_DEF_tag:
  6741.     ((TR_ATTR_DEF) p)->tp = tp_1821; break;
  6742.    default: ;
  6743.     fprintf(stderr,"No applicable type in typecase ./parse.sa:1246:17\n");
  6744.     exit(16);
  6745.   }
  6746.   local1 = p;
  6747.   p = (*TR_CLASS_ELT_nex[local1->header.tag+TR_CLASS_ELT_nex_offset])(local1);
  6748.  }
  6749.  after_loop_1823: ;
  6750.  PARSER_exit(self);
  6751.  return res;
  6752. }
  6753.  
  6754.  
  6755. TR_ARG_DEC PARSER_arg_dec_B(PARSER self, BOOL is_iter_1825) {
  6756.  TR_ARG_DEC noname1826;
  6757.  TR_ARG_DEC res = ((TR_ARG_DEC) NULL);
  6758.  TR_ARG_DEC newa;
  6759.  TR_TYPE_SPEC tp_1827;
  6760.  BOOL hot_1828 = ((BOOL) 0);
  6761.  TR_ARG_DEC p;
  6762.  BOOL local0;
  6763.  BOOL local1;
  6764.  PARSER_enter_STR(self, ((STR) &routineiterargum));
  6765.  while (1) {
  6766.   newa = TR_ARG_DEC_creat(((TR_ARG_DEC) NULL));
  6767.   newa->source_38 = PARSER_source_lo(self);
  6768.   PARSER_match_INT(self, shared_PARSER_id);
  6769.   newa->name_19 = PARSER_ident_IDENT(self);
  6770.   if ((res==((TR_ARG_DEC) NULL))) {
  6771.    res = newa;
  6772.   }
  6773.   else {
  6774.    TR_ARG_DEC_appen(res, newa);
  6775.   }
  6776.   if (PARSER_check_INT(self, shared_PARSER_co)) {
  6777.   }
  6778.   else {
  6779.    goto after_loop;
  6780.   }
  6781.  }
  6782.  after_loop: ;
  6783.  PARSER_match_INT(self, shared_PARSER_co_1647);
  6784.  tp_1827 = PARSER_type_spec_1639(self);
  6785.  if (PARSER_check_INT(self, shared_PARSER_ba)) {
  6786.   local0 = TRUE;
  6787.  } else {
  6788.   local0 = PARSER_check_INT(self, shared_PARSER_it);
  6789.  }
  6790.  hot_1828 = local0;
  6791.  if (hot_1828) {
  6792.   local1 = (!(is_iter_1825));
  6793.  } else {
  6794.   local1 = FALSE;
  6795.  }
  6796.  if (local1) {
  6797.   PARSER_error_STR(self, ((STR) &hotargumentsnota_1830));
  6798.  }
  6799.  p = res;
  6800.  while (1) {
  6801.   if ((p==((TR_ARG_DEC) NULL))) {
  6802.    goto after_loop_1831;
  6803.   }
  6804.   p->tp = tp_1827;
  6805.   p->is_hot = hot_1828;
  6806.   p = p->next_8;
  6807.  }
  6808.  after_loop_1831: ;
  6809.  PARSER_exit(self);
  6810.  return res;
  6811. }
  6812.  
  6813.  
  6814. BOOL PARSER_is_expr_s(PARSER self, TOKEN t_1833) {
  6815.  BOOL noname1834 = ((BOOL) 0);
  6816.  INT noname1835 = ((INT) 0);
  6817.  noname1835 = t_1833.val_16;
  6818.  switch (noname1835) {
  6819.   case 36:
  6820.   case 2:
  6821.   case 70:
  6822.   case 71:
  6823.   case 35:
  6824.   case 44:
  6825.   case 64:
  6826.   case 82:
  6827.   case 23:
  6828.   case 69:
  6829.   case 74:
  6830.   case 14:
  6831.   case 19:
  6832.   case 32:
  6833.   case 46:
  6834.   case 42:
  6835.   case 7:
  6836.   case 39:
  6837.   case 16:
  6838.   case 51:
  6839.   case 50:
  6840.   case 48:
  6841.   case 49:
  6842.   case 52:
  6843.   case 54:
  6844.   case 90:
  6845.   case 91:
  6846.   case 92:
  6847.   case 93:
  6848.    return TRUE;
  6849.    break;
  6850.   default: ;
  6851.  }
  6852.  return FALSE;
  6853. }
  6854.  
  6855.  
  6856. BOOL PARSER_is_stmt_s(PARSER self, TOKEN t_1836) {
  6857.  BOOL noname1837 = ((BOOL) 0);
  6858.  INT noname1838 = ((INT) 0);
  6859.  noname1838 = t_1836.val_16;
  6860.  switch (noname1838) {
  6861.   case 2:
  6862.   case 17:
  6863.   case 22:
  6864.   case 47:
  6865.   case 29:
  6866.   case 33:
  6867.   case 8:
  6868.   case 41:
  6869.   case 5:
  6870.   case 28:
  6871.   case 30:
  6872.   case 46:
  6873.   case 42:
  6874.   case 7:
  6875.   case 83:
  6876.   case 84:
  6877.   case 85:
  6878.   case 86:
  6879.   case 87:
  6880.   case 88:
  6881.   case 95:
  6882.    return TRUE;
  6883.    break;
  6884.   default: ;
  6885.  }
  6886.  return PARSER_is_expr_s(self, t_1836);
  6887. }
  6888.  
  6889.  
  6890. TR_IF_STMT TR_IF_STMT_creat(TR_IF_STMT self) {
  6891.  TR_IF_STMT noname1839;
  6892.  TR_IF_STMT local0;
  6893.  local0 = ((TR_IF_STMT) sbi_alloc(sizeof(struct TR_IF_STMT_struct), TR_IF_STMT_tag));
  6894.  return local0;
  6895. }
  6896.  
  6897.  
  6898. TR_IF_STMT PARSER_if_stmt_T(PARSER self) {
  6899.  TR_IF_STMT noname1840;
  6900.  TR_IF_STMT res;
  6901.  PARSER_enter_STR(self, ((STR) &ifstatement));
  6902.  res = TR_IF_STMT_creat(((TR_IF_STMT) NULL));
  6903.  res->source_38 = PARSER_source_lo(self);
  6904.  res->test_40 = PARSER_expr_TR_EXPR(self);
  6905.  PARSER_match_INT(self, shared_PARSER_th);
  6906.  res->then_part = PARSER_stmt_list(self);
  6907.  if (PARSER_check_INT(self, shared_PARSER_el)) {
  6908.   res->else_part = ((TR_STMT) PARSER_if_stmt_T(self));
  6909.  }
  6910.  else {
  6911.   if (PARSER_check_INT(self, shared_PARSER_el_1841)) {
  6912.    res->else_part = PARSER_stmt_list(self);
  6913.   }
  6914.   PARSER_match_INT(self, shared_PARSER_en);
  6915.  }
  6916.  PARSER_exit(self);
  6917.  return res;
  6918. }
  6919.  
  6920.  
  6921. TR_LOOP_STMT TR_LOOP_STMT_cre(TR_LOOP_STMT self) {
  6922.  TR_LOOP_STMT noname1842;
  6923.  TR_LOOP_STMT local0;
  6924.  local0 = ((TR_LOOP_STMT) sbi_alloc(sizeof(struct TR_LOOP_STMT_struct), TR_LOOP_STMT_tag));
  6925.  return local0;
  6926. }
  6927.  
  6928.  
  6929. TR_LOOP_STMT PARSER_loop_stmt(PARSER self) {
  6930.  TR_LOOP_STMT noname1843;
  6931.  TR_LOOP_STMT res;
  6932.  PARSER_enter_STR(self, ((STR) &loopstatement));
  6933.  PARSER_match_INT(self, shared_PARSER_lo);
  6934.  res = TR_LOOP_STMT_cre(((TR_LOOP_STMT) NULL));
  6935.  res->source_38 = PARSER_source_lo(self);
  6936.  res->body = PARSER_stmt_list(self);
  6937.  PARSER_match_INT(self, shared_PARSER_en);
  6938.  PARSER_exit(self);
  6939.  return res;
  6940. }
  6941.  
  6942.  
  6943. TR_RETURN_STMT TR_RETURN_STMT_c(TR_RETURN_STMT self) {
  6944.  TR_RETURN_STMT noname1844;
  6945.  TR_RETURN_STMT local0;
  6946.  local0 = ((TR_RETURN_STMT) sbi_alloc(sizeof(struct TR_RETURN_STMT_struct), TR_RETURN_STMT_tag));
  6947.  return local0;
  6948. }
  6949.  
  6950.  
  6951. TR_RETURN_STMT PARSER_return_st(PARSER self) {
  6952.  TR_RETURN_STMT noname1845;
  6953.  TR_RETURN_STMT res;
  6954.  PARSER_enter_STR(self, ((STR) &returnstatement));
  6955.  res = TR_RETURN_STMT_c(((TR_RETURN_STMT) NULL));
  6956.  res->source_38 = PARSER_source_lo(self);
  6957.  PARSER_match_INT(self, shared_PARSER_re_1846);
  6958.  if (PARSER_is_expr_s(self, self->next_8)) {
  6959.   res->val_16 = PARSER_expr_TR_EXPR(self);
  6960.  }
  6961.  PARSER_exit(self);
  6962.  return res;
  6963. }
  6964.  
  6965.  
  6966. TR_YIELD_STMT TR_YIELD_STMT_cr(TR_YIELD_STMT self) {
  6967.  TR_YIELD_STMT noname1847;
  6968.  TR_YIELD_STMT local0;
  6969.  local0 = ((TR_YIELD_STMT) sbi_alloc(sizeof(struct TR_YIELD_STMT_struct), TR_YIELD_STMT_tag));
  6970.  return local0;
  6971. }
  6972.  
  6973.  
  6974. TR_YIELD_STMT PARSER_yield_stm(PARSER self) {
  6975.  TR_YIELD_STMT noname1848;
  6976.  TR_YIELD_STMT res;
  6977.  PARSER_enter_STR(self, ((STR) &yieldstatement));
  6978.  res = TR_YIELD_STMT_cr(((TR_YIELD_STMT) NULL));
  6979.  res->source_38 = PARSER_source_lo(self);
  6980.  PARSER_match_INT(self, shared_PARSER_yi);
  6981.  if (PARSER_is_expr_s(self, self->next_8)) {
  6982.   res->val_16 = PARSER_expr_TR_EXPR(self);
  6983.  }
  6984.  PARSER_exit(self);
  6985.  return res;
  6986. }
  6987.  
  6988.  
  6989. TR_QUIT_STMT TR_QUIT_STMT_cre(TR_QUIT_STMT self) {
  6990.  TR_QUIT_STMT noname1849;
  6991.  TR_QUIT_STMT local0;
  6992.  local0 = ((TR_QUIT_STMT) sbi_alloc(sizeof(struct TR_QUIT_STMT_struct), TR_QUIT_STMT_tag));
  6993.  return local0;
  6994. }
  6995.  
  6996.  
  6997. TR_CASE_STMT TR_CASE_STMT_cre(TR_CASE_STMT self) {
  6998.  TR_CASE_STMT noname1850;
  6999.  TR_CASE_STMT local0;
  7000.  local0 = ((TR_CASE_STMT) sbi_alloc(sizeof(struct TR_CASE_STMT_struct), TR_CASE_STMT_tag));
  7001.  return local0;
  7002. }
  7003.  
  7004.  
  7005. TR_CASE_WHEN TR_CASE_WHEN_cre(TR_CASE_WHEN self) {
  7006.  TR_CASE_WHEN noname1851;
  7007.  TR_CASE_WHEN local0;
  7008.  local0 = ((TR_CASE_WHEN) sbi_alloc(sizeof(struct TR_CASE_WHEN_struct), TR_CASE_WHEN_tag));
  7009.  return local0;
  7010. }
  7011.  
  7012.  
  7013. void TR_CASE_WHEN_app(TR_CASE_WHEN self, TR_CASE_WHEN l) {
  7014.  TR_CASE_WHEN last_1852;
  7015.  if (!((!((self==((TR_CASE_WHEN) NULL)))))) {
  7016.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  7017.   exit(16);
  7018.  }
  7019.  if ((self->next_8==((TR_CASE_WHEN) NULL))) {
  7020.   self->next_8 = l;
  7021.   return;
  7022.  }
  7023.  last_1852 = self->next_8;
  7024.  while (1) {
  7025.   if ((last_1852->next_8==((TR_CASE_WHEN) NULL))) {
  7026.    goto after_loop;
  7027.   }
  7028.   last_1852 = last_1852->next_8;
  7029.  }
  7030.  after_loop: ;
  7031.  last_1852->next_8 = l;
  7032. }
  7033.  
  7034.  
  7035. TR_CASE_STMT PARSER_case_stmt(PARSER self) {
  7036.  TR_CASE_STMT noname1854;
  7037.  TR_CASE_STMT res;
  7038.  TR_CASE_WHEN first_1855 = ((TR_CASE_WHEN) NULL);
  7039.  TR_CASE_WHEN this_1856 = ((TR_CASE_WHEN) NULL);
  7040.  TR_STMT st;
  7041.  PARSER_enter_STR(self, ((STR) &casestatement));
  7042.  PARSER_match_INT(self, shared_PARSER_ca);
  7043.  res = TR_CASE_STMT_cre(((TR_CASE_STMT) NULL));
  7044.  res->source_38 = PARSER_source_lo(self);
  7045.  res->test_40 = PARSER_expr_TR_EXPR(self);
  7046.  while (1) {
  7047.   if (PARSER_check_INT(self, shared_PARSER_wh)) {
  7048.   }
  7049.   else {
  7050.    goto after_loop;
  7051.   }
  7052.   first_1855 = ((TR_CASE_WHEN) NULL);
  7053.   while (1) {
  7054.    this_1856 = TR_CASE_WHEN_cre(((TR_CASE_WHEN) NULL));
  7055.    this_1856->source_38 = PARSER_source_lo(self);
  7056.    if ((first_1855==((TR_CASE_WHEN) NULL))) {
  7057.     first_1855 = this_1856;
  7058.    }
  7059.    this_1856->val_16 = PARSER_expr_TR_EXPR(self);
  7060.    if ((res->when_part==((TR_CASE_WHEN) NULL))) {
  7061.     res->when_part = this_1856;
  7062.    }
  7063.    else {
  7064.     TR_CASE_WHEN_app(res->when_part, this_1856);
  7065.    }
  7066.    if (PARSER_check_INT(self, shared_PARSER_co)) {
  7067.    }
  7068.    else {
  7069.     goto after_loop_1858;
  7070.    }
  7071.   }
  7072.   after_loop_1858: ;
  7073.   PARSER_match_INT(self, shared_PARSER_th);
  7074.   st = PARSER_stmt_list(self);
  7075.   this_1856 = first_1855;
  7076.   while (1) {
  7077.    if ((this_1856==((TR_CASE_WHEN) NULL))) {
  7078.     goto after_loop_1860;
  7079.    }
  7080.    this_1856->then_part = st;
  7081.    this_1856 = this_1856->next_8;
  7082.   }
  7083.   after_loop_1860: ;
  7084.  }
  7085.  after_loop: ;
  7086.  if (PARSER_check_INT(self, shared_PARSER_el_1841)) {
  7087.   res->else_part = PARSER_stmt_list(self);
  7088.   res->no_else = FALSE;
  7089.  }
  7090.  else {
  7091.   res->no_else = TRUE;
  7092.  }
  7093.  PARSER_match_INT(self, shared_PARSER_en);
  7094.  PARSER_exit(self);
  7095.  return res;
  7096. }
  7097.  
  7098.  
  7099. TR_TYPECASE_STMT TR_TYPECASE_STMT_1862(TR_TYPECASE_STMT self) {
  7100.  TR_TYPECASE_STMT noname1863;
  7101.  TR_TYPECASE_STMT local0;
  7102.  local0 = ((TR_TYPECASE_STMT) sbi_alloc(sizeof(struct TR_TYPECASE_STMT_struct), TR_TYPECASE_STMT_tag));
  7103.  return local0;
  7104. }
  7105.  
  7106.  
  7107. TR_TYPECASE_WHEN TR_TYPECASE_WHEN_1864(TR_TYPECASE_WHEN self) {
  7108.  TR_TYPECASE_WHEN noname1865;
  7109.  TR_TYPECASE_WHEN local0;
  7110.  local0 = ((TR_TYPECASE_WHEN) sbi_alloc(sizeof(struct TR_TYPECASE_WHEN_struct), TR_TYPECASE_WHEN_tag));
  7111.  return local0;
  7112. }
  7113.  
  7114.  
  7115. void TR_TYPECASE_WHEN_1866(TR_TYPECASE_WHEN self, TR_TYPECASE_WHEN l) {
  7116.  TR_TYPECASE_WHEN last_1867;
  7117.  if (!((!((self==((TR_TYPECASE_WHEN) NULL)))))) {
  7118.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  7119.   exit(16);
  7120.  }
  7121.  if ((self->next_8==((TR_TYPECASE_WHEN) NULL))) {
  7122.   self->next_8 = l;
  7123.   return;
  7124.  }
  7125.  last_1867 = self->next_8;
  7126.  while (1) {
  7127.   if ((last_1867->next_8==((TR_TYPECASE_WHEN) NULL))) {
  7128.    goto after_loop;
  7129.   }
  7130.   last_1867 = last_1867->next_8;
  7131.  }
  7132.  after_loop: ;
  7133.  last_1867->next_8 = l;
  7134. }
  7135.  
  7136.  
  7137. TR_TYPECASE_STMT PARSER_typecase_(PARSER self) {
  7138.  TR_TYPECASE_STMT noname1869;
  7139.  TR_TYPECASE_STMT res;
  7140.  TR_TYPECASE_WHEN this_1870;
  7141.  PARSER_enter_STR(self, ((STR) &typecasestatement));
  7142.  PARSER_match_INT(self, shared_PARSER_ty_1871);
  7143.  res = TR_TYPECASE_STMT_1862(((TR_TYPECASE_STMT) NULL));
  7144.  res->source_38 = PARSER_source_lo(self);
  7145.  PARSER_match_INT(self, shared_PARSER_id);
  7146.  res->name_19 = PARSER_ident_IDENT(self);
  7147.  while (1) {
  7148.   if (PARSER_check_INT(self, shared_PARSER_wh)) {
  7149.   }
  7150.   else {
  7151.    goto after_loop;
  7152.   }
  7153.   this_1870 = TR_TYPECASE_WHEN_1864(((TR_TYPECASE_WHEN) NULL));
  7154.   this_1870->source_38 = PARSER_source_lo(self);
  7155.   this_1870->tp = PARSER_type_spec_1639(self);
  7156.   PARSER_match_INT(self, shared_PARSER_th);
  7157.   this_1870->then_part = PARSER_stmt_list(self);
  7158.   if ((res->when_part==((TR_TYPECASE_WHEN) NULL))) {
  7159.    res->when_part = this_1870;
  7160.   }
  7161.   else {
  7162.    TR_TYPECASE_WHEN_1866(res->when_part, this_1870);
  7163.   }
  7164.  }
  7165.  after_loop: ;
  7166.  if (PARSER_check_INT(self, shared_PARSER_el_1841)) {
  7167.   res->else_part = PARSER_stmt_list(self);
  7168.   res->no_else = FALSE;
  7169.  }
  7170.  else {
  7171.   res->no_else = TRUE;
  7172.  }
  7173.  PARSER_match_INT(self, shared_PARSER_en);
  7174.  PARSER_exit(self);
  7175.  return res;
  7176. }
  7177.  
  7178.  
  7179. TR_ASSERT_STMT TR_ASSERT_STMT_c(TR_ASSERT_STMT self) {
  7180.  TR_ASSERT_STMT noname1873;
  7181.  TR_ASSERT_STMT local0;
  7182.  local0 = ((TR_ASSERT_STMT) sbi_alloc(sizeof(struct TR_ASSERT_STMT_struct), TR_ASSERT_STMT_tag));
  7183.  return local0;
  7184. }
  7185.  
  7186.  
  7187. TR_ASSERT_STMT PARSER_assert_st(PARSER self) {
  7188.  TR_ASSERT_STMT noname1874;
  7189.  TR_ASSERT_STMT res;
  7190.  PARSER_enter_STR(self, ((STR) &assertstatement));
  7191.  res = TR_ASSERT_STMT_c(((TR_ASSERT_STMT) NULL));
  7192.  res->source_38 = PARSER_source_lo(self);
  7193.  PARSER_match_INT(self, shared_PARSER_as_1875);
  7194.  res->test_40 = PARSER_expr_TR_EXPR(self);
  7195.  PARSER_exit(self);
  7196.  return res;
  7197. }
  7198.  
  7199.  
  7200. TR_PROTECT_STMT TR_PROTECT_STMT_(TR_PROTECT_STMT self) {
  7201.  TR_PROTECT_STMT noname1876;
  7202.  TR_PROTECT_STMT local0;
  7203.  local0 = ((TR_PROTECT_STMT) sbi_alloc(sizeof(struct TR_PROTECT_STMT_struct), TR_PROTECT_STMT_tag));
  7204.  return local0;
  7205. }
  7206.  
  7207.  
  7208. TR_PROTECT_WHEN TR_PROTECT_WHEN_(TR_PROTECT_WHEN self) {
  7209.  TR_PROTECT_WHEN noname1877;
  7210.  TR_PROTECT_WHEN local0;
  7211.  local0 = ((TR_PROTECT_WHEN) sbi_alloc(sizeof(struct TR_PROTECT_WHEN_struct), TR_PROTECT_WHEN_tag));
  7212.  return local0;
  7213. }
  7214.  
  7215.  
  7216. void TR_PROTECT_WHEN__1878(TR_PROTECT_WHEN self, TR_PROTECT_WHEN l) {
  7217.  TR_PROTECT_WHEN last_1879;
  7218.  if (!((!((self==((TR_PROTECT_WHEN) NULL)))))) {
  7219.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  7220.   exit(16);
  7221.  }
  7222.  if ((self->next_8==((TR_PROTECT_WHEN) NULL))) {
  7223.   self->next_8 = l;
  7224.   return;
  7225.  }
  7226.  last_1879 = self->next_8;
  7227.  while (1) {
  7228.   if ((last_1879->next_8==((TR_PROTECT_WHEN) NULL))) {
  7229.    goto after_loop;
  7230.   }
  7231.   last_1879 = last_1879->next_8;
  7232.  }
  7233.  after_loop: ;
  7234.  last_1879->next_8 = l;
  7235. }
  7236.  
  7237.  
  7238. TR_PROTECT_STMT PARSER_protect_s(PARSER self) {
  7239.  TR_PROTECT_STMT noname1881;
  7240.  TR_PROTECT_STMT res;
  7241.  TR_PROTECT_WHEN first_1882 = ((TR_PROTECT_WHEN) NULL);
  7242.  TR_PROTECT_WHEN this_1883 = ((TR_PROTECT_WHEN) NULL);
  7243.  TR_STMT st;
  7244.  PARSER_enter_STR(self, ((STR) &protectstatement));
  7245.  PARSER_match_INT(self, shared_PARSER_pr_1884);
  7246.  res = TR_PROTECT_STMT_(((TR_PROTECT_STMT) NULL));
  7247.  res->source_38 = PARSER_source_lo(self);
  7248.  res->stmts = PARSER_stmt_list(self);
  7249.  while (1) {
  7250.   if (PARSER_check_INT(self, shared_PARSER_wh)) {
  7251.   }
  7252.   else {
  7253.    goto after_loop;
  7254.   }
  7255.   first_1882 = ((TR_PROTECT_WHEN) NULL);
  7256.   while (1) {
  7257.    this_1883 = TR_PROTECT_WHEN_(((TR_PROTECT_WHEN) NULL));
  7258.    this_1883->source_38 = PARSER_source_lo(self);
  7259.    if ((first_1882==((TR_PROTECT_WHEN) NULL))) {
  7260.     first_1882 = this_1883;
  7261.    }
  7262.    this_1883->tp = PARSER_type_spec_1639(self);
  7263.    if ((res->when_part==((TR_PROTECT_WHEN) NULL))) {
  7264.     res->when_part = this_1883;
  7265.    }
  7266.    else {
  7267.     TR_PROTECT_WHEN__1878(res->when_part, this_1883);
  7268.    }
  7269.    if (PARSER_check_INT(self, shared_PARSER_co)) {
  7270.    }
  7271.    else {
  7272.     goto after_loop_1886;
  7273.    }
  7274.   }
  7275.   after_loop_1886: ;
  7276.   PARSER_match_INT(self, shared_PARSER_th);
  7277.   st = PARSER_stmt_list(self);
  7278.   this_1883 = first_1882;
  7279.   while (1) {
  7280.    if ((this_1883==((TR_PROTECT_WHEN) NULL))) {
  7281.     goto after_loop_1888;
  7282.    }
  7283.    this_1883->then_part = st;
  7284.    this_1883 = this_1883->next_8;
  7285.   }
  7286.   after_loop_1888: ;
  7287.  }
  7288.  after_loop: ;
  7289.  if (PARSER_check_INT(self, shared_PARSER_el_1841)) {
  7290.   res->else_part = PARSER_stmt_list(self);
  7291.   res->no_else = FALSE;
  7292.  }
  7293.  else {
  7294.   res->no_else = TRUE;
  7295.  }
  7296.  PARSER_match_INT(self, shared_PARSER_en);
  7297.  PARSER_exit(self);
  7298.  return res;
  7299. }
  7300.  
  7301.  
  7302. TR_RAISE_STMT TR_RAISE_STMT_cr(TR_RAISE_STMT self) {
  7303.  TR_RAISE_STMT noname1890;
  7304.  TR_RAISE_STMT local0;
  7305.  local0 = ((TR_RAISE_STMT) sbi_alloc(sizeof(struct TR_RAISE_STMT_struct), TR_RAISE_STMT_tag));
  7306.  return local0;
  7307. }
  7308.  
  7309.  
  7310. TR_RAISE_STMT PARSER_raise_stm(PARSER self) {
  7311.  TR_RAISE_STMT noname1891;
  7312.  TR_RAISE_STMT res;
  7313.  PARSER_enter_STR(self, ((STR) &raisestatement));
  7314.  res = TR_RAISE_STMT_cr(((TR_RAISE_STMT) NULL));
  7315.  res->source_38 = PARSER_source_lo(self);
  7316.  PARSER_match_INT(self, shared_PARSER_ra);
  7317.  res->val_16 = PARSER_expr_TR_EXPR(self);
  7318.  PARSER_exit(self);
  7319.  return res;
  7320. }
  7321.  
  7322.  
  7323. TR_COBEGIN_STMT TR_COBEGIN_STMT_(TR_COBEGIN_STMT self) {
  7324.  TR_COBEGIN_STMT noname1892;
  7325.  TR_COBEGIN_STMT local0;
  7326.  local0 = ((TR_COBEGIN_STMT) sbi_alloc(sizeof(struct TR_COBEGIN_STMT_struct), TR_COBEGIN_STMT_tag));
  7327.  return local0;
  7328. }
  7329.  
  7330.  
  7331. TR_COBEGIN_STMT PARSER_cobegin_s(PARSER self) {
  7332.  TR_COBEGIN_STMT noname1893;
  7333.  TR_COBEGIN_STMT res;
  7334.  PARSER_enter_STR(self, ((STR) &cobeginstatement));
  7335.  PARSER_match_INT(self, shared_PARSER_co_1894);
  7336.  res = TR_COBEGIN_STMT_(((TR_COBEGIN_STMT) NULL));
  7337.  res->source_38 = PARSER_source_lo(self);
  7338.  res->stmts = PARSER_stmt_list(self);
  7339.  PARSER_match_INT(self, shared_PARSER_en);
  7340.  PARSER_exit(self);
  7341.  return res;
  7342. }
  7343.  
  7344.  
  7345. TR_LOCK_STMT TR_LOCK_STMT_cre(TR_LOCK_STMT self) {
  7346.  TR_LOCK_STMT noname1895;
  7347.  TR_LOCK_STMT local0;
  7348.  local0 = ((TR_LOCK_STMT) sbi_alloc(sizeof(struct TR_LOCK_STMT_struct), TR_LOCK_STMT_tag));
  7349.  return local0;
  7350. }
  7351.  
  7352.  
  7353. TR_LOCK_STMT PARSER_lock_stmt(PARSER self) {
  7354.  TR_LOCK_STMT noname1896;
  7355.  TR_LOCK_STMT res;
  7356.  PARSER_enter_STR(self, ((STR) &lockstatement));
  7357.  res = TR_LOCK_STMT_cre(((TR_LOCK_STMT) NULL));
  7358.  res->source_38 = PARSER_source_lo(self);
  7359.  PARSER_match_INT(self, shared_PARSER_lo_1897);
  7360.  res->e_list = PARSER_expr_list(self, FALSE);
  7361.  PARSER_match_INT(self, shared_PARSER_th);
  7362.  res->then_part = PARSER_stmt_list(self);
  7363.  PARSER_match_INT(self, shared_PARSER_en);
  7364.  PARSER_exit(self);
  7365.  return res;
  7366. }
  7367.  
  7368.  
  7369. TR_UNLOCK_STMT TR_UNLOCK_STMT_c(TR_UNLOCK_STMT self) {
  7370.  TR_UNLOCK_STMT noname1898;
  7371.  TR_UNLOCK_STMT local0;
  7372.  local0 = ((TR_UNLOCK_STMT) sbi_alloc(sizeof(struct TR_UNLOCK_STMT_struct), TR_UNLOCK_STMT_tag));
  7373.  return local0;
  7374. }
  7375.  
  7376.  
  7377. TR_UNLOCK_STMT PARSER_unlock_st(PARSER self) {
  7378.  TR_UNLOCK_STMT noname1899;
  7379.  TR_UNLOCK_STMT res;
  7380.  PARSER_enter_STR(self, ((STR) &unlockstatement));
  7381.  res = TR_UNLOCK_STMT_c(((TR_UNLOCK_STMT) NULL));
  7382.  res->source_38 = PARSER_source_lo(self);
  7383.  PARSER_match_INT(self, shared_PARSER_un_1900);
  7384.  res->e = PARSER_expr_TR_EXPR(self);
  7385.  PARSER_exit(self);
  7386.  return res;
  7387. }
  7388.  
  7389.  
  7390. TR_TRY_STMT TR_TRY_STMT_crea(TR_TRY_STMT self) {
  7391.  TR_TRY_STMT noname1901;
  7392.  TR_TRY_STMT local0;
  7393.  local0 = ((TR_TRY_STMT) sbi_alloc(sizeof(struct TR_TRY_STMT_struct), TR_TRY_STMT_tag));
  7394.  return local0;
  7395. }
  7396.  
  7397.  
  7398. TR_TRY_STMT PARSER_try_stmt_(PARSER self) {
  7399.  TR_TRY_STMT noname1902;
  7400.  TR_TRY_STMT res;
  7401.  PARSER_enter_STR(self, ((STR) &trystatement));
  7402.  res = TR_TRY_STMT_crea(((TR_TRY_STMT) NULL));
  7403.  res->source_38 = PARSER_source_lo(self);
  7404.  PARSER_match_INT(self, shared_PARSER_tr_1903);
  7405.  res->e_list = PARSER_expr_list(self, FALSE);
  7406.  PARSER_match_INT(self, shared_PARSER_th);
  7407.  res->then_part = PARSER_stmt_list(self);
  7408.  if (PARSER_check_INT(self, shared_PARSER_el_1841)) {
  7409.   res->else_part = PARSER_stmt_list(self);
  7410.  }
  7411.  PARSER_match_INT(self, shared_PARSER_en);
  7412.  PARSER_exit(self);
  7413.  return res;
  7414. }
  7415.  
  7416.  
  7417. TR_WITH_NEAR_STMT TR_WITH_NEAR_STM(TR_WITH_NEAR_STMT self) {
  7418.  TR_WITH_NEAR_STMT noname1904;
  7419.  TR_WITH_NEAR_STMT local0;
  7420.  local0 = ((TR_WITH_NEAR_STMT) sbi_alloc(sizeof(struct TR_WITH_NEAR_STMT_struct), TR_WITH_NEAR_STMT_tag));
  7421.  return local0;
  7422. }
  7423.  
  7424.  
  7425. TR_IDENT_LIST TR_IDENT_LIST_cr(TR_IDENT_LIST self) {
  7426.  TR_IDENT_LIST noname1905;
  7427.  TR_IDENT_LIST local0;
  7428.  local0 = ((TR_IDENT_LIST) sbi_alloc(sizeof(struct TR_IDENT_LIST_struct), TR_IDENT_LIST_tag));
  7429.  return local0;
  7430. }
  7431.  
  7432.  
  7433. void TR_IDENT_LIST_ap(TR_IDENT_LIST self, TR_IDENT_LIST l) {
  7434.  TR_IDENT_LIST last_1906;
  7435.  if (!((!((self==((TR_IDENT_LIST) NULL)))))) {
  7436.   fprintf(stderr,"Violation of precondition ../Library/next.sa:50:9\n");
  7437.   exit(16);
  7438.  }
  7439.  if ((self->next_8==((TR_IDENT_LIST) NULL))) {
  7440.   self->next_8 = l;
  7441.   return;
  7442.  }
  7443.  last_1906 = self->next_8;
  7444.  while (1) {
  7445.   if ((last_1906->next_8==((TR_IDENT_LIST) NULL))) {
  7446.    goto after_loop;
  7447.   }
  7448.   last_1906 = last_1906->next_8;
  7449.  }
  7450.  after_loop: ;
  7451.  last_1906->next_8 = l;
  7452. }
  7453.  
  7454.  
  7455. TR_IDENT_LIST PARSER_ident_lis(PARSER self) {
  7456.  TR_IDENT_LIST noname1908;
  7457.  TR_IDENT_LIST res = ((TR_IDENT_LIST) NULL);
  7458.  TR_IDENT_LIST id = ((TR_IDENT_LIST) NULL);
  7459.  PARSER_enter_STR(self, ((STR) &identifierlist));
  7460.  while (1) {
  7461.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_id)) {
  7462.    id = TR_IDENT_LIST_cr(((TR_IDENT_LIST) NULL));
  7463.    id->name_19 = PARSER_ident_IDENT(self);
  7464.   }
  7465.   else {
  7466.    PARSER_exp_error_STR(self, ((STR) &identifier));
  7467.   }
  7468.   PARSER_fetch(self);
  7469.   if ((res==((TR_IDENT_LIST) NULL))) {
  7470.    res = id;
  7471.   }
  7472.   else {
  7473.    TR_IDENT_LIST_ap(res, id);
  7474.   }
  7475.   if (PARSER_check_INT(self, shared_PARSER_co)) {
  7476.   }
  7477.   else {
  7478.    goto after_loop;
  7479.   }
  7480.  }
  7481.  after_loop: ;
  7482.  PARSER_exit(self);
  7483.  return res;
  7484. }
  7485.  
  7486.  
  7487. TR_WITH_NEAR_STMT PARSER_with_near(PARSER self) {
  7488.  TR_WITH_NEAR_STMT noname1910;
  7489.  TR_WITH_NEAR_STMT res;
  7490.  PARSER_enter_STR(self, ((STR) &with_nearstatement));
  7491.  res = TR_WITH_NEAR_STM(((TR_WITH_NEAR_STMT) NULL));
  7492.  res->source_38 = PARSER_source_lo(self);
  7493.  PARSER_match_INT(self, shared_PARSER_wi);
  7494.  res->idents = PARSER_ident_lis(self);
  7495.  PARSER_match_INT(self, shared_PARSER_ne);
  7496.  res->near_part = PARSER_stmt_list(self);
  7497.  if (PARSER_check_INT(self, shared_PARSER_el_1841)) {
  7498.   res->else_part = PARSER_stmt_list(self);
  7499.  }
  7500.  PARSER_match_INT(self, shared_PARSER_en);
  7501.  PARSER_exit(self);
  7502.  return res;
  7503. }
  7504.  
  7505.  
  7506. TR_DIST_STMT TR_DIST_STMT_cre(TR_DIST_STMT self) {
  7507.  TR_DIST_STMT noname1911;
  7508.  TR_DIST_STMT local0;
  7509.  local0 = ((TR_DIST_STMT) sbi_alloc(sizeof(struct TR_DIST_STMT_struct), TR_DIST_STMT_tag));
  7510.  return local0;
  7511. }
  7512.  
  7513.  
  7514. INT FLISTTR_EXPR_asi(FLISTTR_EXPR self) {
  7515.  INT noname1912 = ((INT) 0);
  7516.   return self->asize;
  7517.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  7518.  exit(16);
  7519. }
  7520.  
  7521.  
  7522. INT FLISTTR_EXPR_siz(FLISTTR_EXPR self) {
  7523.  INT noname1913 = ((INT) 0);
  7524.  if ((self==((FLISTTR_EXPR) NULL))) {
  7525.   return 0;
  7526.  }
  7527.  return self->loc_17;
  7528.  if (!FLISTTR_EXPR_inv(self)) {
  7529.   fprintf(stderr,"Failed invariant FLIST{$TR_EXPR}::invariant:BOOL ../Library/flist.sa:50:7\n");
  7530.   exit(16);
  7531.  }
  7532. }
  7533.  
  7534.  
  7535. BOOL FLISTTR_EXPR_is_(FLISTTR_EXPR self) {
  7536.  BOOL noname1914 = ((BOOL) 0);
  7537.  INT local0;
  7538.  local0 = FLISTTR_EXPR_siz(self);
  7539.  return (local0==0);
  7540.  if (!FLISTTR_EXPR_inv(self)) {
  7541.   fprintf(stderr,"Failed invariant FLIST{$TR_EXPR}::invariant:BOOL ../Library/flist.sa:113:11\n");
  7542.   exit(16);
  7543.  }
  7544. }
  7545.  
  7546.  
  7547. void FLISTTR_EXPR_aclear(FLISTTR_EXPR self) {
  7548.  TR_EXPR nil = ((TR_EXPR) NULL);
  7549.  FLISTTR_EXPR noname1915;
  7550.  if (!((!((self==((FLISTTR_EXPR) NULL)))))) {
  7551.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  7552.   exit(16);
  7553.  }
  7554.  {
  7555.   struct FLISTTR_EXPR_ase_frame_struct temp1916_0;
  7556.   FLISTTR_EXPR_ase_frame 
  7557.   noname1917 = &temp1916_0;
  7558.   noname1917->state = 0;
  7559.   while (1) {
  7560.    if (noname1917->state == 0) {
  7561.     noname1915 = self;
  7562.     noname1917->arg0 = noname1915;
  7563.    }
  7564.    noname1917->arg1 = nil;
  7565.    FLISTTR_EXPR_ase(noname1917);
  7566.    if (noname1917->state == -1) goto after_loop;
  7567.    0 /* No return value from iter call */;
  7568.   }
  7569.  }
  7570.  after_loop: ;
  7571. }
  7572.  
  7573.  
  7574. void FLISTTR_EXPR_clear(FLISTTR_EXPR self) {
  7575.  if (FLISTTR_EXPR_is_(self)) {
  7576.   return;
  7577.  }
  7578.  else {
  7579.   FLISTTR_EXPR_aclear(self);
  7580.   self->loc_17 = 0;
  7581.  }
  7582.  if (!FLISTTR_EXPR_inv(self)) {
  7583.   fprintf(stderr,"Failed invariant FLIST{$TR_EXPR}::invariant:BOOL ../Library/flist.sa:117:8\n");
  7584.   exit(16);
  7585.  }
  7586. }
  7587.  
  7588.  
  7589. void FLISTTR_EXPR_are(FLISTTR_EXPR self, INT ind_1918, TR_EXPR val_1919) {
  7590.  BOOL local0;
  7591.  INT local1;
  7592.  INT local2;
  7593.  if ((!((self==((FLISTTR_EXPR) NULL))))) {
  7594.   local1 = 0;
  7595.   local2 = (self->asize);
  7596.   local0 = INT_is_bet_INT_I(ind_1918, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  7597.  } else {
  7598.   local0 = FALSE;
  7599.  }
  7600.  if (!(local0)) {
  7601.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  7602.   exit(16);
  7603.  }
  7604.  if (ind_1918<0||ind_1918>=self->asize) {
  7605.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  7606.   exit(16);
  7607.  }
  7608.  self->arr_part[ind_1918] = val_1919;
  7609. }
  7610.  
  7611.  
  7612. void FLISTTR_EXPR_ase_1920(FLISTTR_EXPR self, INT ind_1921, TR_EXPR val_1922) {
  7613.  BOOL local0;
  7614.  INT local1;
  7615.  if ((!((self==((FLISTTR_EXPR) NULL))))) {
  7616.   local1 = 0;
  7617.   local0 = INT_is_bet_INT_I(ind_1921, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  7618.  } else {
  7619.   local0 = FALSE;
  7620.  }
  7621.  if (!(local0)) {
  7622.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  7623.   exit(16);
  7624.  }
  7625.  FLISTTR_EXPR_are(self, ind_1921, val_1922);
  7626.  if (!FLISTTR_EXPR_inv(self)) {
  7627.   fprintf(stderr,"Failed invariant FLIST{$TR_EXPR}::invariant:BOOL ../Library/flist.sa:73:7\n");
  7628.   exit(16);
  7629.  }
  7630. }
  7631.  
  7632.  
  7633. FLISTTR_EXPR FLISTTR_EXPR_pus(FLISTTR_EXPR self, TR_EXPR e_1923) {
  7634.  FLISTTR_EXPR noname1924;
  7635.  FLISTTR_EXPR r_1925 = ((FLISTTR_EXPR) NULL);
  7636.  FLISTTR_EXPR noname1926;
  7637.  FLISTTR_EXPR noname1927;
  7638.  FLISTTR_EXPR local0;
  7639.  INT local1;
  7640.  FLISTTR_EXPR local2;
  7641.  INT local3;
  7642.  TR_EXPR local4;
  7643.  INT local5;
  7644.  if ((self==((FLISTTR_EXPR) NULL))) {
  7645.   local0 = ((FLISTTR_EXPR) sbi_arr_alloc(sizeof(struct FLISTTR_EXPR_struct), FLISTTR_EXPR_tag, sizeof(TR_EXPR) , 5));
  7646.   local0->asize = 5;
  7647.   r_1925 = local0;
  7648.  }
  7649.  else {
  7650.   local1 = self->loc_17;
  7651.   if ((local1<(self->asize))) {
  7652.    r_1925 = self;
  7653.   }
  7654.   else {
  7655.    local3 = 2;
  7656.    local2 = ((FLISTTR_EXPR) sbi_arr_alloc(sizeof(struct FLISTTR_EXPR_struct), FLISTTR_EXPR_tag, sizeof(TR_EXPR) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  7657.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  7658.    r_1925 = local2;
  7659.    r_1925->loc_17 = self->loc_17;
  7660.    {
  7661.     struct FLISTTR_EXPR_elt_frame_struct temp1928_0;
  7662.     FLISTTR_EXPR_elt_frame 
  7663.     noname1929 = &temp1928_0;
  7664.     struct FLISTTR_EXPR_ase_frame_struct temp1928_1;
  7665.     FLISTTR_EXPR_ase_frame 
  7666.     noname1930 = &temp1928_1;
  7667.     noname1929->state = 0;
  7668.     noname1930->state = 0;
  7669.     while (1) {
  7670.      if (noname1930->state == 0) {
  7671.       noname1927 = r_1925;
  7672.       noname1930->arg0 = noname1927;
  7673.      }
  7674.      if (noname1929->state == 0) {
  7675.       noname1926 = self;
  7676.       noname1929->arg0 = noname1926;
  7677.      }
  7678.      local4 = FLISTTR_EXPR_elt(noname1929);
  7679.      if (noname1929->state == -1) goto after_loop;
  7680.      noname1930->arg1 = local4;
  7681.      FLISTTR_EXPR_ase(noname1930);
  7682.      if (noname1930->state == -1) goto after_loop;
  7683.      0 /* No return value from iter call */;
  7684.     }
  7685.    }
  7686.    after_loop: ;
  7687.    FLISTTR_EXPR_clear(self);
  7688.   }
  7689.  }
  7690.  r_1925->loc_17 = (c_INT_plus_INT_INT_chk(r_1925->loc_17,1));
  7691.  local5 = (c_INT_minus_INT_INT_chk(r_1925->loc_17,1));
  7692.  FLISTTR_EXPR_ase_1920(r_1925, local5, e_1923);
  7693.  return r_1925;
  7694.  if (!FLISTTR_EXPR_inv(self)) {
  7695.   fprintf(stderr,"Failed invariant FLIST{$TR_EXPR}::invariant:BOOL ../Library/flist.sa:79:7\n");
  7696.   exit(16);
  7697.  }
  7698. }
  7699.  
  7700.  
  7701. INT FLISTIDENT_asize_INT(FLISTIDENT self) {
  7702.  INT noname1931 = ((INT) 0);
  7703.   return self->asize;
  7704.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  7705.  exit(16);
  7706. }
  7707.  
  7708.  
  7709. INT FLISTIDENT_size_INT(FLISTIDENT self) {
  7710.  INT noname1932 = ((INT) 0);
  7711.  if ((self==((FLISTIDENT) NULL))) {
  7712.   return 0;
  7713.  }
  7714.  return self->loc_17;
  7715.  if (!FLISTIDENT_invar(self)) {
  7716.   fprintf(stderr,"Failed invariant FLIST{IDENT}::invariant:BOOL ../Library/flist.sa:50:7\n");
  7717.   exit(16);
  7718.  }
  7719. }
  7720.  
  7721.  
  7722. BOOL FLISTIDENT_is_em(FLISTIDENT self) {
  7723.  BOOL noname1933 = ((BOOL) 0);
  7724.  INT local0;
  7725.  local0 = FLISTIDENT_size_INT(self);
  7726.  return (local0==0);
  7727.  if (!FLISTIDENT_invar(self)) {
  7728.   fprintf(stderr,"Failed invariant FLIST{IDENT}::invariant:BOOL ../Library/flist.sa:113:11\n");
  7729.   exit(16);
  7730.  }
  7731. }
  7732.  
  7733.  
  7734. void FLISTIDENT_aclear(FLISTIDENT self) {
  7735.  IDENT nil = IDENT_zero;
  7736.  FLISTIDENT noname1934;
  7737.  if (!((!((self==((FLISTIDENT) NULL)))))) {
  7738.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:43:9\n");
  7739.   exit(16);
  7740.  }
  7741.  {
  7742.   struct FLISTIDENT_aset__frame_struct temp1935_0;
  7743.   FLISTIDENT_aset__frame 
  7744.   noname1936 = &temp1935_0;
  7745.   noname1936->state = 0;
  7746.   while (1) {
  7747.    if (noname1936->state == 0) {
  7748.     noname1934 = self;
  7749.     noname1936->arg0 = noname1934;
  7750.    }
  7751.    noname1936->arg1 = nil;
  7752.    FLISTIDENT_aset_(noname1936);
  7753.    if (noname1936->state == -1) goto after_loop;
  7754.    0 /* No return value from iter call */;
  7755.   }
  7756.  }
  7757.  after_loop: ;
  7758. }
  7759.  
  7760.  
  7761. void FLISTIDENT_clear(FLISTIDENT self) {
  7762.  if (FLISTIDENT_is_em(self)) {
  7763.   return;
  7764.  }
  7765.  else {
  7766.   FLISTIDENT_aclear(self);
  7767.   self->loc_17 = 0;
  7768.  }
  7769.  if (!FLISTIDENT_invar(self)) {
  7770.   fprintf(stderr,"Failed invariant FLIST{IDENT}::invariant:BOOL ../Library/flist.sa:117:8\n");
  7771.   exit(16);
  7772.  }
  7773. }
  7774.  
  7775.  
  7776. void FLISTIDENT_aref_(FLISTIDENT self, INT ind_1937, IDENT val_1938) {
  7777.  BOOL local0;
  7778.  INT local1;
  7779.  INT local2;
  7780.  if ((!((self==((FLISTIDENT) NULL))))) {
  7781.   local1 = 0;
  7782.   local2 = (self->asize);
  7783.   local0 = INT_is_bet_INT_I(ind_1937, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  7784.  } else {
  7785.   local0 = FALSE;
  7786.  }
  7787.  if (!(local0)) {
  7788.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:38:7\n");
  7789.   exit(16);
  7790.  }
  7791.  if (ind_1937<0||ind_1937>=self->asize) {
  7792.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:38:7\n");
  7793.   exit(16);
  7794.  }
  7795.  self->arr_part[ind_1937] = val_1938;
  7796. }
  7797.  
  7798.  
  7799. void FLISTIDENT_aset__1939(FLISTIDENT self, INT ind_1940, IDENT val_1941) {
  7800.  BOOL local0;
  7801.  INT local1;
  7802.  if ((!((self==((FLISTIDENT) NULL))))) {
  7803.   local1 = 0;
  7804.   local0 = INT_is_bet_INT_I(ind_1940, local1, (c_INT_minus_INT_INT_chk(self->loc_17,1)));
  7805.  } else {
  7806.   local0 = FALSE;
  7807.  }
  7808.  if (!(local0)) {
  7809.   fprintf(stderr,"Violation of precondition ../Library/flist.sa:73:7\n");
  7810.   exit(16);
  7811.  }
  7812.  FLISTIDENT_aref_(self, ind_1940, val_1941);
  7813.  if (!FLISTIDENT_invar(self)) {
  7814.   fprintf(stderr,"Failed invariant FLIST{IDENT}::invariant:BOOL ../Library/flist.sa:73:7\n");
  7815.   exit(16);
  7816.  }
  7817. }
  7818.  
  7819.  
  7820. FLISTIDENT FLISTIDENT_push_(FLISTIDENT self, IDENT e_1942) {
  7821.  FLISTIDENT noname1943;
  7822.  FLISTIDENT r_1944 = ((FLISTIDENT) NULL);
  7823.  FLISTIDENT noname1945;
  7824.  FLISTIDENT noname1946;
  7825.  FLISTIDENT local0;
  7826.  INT local1;
  7827.  FLISTIDENT local2;
  7828.  INT local3;
  7829.  IDENT local4;
  7830.  INT local5;
  7831.  if ((self==((FLISTIDENT) NULL))) {
  7832.   local0 = ((FLISTIDENT) sbi_arr_alloc(sizeof(struct FLISTIDENT_struct), FLISTIDENT_tag, sizeof(IDENT) , 5));
  7833.   local0->asize = 5;
  7834.   r_1944 = local0;
  7835.  }
  7836.  else {
  7837.   local1 = self->loc_17;
  7838.   if ((local1<(self->asize))) {
  7839.    r_1944 = self;
  7840.   }
  7841.   else {
  7842.    local3 = 2;
  7843.    local2 = ((FLISTIDENT) sbi_arr_alloc(sizeof(struct FLISTIDENT_struct), FLISTIDENT_tag, sizeof(IDENT) , (c_INT_times_INT_INT_chk(local3,(self->asize)))));
  7844.    local2->asize = (c_INT_times_INT_INT_chk(local3,(self->asize)));
  7845.    r_1944 = local2;
  7846.    r_1944->loc_17 = self->loc_17;
  7847.    {
  7848.     struct FLISTIDENT_elt_IDENT_frame_struct temp1947_0;
  7849.     FLISTIDENT_elt_IDENT_frame 
  7850.     noname1948 = &temp1947_0;
  7851.     struct FLISTIDENT_aset__frame_struct temp1947_1;
  7852.     FLISTIDENT_aset__frame 
  7853.     noname1949 = &temp1947_1;
  7854.     noname1948->state = 0;
  7855.     noname1949->state = 0;
  7856.     while (1) {
  7857.      if (noname1949->state == 0) {
  7858.       noname1946 = r_1944;
  7859.       noname1949->arg0 = noname1946;
  7860.      }
  7861.      if (noname1948->state == 0) {
  7862.       noname1945 = self;
  7863.       noname1948->arg0 = noname1945;
  7864.      }
  7865.      local4 = FLISTIDENT_elt_IDENT(noname1948);
  7866.      if (noname1948->state == -1) goto after_loop;
  7867.      noname1949->arg1 = local4;
  7868.      FLISTIDENT_aset_(noname1949);
  7869.      if (noname1949->state == -1) goto after_loop;
  7870.      0 /* No return value from iter call */;
  7871.     }
  7872.    }
  7873.    after_loop: ;
  7874.    FLISTIDENT_clear(self);
  7875.   }
  7876.  }
  7877.  r_1944->loc_17 = (c_INT_plus_INT_INT_chk(r_1944->loc_17,1));
  7878.  local5 = (c_INT_minus_INT_INT_chk(r_1944->loc_17,1));
  7879.  FLISTIDENT_aset__1939(r_1944, local5, e_1942);
  7880.  return r_1944;
  7881.  if (!FLISTIDENT_invar(self)) {
  7882.   fprintf(stderr,"Failed invariant FLIST{IDENT}::invariant:BOOL ../Library/flist.sa:79:7\n");
  7883.   exit(16);
  7884.  }
  7885. }
  7886.  
  7887.  
  7888. TR_DIST_STMT PARSER_dist_stmt(PARSER self) {
  7889.  TR_DIST_STMT noname1950;
  7890.  TR_DIST_STMT res;
  7891.  FLISTTR_EXPR local0;
  7892.  FLISTIDENT local1;
  7893.  FLISTTR_EXPR local2;
  7894.  FLISTIDENT local3;
  7895.  PARSER_enter_STR(self, ((STR) &diststatement));
  7896.  res = TR_DIST_STMT_cre(((TR_DIST_STMT) NULL));
  7897.  res->source_38 = PARSER_source_lo(self);
  7898.  PARSER_match_INT(self, shared_PARSER_di);
  7899.  if ((!(PARSER_check_INT(self, shared_PARSER_do_tok)))) {
  7900.   local0 = res->exprs;
  7901.   res->exprs = FLISTTR_EXPR_pus(local0, PARSER_expr_TR_EXPR(self));
  7902.   PARSER_match_INT(self, shared_PARSER_as_tok);
  7903.   PARSER_match_INT(self, shared_PARSER_id);
  7904.   local1 = res->ids;
  7905.   res->ids = FLISTIDENT_push_(local1, PARSER_ident_IDENT(self));
  7906.   while (1) {
  7907.    if (PARSER_check_INT(self, shared_PARSER_do_tok)) {
  7908.     goto after_loop;
  7909.    }
  7910.    PARSER_match_INT(self, shared_PARSER_co);
  7911.    local2 = res->exprs;
  7912.    res->exprs = FLISTTR_EXPR_pus(local2, PARSER_expr_TR_EXPR(self));
  7913.    PARSER_match_INT(self, shared_PARSER_as_tok);
  7914.    PARSER_match_INT(self, shared_PARSER_id);
  7915.    local3 = res->ids;
  7916.    res->ids = FLISTIDENT_push_(local3, PARSER_ident_IDENT(self));
  7917.   }
  7918.   after_loop: ;
  7919.  }
  7920.  res->stmts = PARSER_stmt_list(self);
  7921.  PARSER_match_INT(self, shared_PARSER_en);
  7922.  return res;
  7923. }
  7924.  
  7925.  
  7926. TR_FORK_STMT TR_FORK_STMT_cre(TR_FORK_STMT self) {
  7927.  TR_FORK_STMT noname1952;
  7928.  TR_FORK_STMT local0;
  7929.  local0 = ((TR_FORK_STMT) sbi_alloc(sizeof(struct TR_FORK_STMT_struct), TR_FORK_STMT_tag));
  7930.  return local0;
  7931. }
  7932.  
  7933.  
  7934. TR_EXPR_STMT TR_EXPR_STMT_cre(TR_EXPR_STMT self) {
  7935.  TR_EXPR_STMT noname1953;
  7936.  TR_EXPR_STMT local0;
  7937.  local0 = ((TR_EXPR_STMT) sbi_alloc(sizeof(struct TR_EXPR_STMT_struct), TR_EXPR_STMT_tag));
  7938.  return local0;
  7939. }
  7940.  
  7941.  
  7942. TR_BREAK_EXPR TR_BREAK_EXPR_cr(TR_BREAK_EXPR self) {
  7943.  TR_BREAK_EXPR noname1954;
  7944.  TR_BREAK_EXPR local0;
  7945.  local0 = ((TR_BREAK_EXPR) sbi_alloc(sizeof(struct TR_BREAK_EXPR_struct), TR_BREAK_EXPR_tag));
  7946.  return local0;
  7947. }
  7948.  
  7949.  
  7950. TR_EXPR_STMT PARSER_break_stm(PARSER self) {
  7951.  TR_EXPR_STMT noname1955;
  7952.  TR_EXPR_STMT res;
  7953.  res = TR_EXPR_STMT_cre(((TR_EXPR_STMT) NULL));
  7954.  res->source_38 = PARSER_source_lo(self);
  7955.  res->e = ((TR_EXPR) TR_BREAK_EXPR_cr(((TR_BREAK_EXPR) NULL)));
  7956.  return res;
  7957. }
  7958.  
  7959.  
  7960. TR_IF_STMT PARSER_make_if_s(PARSER self, TR_EXPR test_1956, TR_STMT then_part_1957, TR_STMT else_part_1958) {
  7961.  TR_IF_STMT noname1959;
  7962.  TR_IF_STMT res;
  7963.  res = TR_IF_STMT_creat(((TR_IF_STMT) NULL));
  7964.  res->source_38 = PARSER_source_lo(self);
  7965.  res->test_40 = test_1956;
  7966.  res->then_part = then_part_1957;
  7967.  res->else_part = else_part_1958;
  7968.  return res;
  7969. }
  7970.  
  7971.  
  7972. TR_ASSIGN_STMT TR_ASSIGN_STMT_c(TR_ASSIGN_STMT self) {
  7973.  TR_ASSIGN_STMT noname1960;
  7974.  TR_ASSIGN_STMT local0;
  7975.  local0 = ((TR_ASSIGN_STMT) sbi_alloc(sizeof(struct TR_ASSIGN_STMT_struct), TR_ASSIGN_STMT_tag));
  7976.  return local0;
  7977. }
  7978.  
  7979.  
  7980. TR_DEC_STMT TR_DEC_STMT_crea(TR_DEC_STMT self) {
  7981.  TR_DEC_STMT noname1961;
  7982.  TR_DEC_STMT local0;
  7983.  local0 = ((TR_DEC_STMT) sbi_alloc(sizeof(struct TR_DEC_STMT_struct), TR_DEC_STMT_tag));
  7984.  return local0;
  7985. }
  7986.  
  7987.  
  7988. TR_STMT PARSER_stmt_TR_STMT(PARSER self) {
  7989.  TR_STMT noname1962;
  7990.  TR_STMT res = ((TR_STMT) NULL);
  7991.  SFILE_ID was_at = SFILE_ID_zero;
  7992.  INT noname1963 = ((INT) 0);
  7993.  TR_FORK_STMT r_1964;
  7994.  TR_EXPR x;
  7995.  TR_TYPE_SPEC tp_1965 = ((TR_TYPE_SPEC) NULL);
  7996.  TR_ASSIGN_STMT r_1966;
  7997.  TR_DEC_STMT sdecl_res;
  7998.  TR_ASSIGN_STMT r_1967;
  7999.  TR_FORK_STMT r_1968;
  8000.  TR_DEC_STMT decl_res;
  8001.  TR_DEC_STMT newdec;
  8002.  TR_TYPE_SPEC tp2;
  8003.  TR_STMT p;
  8004.  TR_EXPR_STMT r_1969;
  8005.  TR_STMT local0;
  8006.  TR_EXPR local1;
  8007.  TR_STMT local2;
  8008.  TR_EXPR local3;
  8009.  TR_EXPR_STMT local4;
  8010.  TR_STMT local5;
  8011.  TR_STMT local6;
  8012.  TR_STMT local7;
  8013.  PARSER_enter_STR(self, ((STR) &statement));
  8014.  was_at = PARSER_source_lo(self);
  8015.  noname1963 = self->next_8.val_16;
  8016.  switch (noname1963) {
  8017.   case 17:
  8018.    PARSER_fetch(self);
  8019.    res = ((TR_STMT) PARSER_if_stmt_T(self));
  8020.    break;
  8021.   case 22:
  8022.    res = ((TR_STMT) PARSER_loop_stmt(self));
  8023.    break;
  8024.   case 33:
  8025.    res = ((TR_STMT) PARSER_return_st(self));
  8026.    break;
  8027.   case 47:
  8028.    res = ((TR_STMT) PARSER_yield_stm(self));
  8029.    break;
  8030.   case 29:
  8031.    PARSER_fetch(self);
  8032.    res = ((TR_STMT) TR_QUIT_STMT_cre(((TR_QUIT_STMT) NULL)));
  8033.    local0 = res;
  8034.    (*TR_STMT_source_S[local0->header.tag+TR_STMT_source_S_offset])(local0, PARSER_source_lo(self));
  8035.    break;
  8036.   case 8:
  8037.    res = ((TR_STMT) PARSER_case_stmt(self));
  8038.    break;
  8039.   case 41:
  8040.    res = ((TR_STMT) PARSER_typecase_(self));
  8041.    break;
  8042.   case 5:
  8043.    res = ((TR_STMT) PARSER_assert_st(self));
  8044.    break;
  8045.   case 28:
  8046.    res = ((TR_STMT) PARSER_protect_s(self));
  8047.    break;
  8048.   case 30:
  8049.    res = ((TR_STMT) PARSER_raise_stm(self));
  8050.    break;
  8051.   case 87:
  8052.    res = ((TR_STMT) PARSER_cobegin_s(self));
  8053.    break;
  8054.   case 84:
  8055.    res = ((TR_STMT) PARSER_lock_stmt(self));
  8056.    break;
  8057.   case 85:
  8058.    res = ((TR_STMT) PARSER_unlock_st(self));
  8059.    break;
  8060.   case 86:
  8061.    res = ((TR_STMT) PARSER_try_stmt_(self));
  8062.    break;
  8063.   case 88:
  8064.    res = ((TR_STMT) PARSER_with_near(self));
  8065.    break;
  8066.   case 95:
  8067.    res = ((TR_STMT) PARSER_dist_stmt(self));
  8068.    break;
  8069.   case 83:
  8070.    PARSER_enter_STR(self, ((STR) &forkstatementwit));
  8071.    PARSER_fetch(self);
  8072.    r_1964 = TR_FORK_STMT_cre(((TR_FORK_STMT) NULL));
  8073.    r_1964->source_38 = PARSER_source_lo(self);
  8074.    r_1964->lhs = ((TR_EXPR) NULL);
  8075.    r_1964->rhs = PARSER_expr_TR_EXPR(self);
  8076.    res = ((TR_STMT) r_1964);
  8077.    PARSER_exit(self);
  8078.    break;
  8079.   case 46:
  8080.    PARSER_enter_STR(self, ((STR) &whileexpression_1970));
  8081.    PARSER_fetch(self);
  8082.    PARSER_match_INT(self, shared_PARSER_lp);
  8083.    local1 = PARSER_expr_TR_EXPR(self);
  8084.    local2 = ((TR_STMT) NULL);
  8085.    res = ((TR_STMT) PARSER_make_if_s(self, local1, local2, ((TR_STMT) PARSER_break_stm(self))));
  8086.    PARSER_match_INT(self, shared_PARSER_rp);
  8087.    PARSER_exit(self);
  8088.    break;
  8089.   case 42:
  8090.    PARSER_enter_STR(self, ((STR) &untilexpression_1971));
  8091.    PARSER_fetch(self);
  8092.    PARSER_match_INT(self, shared_PARSER_lp);
  8093.    local3 = PARSER_expr_TR_EXPR(self);
  8094.    local4 = PARSER_break_stm(self);
  8095.    res = ((TR_STMT) PARSER_make_if_s(self, local3, ((TR_STMT) local4), ((TR_STMT) NULL)));
  8096.    PARSER_match_INT(self, shared_PARSER_rp);
  8097.    PARSER_exit(self);
  8098.    break;
  8099.   case 7:
  8100.    PARSER_fetch(self);
  8101.    res = ((TR_STMT) PARSER_break_stm(self));
  8102.    break;
  8103.   default: ;
  8104.    x = PARSER_expr_TR_EXPR(self);
  8105.    if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  8106.     if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_as)) {
  8107.      tp_1965 = PARSER_type_spec_1639(self);
  8108.     }
  8109.     if (PARSER_check_INT(self, shared_PARSER_as)) {
  8110.      PARSER_enter_STR(self, ((STR) &assignmentwithde));
  8111.      r_1966 = TR_ASSIGN_STMT_c(((TR_ASSIGN_STMT) NULL));
  8112.      r_1966->source_38 = PARSER_source_lo(self);
  8113.      r_1966->name_19 = PARSER_ident_of_(self, x);
  8114.      r_1966->tp = tp_1965;
  8115.      r_1966->rhs = PARSER_expr_TR_EXPR(self);
  8116.      res = ((TR_STMT) r_1966);
  8117.      PARSER_exit(self);
  8118.     }
  8119.     else {
  8120.      PARSER_enter_STR(self, ((STR) &singlevariablede));
  8121.      sdecl_res = TR_DEC_STMT_crea(((TR_DEC_STMT) NULL));
  8122.      sdecl_res->source_38 = PARSER_source_lo(self);
  8123.      sdecl_res->name_19 = PARSER_ident_of_(self, x);
  8124.      sdecl_res->tp = tp_1965;
  8125.      res = ((TR_STMT) sdecl_res);
  8126.      PARSER_exit(self);
  8127.     }
  8128.    }
  8129.    else {
  8130.     if (PARSER_check_INT(self, shared_PARSER_as)) {
  8131.      PARSER_enter_STR(self, ((STR) &assignment));
  8132.      r_1967 = TR_ASSIGN_STMT_c(((TR_ASSIGN_STMT) NULL));
  8133.      r_1967->source_38 = PARSER_source_lo(self);
  8134.      r_1967->lhs_expr = x;
  8135.      r_1967->rhs = PARSER_expr_TR_EXPR(self);
  8136.      res = ((TR_STMT) r_1967);
  8137.      PARSER_exit(self);
  8138.     }
  8139.     else {
  8140.      if (PARSER_check_INT(self, shared_PARSER_fo)) {
  8141.       PARSER_enter_STR(self, ((STR) &forkstatementwithLHS));
  8142.       r_1968 = TR_FORK_STMT_cre(((TR_FORK_STMT) NULL));
  8143.       r_1968->source_38 = PARSER_source_lo(self);
  8144.       r_1968->lhs = x;
  8145.       r_1968->rhs = PARSER_expr_TR_EXPR(self);
  8146.       res = ((TR_STMT) r_1968);
  8147.       PARSER_exit(self);
  8148.      }
  8149.      else {
  8150.       if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_co)) {
  8151.        PARSER_enter_STR(self, ((STR) &declaration_1972));
  8152.        decl_res = TR_DEC_STMT_crea(((TR_DEC_STMT) NULL));
  8153.        decl_res->source_38 = PARSER_source_lo(self);
  8154.        decl_res->name_19 = PARSER_ident_of_(self, x);
  8155.        res = ((TR_STMT) decl_res);
  8156.        while (1) {
  8157.         if (PARSER_check_INT(self, shared_PARSER_co)) {
  8158.         }
  8159.         else {
  8160.          goto after_loop;
  8161.         }
  8162.         newdec = TR_DEC_STMT_crea(((TR_DEC_STMT) NULL));
  8163.         newdec->source_38 = PARSER_source_lo(self);
  8164.         PARSER_match_INT(self, shared_PARSER_id);
  8165.         newdec->name_19 = PARSER_ident_IDENT(self);
  8166.         if ((res==((TR_STMT) NULL))) {
  8167.          res = ((TR_STMT) newdec);
  8168.         }
  8169.         else {
  8170.          local5 = res;
  8171.          (*TR_STMT_append_T[local5->header.tag+TR_STMT_append_T_offset])(local5, ((TR_STMT) newdec));
  8172.         }
  8173.        }
  8174.        after_loop: ;
  8175.        PARSER_match_INT(self, shared_PARSER_co_1647);
  8176.        tp2 = PARSER_type_spec_1639(self);
  8177.        p = ((TR_STMT) decl_res);
  8178.        while (1) {
  8179.         if ((p==((TR_STMT) NULL))) {
  8180.          goto after_loop_1974;
  8181.         }
  8182.         if (p==NULL) {
  8183.         } else
  8184.         switch (p->header.tag) {
  8185.          case TR_DEC_STMT_tag:
  8186.           ((TR_DEC_STMT) p)->tp = tp2; break;
  8187.          default: ;
  8188.           fprintf(stderr,"No applicable type in typecase ./parse.sa:1517:23\n");
  8189.           exit(16);
  8190.         }
  8191.         local6 = p;
  8192.         p = (*TR_STMT_next_TR_STMT[local6->header.tag+TR_STMT_next_TR_STMT_offset])(local6);
  8193.        }
  8194.        after_loop_1974: ;
  8195.        PARSER_exit(self);
  8196.       }
  8197.       else {
  8198.        r_1969 = TR_EXPR_STMT_cre(((TR_EXPR_STMT) NULL));
  8199.        r_1969->source_38 = PARSER_source_lo(self);
  8200.        r_1969->e = x;
  8201.        res = ((TR_STMT) r_1969);
  8202.       }
  8203.      }
  8204.     }
  8205.    }
  8206.  }
  8207.  local7 = res;
  8208.  (*TR_STMT_source_S[local7->header.tag+TR_STMT_source_S_offset])(local7, was_at);
  8209.  PARSER_exit(self);
  8210.  return res;
  8211. }
  8212.  
  8213.  
  8214. TR_STMT PARSER_stmt_list(PARSER self) {
  8215.  TR_STMT noname1976;
  8216.  TR_STMT res = ((TR_STMT) NULL);
  8217.  TR_STMT local0;
  8218.  PARSER_enter_STR(self, ((STR) &listofstatements));
  8219.  while (1) {
  8220.   if (PARSER_is_stmt_s(self, self->next_8)) {
  8221.    if ((res==((TR_STMT) NULL))) {
  8222.     res = PARSER_stmt_TR_STMT(self);
  8223.    }
  8224.    else {
  8225.     local0 = res;
  8226.     (*TR_STMT_append_T[local0->header.tag+TR_STMT_append_T_offset])(local0, PARSER_stmt_TR_STMT(self));
  8227.    }
  8228.   }
  8229.   if (PARSER_check_INT(self, shared_PARSER_se)) {
  8230.   }
  8231.   else {
  8232.    if (PARSER_is_stmt_s(self, self->next_8)) {
  8233.     PARSER_exp_error_STR(self, ((STR) &semicolon_1978));
  8234.    }
  8235.    else {
  8236.     goto after_loop;
  8237.    }
  8238.   }
  8239.  }
  8240.  after_loop: ;
  8241.  PARSER_exit(self);
  8242.  return res;
  8243. }
  8244.  
  8245.  
  8246. TR_ROUT_DEF PARSER_rout_def_(PARSER self, TOKEN mode_1979) {
  8247.  TR_ROUT_DEF noname1980;
  8248.  TR_ROUT_DEF res = ((TR_ROUT_DEF) NULL);
  8249.  TR_ARG_DEC local0;
  8250.  PARSER_enter_STR(self, ((STR) &routineoriterdef));
  8251.  if (TOKEN_is_eq_INT_BOOL(mode_1979, shared_PARSER_re)) {
  8252.   PARSER_error_STR(self, ((STR) &readonlynotallow_1981));
  8253.  }
  8254.  res = TR_ROUT_DEF_crea(((TR_ROUT_DEF) NULL));
  8255.  res->source_38 = PARSER_source_lo(self);
  8256.  res->name_19 = PARSER_rout_or_i(self);
  8257.  res->is_private = TOKEN_is_eq_INT_BOOL(mode_1979, shared_PARSER_pr);
  8258.  if (PARSER_check_INT(self, shared_PARSER_lp)) {
  8259.   PARSER_enter_STR(self, ((STR) &arguments_1982));
  8260.   while (1) {
  8261.    if ((res->args_dec==((TR_ARG_DEC) NULL))) {
  8262.     res->args_dec = PARSER_arg_dec_B(self, IDENT_is_iter_BOOL(res->name_19));
  8263.    }
  8264.    else {
  8265.     local0 = res->args_dec;
  8266.     TR_ARG_DEC_appen(local0, PARSER_arg_dec_B(self, IDENT_is_iter_BOOL(res->name_19)));
  8267.    }
  8268.    if (PARSER_check_INT(self, shared_PARSER_co)) {
  8269.    }
  8270.    else {
  8271.     goto after_loop;
  8272.    }
  8273.   }
  8274.   after_loop: ;
  8275.   PARSER_match_INT(self, shared_PARSER_rp);
  8276.   PARSER_exit(self);
  8277.  }
  8278.  if (PARSER_check_INT(self, shared_PARSER_co_1647)) {
  8279.   PARSER_enter_STR(self, ((STR) &returntypespecif_1984));
  8280.   res->ret_dec = PARSER_type_spec_1639(self);
  8281.   PARSER_exit(self);
  8282.  }
  8283.  if (PARSER_check_INT(self, shared_PARSER_pr_1985)) {
  8284.   PARSER_enter_STR(self, ((STR) &preconditiondecl));
  8285.   res->pre_e = PARSER_expr_TR_EXPR(self);
  8286.   PARSER_exit(self);
  8287.  }
  8288.  if (PARSER_check_INT(self, shared_PARSER_po_1986)) {
  8289.   PARSER_enter_STR(self, ((STR) &postconditiondec));
  8290.   res->post_e = PARSER_expr_TR_EXPR(self);
  8291.   PARSER_exit(self);
  8292.  }
  8293.  if (PARSER_check_INT(self, shared_PARSER_is_tok)) {
  8294.   PARSER_enter_STR(self, ((STR) &routineiterbody));
  8295.   res->stmts = PARSER_stmt_list(self);
  8296.   res->is_abstract = FALSE;
  8297.   PARSER_match_INT(self, shared_PARSER_en);
  8298.   PARSER_exit(self);
  8299.  }
  8300.  else {
  8301.   res->is_abstract = TRUE;
  8302.  }
  8303.  PARSER_exit(self);
  8304.  return res;
  8305. }
  8306.  
  8307.  
  8308. TR_CLASS_ELT PARSER_class_elt(PARSER self) {
  8309.  TR_CLASS_ELT noname1987;
  8310.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  8311.  TOKEN mode_1988 = TOKEN_zero;
  8312.  INT noname1989 = ((INT) 0);
  8313.  BOOL local0;
  8314.  PARSER_enter_STR(self, ((STR) &classelement));
  8315.  mode_1988 = TOKEN_create_INT(TOKEN_zero, shared_PARSER_nu);
  8316.  if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_pr)) {
  8317.   local0 = TRUE;
  8318.  } else {
  8319.   local0 = TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_re);
  8320.  }
  8321.  if (local0) {
  8322.   mode_1988 = self->next_8;
  8323.   PARSER_fetch(self);
  8324.  }
  8325.  noname1989 = self->next_8.val_16;
  8326.  switch (noname1989) {
  8327.   case 18:
  8328.    res = PARSER_include_c(self, mode_1988);
  8329.    break;
  8330.   case 10:
  8331.    res = PARSER_const_def(self, mode_1988);
  8332.    break;
  8333.   case 37:
  8334.    res = PARSER_shared_de(self, mode_1988);
  8335.    break;
  8336.   case 6:
  8337.    res = PARSER_attr_def_(self, mode_1988);
  8338.    break;
  8339.   default: ;
  8340.    res = ((TR_CLASS_ELT) PARSER_rout_def_(self, mode_1988));
  8341.  }
  8342.  PARSER_exit(self);
  8343.  return res;
  8344. }
  8345.  
  8346.  
  8347. TR_CLASS_ELT PARSER_class_elt_1990(PARSER self) {
  8348.  TR_CLASS_ELT noname1991;
  8349.  TR_CLASS_ELT res = ((TR_CLASS_ELT) NULL);
  8350.  TR_CLASS_ELT local0;
  8351.  BOOL local1;
  8352.  PARSER_enter_STR(self, ((STR) &listofclasselements));
  8353.  while (1) {
  8354.   if (PARSER_is_class__1685(self, self->next_8)) {
  8355.    if ((res==((TR_CLASS_ELT) NULL))) {
  8356.     res = PARSER_class_elt(self);
  8357.    }
  8358.    else {
  8359.     local0 = res;
  8360.     (*TR_CLASS_ELT_app[local0->header.tag+TR_CLASS_ELT_app_offset])(local0, PARSER_class_elt(self));
  8361.    }
  8362.   }
  8363.   if (PARSER_check_INT(self, shared_PARSER_se)) {
  8364.   }
  8365.   else {
  8366.    if (PARSER_is_class__1685(self, self->next_8)) {
  8367.     PARSER_exp_error_STR(self, ((STR) &semicolon_1993));
  8368.    }
  8369.    else {
  8370.     goto after_loop;
  8371.    }
  8372.   }
  8373.  }
  8374.  after_loop: ;
  8375.  if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_en)) {
  8376.   PARSER_exp_error_STR(self, ((STR) &semicolon_1994));
  8377.   while (1) {
  8378.    if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_en)) {
  8379.     local1 = TOKEN_is_neq_INT(self->next_8, shared_PARSER_eo);
  8380.    } else {
  8381.     local1 = FALSE;
  8382.    }
  8383.    if (local1) {
  8384.    }
  8385.    else {
  8386.     goto after_loop_1995;
  8387.    }
  8388.    PARSER_fetch(self);
  8389.   }
  8390.   after_loop_1995: ;
  8391.  }
  8392.  PARSER_exit(self);
  8393.  return res;
  8394. }
  8395.  
  8396.  
  8397. TR_CLASS_DEF PARSER_class_def(PARSER self) {
  8398.  TR_CLASS_DEF noname1997;
  8399.  TR_CLASS_DEF res;
  8400.  INT noname1998 = ((INT) 0);
  8401.  TR_PARAM_DEC local0;
  8402.  PARSER_enter_STR(self, ((STR) &class_1999));
  8403.  res = TR_CLASS_DEF_cre(((TR_CLASS_DEF) NULL));
  8404.  res->source_38 = PARSER_source_lo(self);
  8405.  noname1998 = self->next_8.val_16;
  8406.  switch (noname1998) {
  8407.   case 94:
  8408.    PARSER_fetch(self);
  8409.    res->kind = shared_TR_CLASS__2000;
  8410.    break;
  8411.   case 43:
  8412.    PARSER_fetch(self);
  8413.    res->kind = shared_TR_CLASS__2001;
  8414.    break;
  8415.   case 15:
  8416.    PARSER_fetch(self);
  8417.    res->kind = shared_TR_CLASS__2002;
  8418.    break;
  8419.   default: ;
  8420.    res->kind = shared_TR_CLASS__2003;
  8421.  }
  8422.  PARSER_match_INT(self, shared_PARSER_cl);
  8423.  if (PARSER_check_INT(self, shared_PARSER_id)) {
  8424.   if ((!(PARSER_is_class_(self, PARSER_ident_IDENT(self))))) {
  8425.    PARSER_exp_error_STR(self, ((STR) &classname_2004));
  8426.   }
  8427.  }
  8428.  else {
  8429.   PARSER_exp_error_STR(self, ((STR) &concreteclassname));
  8430.   if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ty)) {
  8431.    PARSER_fetch(self);
  8432.   }
  8433.  }
  8434.  res->name_19 = PARSER_ident_IDENT(self);
  8435.  if (PARSER_check_INT(self, shared_PARSER_lb)) {
  8436.   while (1) {
  8437.    if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_id)) {
  8438.     goto after_loop;
  8439.    }
  8440.    if ((res->params==((TR_PARAM_DEC) NULL))) {
  8441.     res->params = PARSER_param_dec(self);
  8442.    }
  8443.    else {
  8444.     local0 = res->params;
  8445.     TR_PARAM_DEC_app(local0, PARSER_param_dec(self));
  8446.    }
  8447.    if ((!(PARSER_check_INT(self, shared_PARSER_co)))) {
  8448.     goto after_loop;
  8449.    }
  8450.   }
  8451.   after_loop: ;
  8452.   PARSER_match_INT(self, shared_PARSER_rb);
  8453.  }
  8454.  if (PARSER_check_INT(self, shared_PARSER_is)) {
  8455.   res->under = PARSER_type_spec(self);
  8456.  }
  8457.  PARSER_match_INT(self, shared_PARSER_is_tok);
  8458.  res->body = PARSER_class_elt_1990(self);
  8459.  PARSER_match_INT(self, shared_PARSER_en);
  8460.  PARSER_exit(self);
  8461.  return res;
  8462. }
  8463.  
  8464.  
  8465. void SFILE_ID_close_file(SFILE_ID self) {
  8466.  FLISTINT local0;
  8467.  INT local1;
  8468.  INT local2;
  8469.  if ((!((shared_SFILE_ID__1255==((FSTR) NULL))))) {
  8470.   local0 = shared_SFILE_ID_;
  8471.   local1 = FLISTINT_size_INT(shared_SFILE_ID_);
  8472.   local2 = (c_INT_minus_INT_INT_chk(local1,1));
  8473.   FLISTINT_aset_IN(local0, local2, shared_SFILE_ID_line);
  8474.   SFILE_ID_source_FSTR(self, ((FSTR) NULL));
  8475.  }
  8476. }
  8477.  
  8478.  
  8479. void SCANNER_close_file(SCANNER self) {
  8480.  SFILE_ID_close_file(SFILE_ID_zero);
  8481. }
  8482.  
  8483.  
  8484. void PARSER_close_file(PARSER self) {
  8485.  SCANNER_close_file(self->scanner);
  8486. }
  8487.  
  8488.  
  8489. TR_CLASS_DEF PARSER_source_fi(PARSER self) {
  8490.  TR_CLASS_DEF noname2006;
  8491.  TR_CLASS_DEF res = ((TR_CLASS_DEF) NULL);
  8492.  PARSER_enter_STR(self, ((STR) &sourcefile));
  8493.  while (1) {
  8494.   if (PARSER_is_type_o(self, self->next_8)) {
  8495.    if (TOKEN_is_eq_INT_BOOL(self->next_8, shared_PARSER_ty_1680)) {
  8496.     if ((res==((TR_CLASS_DEF) NULL))) {
  8497.      res = PARSER_abstract__1678(self);
  8498.     }
  8499.     else {
  8500.      TR_CLASS_DEF_app(res, PARSER_abstract__1678(self));
  8501.     }
  8502.    }
  8503.    else {
  8504.     if ((res==((TR_CLASS_DEF) NULL))) {
  8505.      res = PARSER_class_def(self);
  8506.     }
  8507.     else {
  8508.      TR_CLASS_DEF_app(res, PARSER_class_def(self));
  8509.     }
  8510.    }
  8511.   }
  8512.   if (PARSER_check_INT(self, shared_PARSER_se)) {
  8513.   }
  8514.   else {
  8515.    if (PARSER_is_type_o(self, self->next_8)) {
  8516.     PARSER_exp_error_STR(self, ((STR) &semicolon_2008));
  8517.    }
  8518.    else {
  8519.     if (TOKEN_is_neq_INT(self->next_8, shared_PARSER_eo)) {
  8520.      PARSER_exp_error_STR(self, ((STR) &endoffile_2009));
  8521.     }
  8522.     goto after_loop;
  8523.    }
  8524.   }
  8525.  }
  8526.  after_loop: ;
  8527.  PARSER_close_file(self);
  8528.  PARSER_exit(self);
  8529.  return res;
  8530. }
  8531.  
  8532.  
  8533. STR FMAPSTRSTR_get_S(FMAPSTRSTR self, STR k) {
  8534.  STR noname2010;
  8535.  INT h = ((INT) 0);
  8536.  STR tk;
  8537.  STR tk_2011;
  8538.  INT local0;
  8539.  INT local1;
  8540.  INT local2;
  8541.  INT local3;
  8542.  if ((self==((FMAPSTRSTR) NULL))) {
  8543.   return ((STR) NULL);
  8544.  }
  8545.  local0 = FMAPSTRSTR_key_h(self, k);
  8546.  local1 = (self->asize);
  8547.  h = (local0&(c_INT_minus_INT_INT_chk(local1,2)));
  8548.  while (1) {
  8549.   tk = (TUPSTRSTR_blob=FMAPSTRSTR_aget_(self, h)).t1;
  8550.   if (FMAPSTRSTR_key_e(self, tk, k)) {
  8551.    return (TUPSTRSTR_blob=FMAPSTRSTR_aget_(self, h)).t2;
  8552.   }
  8553.   else {
  8554.    if (FMAPSTRSTR_key_e(self, tk, FMAPSTRSTR_key_n(self))) {
  8555.     goto after_loop;
  8556.    }
  8557.   }
  8558.   h = (c_INT_plus_INT_INT_chk(h,1));
  8559.  }
  8560.  after_loop: ;
  8561.  local2 = (self->asize);
  8562.  if ((h==(c_INT_minus_INT_INT_chk(local2,1)))) {
  8563.   h = 0;
  8564.   while (1) {
  8565.    tk_2011 = (TUPSTRSTR_blob=FMAPSTRSTR_aget_(self, h)).t1;
  8566.    if (FMAPSTRSTR_key_e(self, tk_2011, k)) {
  8567.     return (TUPSTRSTR_blob=FMAPSTRSTR_aget_(self, h)).t2;
  8568.    }
  8569.    else {
  8570.     if (FMAPSTRSTR_key_e(self, tk_2011, FMAPSTRSTR_key_n(self))) {
  8571.      goto after_loop_2013;
  8572.     }
  8573.    }
  8574.    h = (c_INT_plus_INT_INT_chk(h,1));
  8575.   }
  8576.   after_loop_2013: ;
  8577.   local3 = (self->asize);
  8578.   if (!((h!=(c_INT_minus_INT_INT_chk(local3,1))))) {
  8579.    fprintf(stderr,"Violation of assertion ../Library/fmap.sa:150:15\n");
  8580.    exit(16);
  8581.   }
  8582.  }
  8583.  return ((STR) NULL);
  8584.  if (!FMAPSTRSTR_invar(self)) {
  8585.   fprintf(stderr,"Failed invariant FMAP{STR,STR}::invariant:BOOL ../Library/fmap.sa:136:6\n");
  8586.   exit(16);
  8587.  }
  8588. }
  8589.  
  8590.  
  8591. INT TR_PARAM_DEC_siz(TR_PARAM_DEC self) {
  8592.  INT noname2015 = ((INT) 0);
  8593.  INT r_2016 = ((INT) 0);
  8594.  TR_PARAM_DEC n_2017;
  8595.  if ((self==((TR_PARAM_DEC) NULL))) {
  8596.   return 0;
  8597.  }
  8598.  r_2016 = 1;
  8599.  n_2017 = self->next_8;
  8600.  while (1) {
  8601.   if ((n_2017==((TR_PARAM_DEC) NULL))) {
  8602.    goto after_loop;
  8603.   }
  8604.   r_2016 = (c_INT_plus_INT_INT_chk(r_2016,1));
  8605.   n_2017 = n_2017->next_8;
  8606.  }
  8607.  after_loop: ;
  8608.  return r_2016;
  8609. }
  8610.  
  8611.  
  8612. TUPIDENTINT TUPIDENTINT_t1_I(TUPIDENTINT self, IDENT t1_2019) {
  8613.  TUPIDENTINT local0;
  8614.  local0 = self;
  8615.  local0.t1 = t1_2019;
  8616.  return local0;
  8617. }
  8618.  
  8619.  
  8620. TUPIDENTINT TUPIDENTINT_t2_I(TUPIDENTINT self, INT t2_2020) {
  8621.  TUPIDENTINT local0;
  8622.  local0 = self;
  8623.  local0.t2 = t2_2020;
  8624.  return local0;
  8625. }
  8626.  
  8627.  
  8628. TUPIDENTINT TUPIDENTINT_crea(TUPIDENTINT self, IDENT at1, INT at2) {
  8629.  TUPIDENTINT noname2021 = TUPIDENTINT_zero;
  8630.  TUPIDENTINT local0;
  8631.  local0 = TUPIDENTINT_t1_I(self, at1);
  8632.  return TUPIDENTINT_t2_I(local0, at2);
  8633. }
  8634.  
  8635.  
  8636. INT PROG_TR_TBL_quer(PROG_TR_TBL self, TUPIDENTINT q) {
  8637.  INT noname2022 = ((INT) 0);
  8638.  INT local0;
  8639.  local0 = IDENT_hash_INT(q.t1);
  8640.  return (c_INT_plus_INT_INT_chk(local0,(c_INT_times_INT_INT_chk(1111,q.t2))));
  8641.  if (!PROG_TR_TBL_inva(self)) {
  8642.   fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ./prog.sa:286:13\n");
  8643.   exit(16);
  8644.  }
  8645. }
  8646.  
  8647.  
  8648. INT PROG_TR_TBL_asiz(PROG_TR_TBL self) {
  8649.  INT noname2023 = ((INT) 0);
  8650.   return self->asize;
  8651.  fprintf(stderr,"Last statement wasn't return ../Library/aref.sa:20:8\n");
  8652.  exit(16);
  8653. }
  8654.  
  8655.  
  8656. TR_CLASS_DEF PROG_TR_TBL_aget(PROG_TR_TBL self, INT ind_2024) {
  8657.  TR_CLASS_DEF noname2025;
  8658.  BOOL local0;
  8659.  INT local1;
  8660.  INT local2;
  8661.  if ((!((self==((PROG_TR_TBL) NULL))))) {
  8662.   local1 = 0;
  8663.   local2 = (self->asize);
  8664.   local0 = INT_is_bet_INT_I(ind_2024, local1, (c_INT_minus_INT_INT_chk(local2,1)));
  8665.  } else {
  8666.   local0 = FALSE;
  8667.  }
  8668.  if (!(local0)) {
  8669.   fprintf(stderr,"Violation of precondition ../Library/aref.sa:33:7\n");
  8670.   exit(16);
  8671.  }
  8672.  if (ind_2024<0||ind_2024>=self->asize) {
  8673.   fprintf(stderr,"Index out of bounds ../Library/aref.sa:33:7\n");
  8674.   exit(16);
  8675.  }
  8676.  return self->arr_part[ind_2024];
  8677. }
  8678.  
  8679.  
  8680. BOOL PROG_TR_TBL_quer_2026(PROG_TR_TBL self, TUPIDENTINT q, TR_CLASS_DEF t_2027) {
  8681.  BOOL noname2028 = ((BOOL) 0);
  8682.  INT local0;
  8683.  if ((t_2027==((TR_CLASS_DEF) NULL))) {
  8684.   return FALSE;
  8685.  }
  8686.  if (IDENT_is_neq_IDE(q.t1, t_2027->name_19)) {
  8687.   return FALSE;
  8688.  }
  8689.  local0 = q.t2;
  8690.  if ((local0!=TR_PARAM_DEC_siz(t_2027->params))) {
  8691.   return FALSE;
  8692.  }
  8693.  return TRUE;
  8694.  if (!PROG_TR_TBL_inva(self)) {
  8695.   fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ./prog.sa:279:13\n");
  8696.   exit(16);
  8697.  }
  8698. }
  8699.  
  8700.  
  8701. TR_CLASS_DEF PROG_TR_TBL_elt_(PROG_TR_TBL self) {
  8702.  TR_CLASS_DEF noname2029;
  8703.  TR_CLASS_DEF t_2030 = ((TR_CLASS_DEF) NULL);
  8704.  return ((TR_CLASS_DEF) NULL);
  8705.  if (!PROG_TR_TBL_inva(self)) {
  8706.   fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ../Library/fqset.sa:69:10\n");
  8707.   exit(16);
  8708.  }
  8709. }
  8710.  
  8711.  
  8712. BOOL PROG_TR_TBL_elt__2031(PROG_TR_TBL self, TR_CLASS_DEF e1_2032, TR_CLASS_DEF e2_2033) {
  8713.  BOOL noname2034 = ((BOOL) 0);
  8714.  return c_SYS_ob_eq_OB_OB_BOOL(((OB) e1_2032),((OB) e2_2033));
  8715.  if (!PROG_TR_TBL_inva(self)) {
  8716.   fprintf(stderr,"Failed invariant PROG_TR_TBL::invariant:BOOL ../Library/fqset.sa:62:9\n");
  8717.   exit(16);
  8718.  }
  8719. }
  8720.