Changeset 2735


Ignore:
Timestamp:
Apr 24, 2007, 7:14:12 AM (14 years ago)
Author:
orlov
Message:
  • Fresh-generated compiler sources in Java.
Location:
to-imperative/trunk/java
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/java/Makefile

    r2646 r2735  
    4242
    4343%:
    44         @mv org/refal/plus/library/$@.java org/refal/plus/library/$@X.java
    45         $(RFPC) -j -p org.refal.plus.library -o org/refal/plus/library/$@ $<
    46         @if diff -q org/refal/plus/library/$@X.java org/refal/plus/library/$@.java; \
    47                 then rm -v org/refal/plus/library/$@X.java; \
     44        @mv refal/plus/$@.java refal/plus/$@X.java
     45        $(RFPC) -j -p refal.plus -o refal/plus/$@ $<
     46        @if diff -q refal/plus/$@X.java refal/plus/$@.java; \
     47                then rm -v refal/plus/$@X.java; \
    4848        fi
    4949
  • to-imperative/trunk/java/org/refal/plus/compiler/rfp_as2as.java

    r2669 r2735  
    55
    66public class rfp_as2as {
     7  @RefalFormat("$box Free_Idx;")
    78  static  final Expr Free_Idx = new Expr (new org.refal.plus.Box.Named ("Free_Idx"));
    89  static  final Expr _c_0 = new Expr (new Word ("ITEMS"));
    9   static  final Expr _c_1 = new Expr (new Word ("BRANCH"));
    10   static  final Expr _c_2 = new Expr (new Word ("DBG"));
    11   static  final Expr _c_34 = new Expr (new Word ("PRAGMA"));
    12   static  final Expr _c_12 = new Expr (new Expr (new Word ("RESULT")), new Expr (_c_34));
    13   static  final Expr _c_3 = new Expr (_c_12, 0, 1);
    14   static  final Expr _c_4 = new Expr (new java.math.BigInteger ("1"));
    15   static  final Expr _c_5 = new Expr (new java.math.BigInteger ("0"));
    16   static  final Expr _c_6 = new Expr (new Word ("BLOCK"));
    17   static  final Expr _c_7 = new Expr (new Word ("BLOCK?"));
    18   static  final Expr _c_8 = new Expr (new Word ("LEFT"));
    19   static  final Expr _c_9 = new Expr (new Word ("RIGHT"));
    20   static  final Expr _c_10 = new Expr (new Expr (new Word ("aux")), new Expr (new Word ("alt")));
    21   static  final Expr _c_11 = new Expr (new Expr (new Word ("FORMAT")), new Expr (_c_34));
     10  static  final Expr _c_1 = new Expr (new Word ("PRAGMA"));
     11  static  final Expr _c_2 = new Expr (new Word ("BRANCH"));
     12  static  final Expr _c_3 = new Expr (new Word ("DBG"));
     13  static  final Expr _c_28 = new Expr (new Expr (new Word ("RESULT")), new Expr (_c_1));
     14  static  final Expr _c_4 = new Expr (_c_28, 0, 1);
     15  static  final Expr _c_5 = new Expr (new java.math.BigInteger ("1"));
     16  static  final Expr _c_6 = new Expr (new java.math.BigInteger ("0"));
     17  static  final Expr _c_7 = new Expr (new Word ("ALT"));
     18  static  final Expr _c_8 = new Expr (new Word ("ALT?"));
     19  static  final Expr _c_9 = new Expr (new Word ("LEFT"));
     20  static  final Expr _c_10 = new Expr (new Word ("RIGHT"));
     21  static  final Expr _c_11 = new Expr (new Expr (new Word ("aux")), new Expr (new Word ("alt")));
     22  static  final Expr _c_12 = new Expr (new Word ("FORMAT"));
    2223  static  final Expr _c_13 = new Expr (new Word ("Tail"));
    2324  static  final Expr _c_14 = new Expr (new Word ("FAIL"));
     
    2627  static  final Expr _c_17 = new Expr (new Word ("TRY"));
    2728  static  final Expr _c_18 = new Expr (_c_14);
    28   static  final Expr _c_19 = new Expr (new Word ("ERROR"));
     29  static  final Expr _c_19 = new Expr (new Expr (new Word ("ERROR")));
    2930  static  final Expr _c_20 = new Expr (new Expr (new Word ("aux")), new Expr (new Word ("block")));
    3031  static  final Expr _c_21 = new Expr (new Word ("CALL"));
     
    3233  static  final Expr _c_23 = new Expr (new Expr (new Word ("aux")), new Expr (new Word ("call")));
    3334  static  final Expr _c_24 = new Expr (new Word ("PAREN"));
    34   static  final Expr _c_25 = new Expr (new Word ("arg"));
    35   static  final Expr _c_26 = new Expr (new Func () {
     35  static  final Expr _c_25 = new Expr (new Word ("With_pragmas"));
     36  static  final Expr _c_26 = new Expr (new Word ("Without_pragmas"));
     37  static  final Expr _c_27 = new Expr (new Word ("arg"));
     38  static  final Expr _c_29 = new Expr (new Func () {
    3639    public boolean eval (Expr arg, Result res) throws RefalException {
    3740      return IsOld_Var (arg, res);
    3841    }
    3942  });
    40   static  final Expr _c_27 = new Expr (new Func () {
     43  static  final Expr _c_30 = new Expr (new Func () {
    4144    public boolean eval (Expr arg, Result res) throws RefalException {
    42       Rename (arg, res);
    43       return true;
     45      return Rename_0 (arg, res);
    4446    }
    4547  });
    46   static  final Expr _c_28 = new Expr (_c_11, 0, 1);
    47   static  final Expr _c_29 = new Expr (new java.math.BigInteger ("2"));
    48   static  final Expr _c_30 = new Expr (new Func () {
     48  static  final Expr _c_31 = new Expr (new java.math.BigInteger ("2"));
     49  static  final Expr _c_32 = new Expr (new Func () {
    4950    public boolean eval (Expr arg, Result res) throws RefalException {
    5051      return Rename_Vars_0 (arg, res);
    5152    }
    5253  });
    53   static  final Expr _c_31 = new Expr (new Word ("_"));
    54   static  final Expr _c_32 = new Expr (new Expr (Expr.empty), new Expr (Expr.empty));
     54  static  final Expr _c_33 = new Expr (new Expr (Expr.empty), new Expr (Expr.empty));
    5555  static private final Expr[] _va_1 = { new Expr (new Word ("Apply")), new Expr (new Word ("Apply")), new Expr (new Word ("Unexpected fail")) };
    56   static  final Expr _c_33 = Expr.concat (_va_1);
     56  static  final Expr _c_34 = Expr.concat (_va_1);
     57  static  final Expr _c_35 = new Expr (new Word ("_"));
    5758
     59  @RefalFormat("$func RFP_As2As_Transform e = e;")
    5860  static public void RFP_As2As_Transform (Expr _ve_Items, Result _v_res1) throws RefalException
    5961  {
     
    7476  }
    7577
     78  @RefalFormat("$func Transform (e) e = e;")
    7679  static  void Transform (Expr _ve_targets, Expr _ve_Items, Result _v_res1) throws RefalException
    7780  {
     
    9295        Expr _ve_rest = Expr.empty;
    9396        _ve_rest = new Expr (_ve_Items, (0 + 1), _v_len__rest);
    94         Expr _gt_item__3 = Expr.empty;
     97        Expr _ge_item__3 = Expr.empty;
    9598        _block2: {
    9699          _block2__branch1: {
     
    113116                  break _block2__branch1;
    114117                }
    115                 if (_vt_item.symbolAt (0))
    116                 {
    117                   break _block2__branch1;
    118                 }
    119                 Expr _v_deref__item = Expr.empty;
    120                 _v_deref__item = (Expr) _vt_item.at (0);
    121                 int _v_len5;
    122                 _v_len5 = _v_deref__item.getLen ();
    123                 int _v_len6;
    124                 _v_len6 = 4;
    125                 if (_v_len5 < _v_len6)
    126                 {
    127                   break _block2__branch1;
    128                 }
    129                 int _v_len___dollar_tmp_m_52_m_33;
    130                 _v_len___dollar_tmp_m_52_m_33 = (_v_len5 - _v_len6);
    131                 Expr _vt__dollar_tmp_m_52_m_20 = Expr.empty;
    132                 _vt__dollar_tmp_m_52_m_20 = new Expr (_v_deref__item, 0, 1);
    133                 Expr _vt__dollar_tmp_m_52_m_22 = Expr.empty;
    134                 _vt__dollar_tmp_m_52_m_22 = new Expr (_v_deref__item, (0 + 1), 1);
    135                 Expr _vt__dollar_tmp_m_52_m_24 = Expr.empty;
    136                 _vt__dollar_tmp_m_52_m_24 = new Expr (_v_deref__item, (0 + 1 + 1), 1);
    137                 Expr _vt_name = Expr.empty;
    138                 _vt_name = new Expr (_v_deref__item, (0 + 1 + 1 + 1), 1);
    139                 Expr _ve__dollar_tmp_m_52_m_33 = Expr.empty;
    140                 _ve__dollar_tmp_m_52_m_33 = new Expr (_v_deref__item, (0 + 1 + 1 + 1 + 1), _v_len___dollar_tmp_m_52_m_33);
    141118                Expr.SplitIterator _va_3 = _ve_targets.leftSplit(0);
    142119                _exit1: _continue1: for ( ; ; _va_3.next ())
     
    148125                    break _block2__branch1;
    149126                  }
    150                   int _v_len7;
    151                   _v_len7 = _v_lsplit__targets.getLen ();
    152                   int _v_len8;
    153                   _v_len8 = 1;
    154                   if (_v_len7 < _v_len8)
     127                  int _v_len5;
     128                  _v_len5 = _v_lsplit__targets.getLen ();
     129                  int _v_len6;
     130                  _v_len6 = 1;
     131                  if (_v_len5 < _v_len6)
    155132                  {
    156133                    break _block2__branch1;
    157134                  }
    158135                  int _v_len___dollar_tmp_m_51_m_31;
    159                   _v_len___dollar_tmp_m_51_m_31 = (_v_len7 - _v_len8);
    160                   if (!_vt_name.termEq (_v_lsplit__targets, 0))
    161                   {
    162                     continue _continue1;
    163                   }
     136                  _v_len___dollar_tmp_m_51_m_31 = (_v_len5 - _v_len6);
     137                  Expr _vt_name = Expr.empty;
     138                  _vt_name = new Expr (_v_lsplit__targets, 0, 1);
    164139                  Expr _ve__dollar_tmp_m_51_m_31 = Expr.empty;
    165140                  _ve__dollar_tmp_m_51_m_31 = new Expr (_v_lsplit__targets, (0 + 1), _v_len___dollar_tmp_m_51_m_31);
     141                  _block4: {
     142                    _block4__branch1: {
     143                      if (_vt_item.symbolAt (0))
     144                      {
     145                        break _block4__branch1;
     146                      }
     147                      Expr _v_deref__item = Expr.empty;
     148                      _v_deref__item = (Expr) _vt_item.at (0);
     149                      int _v_len7;
     150                      _v_len7 = _v_deref__item.getLen ();
     151                      int _v_len8;
     152                      _v_len8 = 4;
     153                      if (_v_len7 < _v_len8)
     154                      {
     155                        break _block4__branch1;
     156                      }
     157                      int _v_len___dollar_tmp_m_53_m_51;
     158                      _v_len___dollar_tmp_m_53_m_51 = (_v_len7 - _v_len8);
     159                      if (_v_deref__item.symbolAt ((0 + 1 + 1)))
     160                      {
     161                        break _block4__branch1;
     162                      }
     163                      Expr _v_deref__deref__item = Expr.empty;
     164                      _v_deref__deref__item = (Expr) _v_deref__item.at ((0 + 1 + 1));
     165                      if (_v_deref__deref__item.getLen () != 3)
     166                      {
     167                        break _block4__branch1;
     168                      }
     169                      if (_v_deref__deref__item.symbolAt ((0 + 1)))
     170                      {
     171                        break _block4__branch1;
     172                      }
     173                      if (_v_deref__deref__item.symbolAt ((0 + 1 + 1)))
     174                      {
     175                        break _block4__branch1;
     176                      }
     177                      Expr _v_deref__deref__deref__item = Expr.empty;
     178                      _v_deref__deref__deref__item = (Expr) _v_deref__deref__item.at ((0 + 1));
     179                      Expr _v_deref__deref__deref__item2 = Expr.empty;
     180                      _v_deref__deref__deref__item2 = (Expr) _v_deref__deref__item.at ((0 + 1 + 1));
     181                      int _v_len9;
     182                      _v_len9 = _v_deref__deref__deref__item2.getLen ();
     183                      int _v_len10;
     184                      _v_len10 = 0;
     185                      if (_v_len9 < _v_len10)
     186                      {
     187                        break _block4__branch1;
     188                      }
     189                      int _v_len__line;
     190                      _v_len__line = (_v_len9 - _v_len10);
     191                      int _v_len11;
     192                      _v_len11 = _v_deref__deref__deref__item.getLen ();
     193                      int _v_len12;
     194                      _v_len12 = 0;
     195                      if (_v_len11 < _v_len12)
     196                      {
     197                        break _block4__branch1;
     198                      }
     199                      int _v_len__file;
     200                      _v_len__file = (_v_len11 - _v_len12);
     201                      if (!_vt_name.termEq (_v_deref__item, (0 + 1 + 1 + 1)))
     202                      {
     203                        break _block4__branch1;
     204                      }
     205                      if (!_c_1.termEq (_v_deref__deref__item, 0))
     206                      {
     207                        break _block4__branch1;
     208                      }
     209                      Expr _vt__dollar_tmp_m_53_m_13 = Expr.empty;
     210                      _vt__dollar_tmp_m_53_m_13 = new Expr (_v_deref__item, 0, 1);
     211                      Expr _vt__dollar_tmp_m_53_m_15 = Expr.empty;
     212                      _vt__dollar_tmp_m_53_m_15 = new Expr (_v_deref__item, (0 + 1), 1);
     213                      Expr _ve__dollar_tmp_m_53_m_51 = Expr.empty;
     214                      _ve__dollar_tmp_m_53_m_51 = new Expr (_v_deref__item, (0 + 1 + 1 + 1 + 1), _v_len___dollar_tmp_m_53_m_51);
     215                      Expr _ve_file = Expr.empty;
     216                      _ve_file = new Expr (_v_deref__deref__deref__item, 0, _v_len__file);
     217                      Expr _ve_line = Expr.empty;
     218                      _ve_line = new Expr (_v_deref__deref__deref__item2, 0, _v_len__line);
     219                      break _block4;
     220                    }
     221                    if (_vt_item.symbolAt (0))
     222                    {
     223                      continue _continue1;
     224                    }
     225                    Expr _v_deref__item2 = Expr.empty;
     226                    _v_deref__item2 = (Expr) _vt_item.at (0);
     227                    int _v_len13;
     228                    _v_len13 = _v_deref__item2.getLen ();
     229                    int _v_len14;
     230                    _v_len14 = 3;
     231                    if (_v_len13 < _v_len14)
     232                    {
     233                      continue _continue1;
     234                    }
     235                    int _v_len___dollar_tmp_m_54_m_24;
     236                    _v_len___dollar_tmp_m_54_m_24 = (_v_len13 - _v_len14);
     237                    if (!_vt_name.termEq (_v_deref__item2, (0 + 1 + 1)))
     238                    {
     239                      continue _continue1;
     240                    }
     241                    Expr _vt__dollar_tmp_m_54_m_13 = Expr.empty;
     242                    _vt__dollar_tmp_m_54_m_13 = new Expr (_v_deref__item2, 0, 1);
     243                    Expr _vt__dollar_tmp_m_54_m_15 = Expr.empty;
     244                    _vt__dollar_tmp_m_54_m_15 = new Expr (_v_deref__item2, (0 + 1), 1);
     245                    Expr _ve__dollar_tmp_m_54_m_24 = Expr.empty;
     246                    _ve__dollar_tmp_m_54_m_24 = new Expr (_v_deref__item2, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_54_m_24);
     247                  }
    166248                  break _exit1;
    167249                }
     
    173255              break _block2__branch1;
    174256            }
    175             Expr _v_deref__item2 = Expr.empty;
    176             _v_deref__item2 = (Expr) _vt_item.at (0);
    177             if (_v_deref__item2.getLen () != 7)
     257            Expr _v_deref__item3 = Expr.empty;
     258            _v_deref__item3 = (Expr) _vt_item.at (0);
     259            int _v_len15;
     260            _v_len15 = _v_deref__item3.getLen ();
     261            int _v_len16;
     262            _v_len16 = 6;
     263            if (_v_len15 < _v_len16)
    178264            {
    179265              break _block2__branch1;
    180266            }
    181             if (_v_deref__item2.symbolAt ((0 + 1 + 1 + 1 + 1)))
     267            int _v_len__pragma;
     268            _v_len__pragma = (_v_len15 - _v_len16);
     269            if (_v_deref__item3.symbolAt ((0 + 1 + 1 + _v_len__pragma + 1)))
    182270            {
    183271              break _block2__branch1;
    184272            }
    185             if (_v_deref__item2.symbolAt ((0 + 1 + 1 + 1 + 1 + 1)))
     273            if (_v_deref__item3.symbolAt ((0 + 1 + 1 + _v_len__pragma + 1 + 1)))
    186274            {
    187275              break _block2__branch1;
    188276            }
    189             if (_v_deref__item2.symbolAt ((0 + 1 + 1 + 1 + 1 + 1 + 1)))
     277            if (_v_deref__item3.symbolAt ((0 + 1 + 1 + _v_len__pragma + 1 + 1 + 1)))
    190278            {
    191279              break _block2__branch1;
    192280            }
    193             Expr _v_deref__deref__item2 = Expr.empty;
    194             _v_deref__deref__item2 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1));
    195             Expr _v_deref__deref__item22 = Expr.empty;
    196             _v_deref__deref__item22 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1 + 1));
    197             Expr _v_deref__deref__item23 = Expr.empty;
    198             _v_deref__deref__item23 = (Expr) _v_deref__item2.at ((0 + 1 + 1 + 1 + 1 + 1 + 1));
    199             int _v_len9;
    200             _v_len9 = _v_deref__deref__item2.getLen ();
    201             int _v_len10;
    202             _v_len10 = 0;
    203             if (_v_len9 < _v_len10)
     281            Expr _v_deref__deref__item3 = Expr.empty;
     282            _v_deref__deref__item3 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + _v_len__pragma + 1));
     283            Expr _v_deref__deref__item32 = Expr.empty;
     284            _v_deref__deref__item32 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + _v_len__pragma + 1 + 1));
     285            Expr _v_deref__deref__item33 = Expr.empty;
     286            _v_deref__deref__item33 = (Expr) _v_deref__item3.at ((0 + 1 + 1 + _v_len__pragma + 1 + 1 + 1));
     287            int _v_len17;
     288            _v_len17 = _v_deref__deref__item3.getLen ();
     289            int _v_len18;
     290            _v_len18 = 0;
     291            if (_v_len17 < _v_len18)
    204292            {
    205293              break _block2__branch1;
    206294            }
    207295            int _v_len__in;
    208             _v_len__in = (_v_len9 - _v_len10);
    209             int _v_len11;
    210             _v_len11 = _v_deref__deref__item23.getLen ();
    211             int _v_len12;
    212             _v_len12 = 2;
    213             if (_v_len11 < _v_len12)
     296            _v_len__in = (_v_len17 - _v_len18);
     297            int _v_len19;
     298            _v_len19 = _v_deref__deref__item33.getLen ();
     299            int _v_len20;
     300            _v_len20 = 1;
     301            if (_v_len19 < _v_len20)
    214302            {
    215303              break _block2__branch1;
    216304            }
    217305            int _v_len__branch;
    218             _v_len__branch = (_v_len11 - _v_len12);
    219             int _v_len13;
    220             _v_len13 = _v_deref__deref__item22.getLen ();
    221             int _v_len14;
    222             _v_len14 = 0;
    223             if (_v_len13 < _v_len14)
     306            _v_len__branch = (_v_len19 - _v_len20);
     307            int _v_len21;
     308            _v_len21 = _v_deref__deref__item32.getLen ();
     309            int _v_len22;
     310            _v_len22 = 0;
     311            if (_v_len21 < _v_len22)
    224312            {
    225313              break _block2__branch1;
    226314            }
    227315            int _v_len__out;
    228             _v_len__out = (_v_len13 - _v_len14);
    229             if (!_v_deref__item2.symbolAt (0))
     316            _v_len__out = (_v_len21 - _v_len22);
     317            if (!_v_deref__item3.symbolAt (0))
    230318            {
    231319              break _block2__branch1;
    232320            }
    233             if (!_v_deref__item2.symbolAt ((0 + 1)))
     321            if (!_v_deref__item3.symbolAt ((0 + 1)))
    234322            {
    235323              break _block2__branch1;
    236324            }
    237             if (!_c_1.termEq (_v_deref__deref__item23, 0))
     325            if (!_c_2.termEq (_v_deref__deref__item33, 0))
    238326            {
    239327              break _block2__branch1;
    240328            }
    241329            Expr _vs_link = Expr.empty;
    242             _vs_link = new Expr (_v_deref__item2, 0, 1);
     330            _vs_link = new Expr (_v_deref__item3, 0, 1);
    243331            Expr _vs_tag = Expr.empty;
    244             _vs_tag = new Expr (_v_deref__item2, (0 + 1), 1);
    245             Expr _vt_pragma = Expr.empty;
    246             _vt_pragma = new Expr (_v_deref__item2, (0 + 1 + 1), 1);
     332            _vs_tag = new Expr (_v_deref__item3, (0 + 1), 1);
     333            Expr _ve_pragma = Expr.empty;
     334            _ve_pragma = new Expr (_v_deref__item3, (0 + 1 + 1), _v_len__pragma);
    247335            Expr _vt_name = Expr.empty;
    248             _vt_name = new Expr (_v_deref__item2, (0 + 1 + 1 + 1), 1);
     336            _vt_name = new Expr (_v_deref__item3, (0 + 1 + 1 + _v_len__pragma), 1);
    249337            Expr _ve_in = Expr.empty;
    250             _ve_in = new Expr (_v_deref__deref__item2, 0, _v_len__in);
     338            _ve_in = new Expr (_v_deref__deref__item3, 0, _v_len__in);
    251339            Expr _ve_out = Expr.empty;
    252             _ve_out = new Expr (_v_deref__deref__item22, 0, _v_len__out);
    253             Expr _vt_p = Expr.empty;
    254             _vt_p = new Expr (_v_deref__deref__item23, (0 + 1), 1);
     340            _ve_out = new Expr (_v_deref__deref__item32, 0, _v_len__out);
    255341            Expr _ve_branch = Expr.empty;
    256             _ve_branch = new Expr (_v_deref__deref__item23, (0 + 1 + 1), _v_len__branch);
    257             Expr _ge_in__5 = Expr.empty;
     342            _ve_branch = new Expr (_v_deref__deref__item33, (0 + 1), _v_len__branch);
     343            Expr _ve_p = Expr.empty;
    258344            Expr _ge_branch__5 = Expr.empty;
    259             _block4: {
    260               _block4__branch1: {
    261                 Result _v_Vars1 = new Result ();
    262                 rfp_vars.Vars (_ve_in, _v_Vars1);
    263                 _block5: {
    264                   _block5__branch1: {
    265                     if (_v_Vars1.getExpr ().getLen () != 0)
    266                     {
    267                       break _block5__branch1;
    268                     }
    269                     break _block5;
    270                   }
    271                   if (_v_Vars1.getExpr ().getLen () < 1)
    272                   {
    273                     break _block4__branch1;
    274                   }
    275                   Expr.SplitIterator _va_4 = _v_Vars1.getExpr ().leftSplit(0);
    276                   _exit2: _continue2: for ( ; ; _va_4.next ())
    277                   {
    278                     Expr _ve__dollar_tmp_m_58_m_12 = _va_4.getLeft();
    279                     Expr _v_lsplit__Vars1 = _va_4.getRight();
    280                     if (!_va_4.isValid ())
    281                     {
    282                       break _block4__branch1;
    283                     }
    284                     int _v_len15;
    285                     _v_len15 = _v_lsplit__Vars1.getLen ();
    286                     int _v_len16;
    287                     _v_len16 = 1;
    288                     if (_v_len15 < _v_len16)
    289                     {
    290                       break _block4__branch1;
    291                     }
    292                     int _v_len___dollar_tmp_m_58_m_25;
    293                     _v_len___dollar_tmp_m_58_m_25 = (_v_len15 - _v_len16);
    294                     if (_v_lsplit__Vars1.symbolAt (0))
    295                     {
    296                       continue _continue2;
    297                     }
    298                     Expr _v_deref__lsplit__Vars1 = Expr.empty;
    299                     _v_deref__lsplit__Vars1 = (Expr) _v_lsplit__Vars1.at (0);
    300                     if (_v_deref__lsplit__Vars1.getLen () != 1)
    301                     {
    302                       continue _continue2;
    303                     }
    304                     if (!_v_deref__lsplit__Vars1.symbolAt (0))
    305                     {
    306                       continue _continue2;
    307                     }
    308                     Expr _ve__dollar_tmp_m_58_m_25 = Expr.empty;
    309                     _ve__dollar_tmp_m_58_m_25 = new Expr (_v_lsplit__Vars1, (0 + 1), _v_len___dollar_tmp_m_58_m_25);
    310                     Expr _vs_VarTag = Expr.empty;
    311                     _vs_VarTag = new Expr (_v_deref__lsplit__Vars1, 0, 1);
    312                     break _exit2;
    313                   }
     345            _block5: {
     346              _block5__branch1: {
     347                if (_v_len__pragma != 1)
     348                {
     349                  break _block5__branch1;
    314350                }
    315                 Result _ge_auxcall1 = new Result ();
    316                 rfp_format.Format_Exp (_ve_in, _ge_auxcall1);
    317                 Result _va_5 = new Result ();
    318                 Result _va_6 = new Result ();
    319                 Generate_In_Vars (_ge_auxcall1.getExpr (), _ve_branch, _va_5, _va_6);
    320                 _ge_in__5 = _va_5.getExpr ();
    321                 _ge_branch__5 = _va_6.getExpr ();
    322                 break _block4;
    323               }
    324               _ge_in__5 = _ve_in;
     351                if (_ve_pragma.symbolAt (0))
     352                {
     353                  break _block5__branch1;
     354                }
     355                Expr _v_deref__pragma = Expr.empty;
     356                _v_deref__pragma = (Expr) _ve_pragma.at (0);
     357                int _v_len23;
     358                _v_len23 = _v_deref__pragma.getLen ();
     359                int _v_len24;
     360                _v_len24 = 1;
     361                if (_v_len23 < _v_len24)
     362                {
     363                  break _block5__branch1;
     364                }
     365                int _v_len___dollar_tmp_m_59_m_29;
     366                _v_len___dollar_tmp_m_59_m_29 = (_v_len23 - _v_len24);
     367                if (!_c_1.termEq (_v_deref__pragma, 0))
     368                {
     369                  break _block5__branch1;
     370                }
     371                Expr _ve__dollar_tmp_m_59_m_29 = Expr.empty;
     372                _ve__dollar_tmp_m_59_m_29 = new Expr (_v_deref__pragma, (0 + 1), _v_len___dollar_tmp_m_59_m_29);
     373                int _v_len25;
     374                _v_len25 = _v_len__branch;
     375                int _v_len26;
     376                _v_len26 = 1;
     377                if (_v_len25 < _v_len26)
     378                {
     379                  break _block1__branch1;
     380                }
     381                int _v_len__br;
     382                _v_len__br = (_v_len25 - _v_len26);
     383                Expr _gt_p__6 = Expr.empty;
     384                _gt_p__6 = new Expr (_ve_branch, 0, 1);
     385                Expr _ve_br = Expr.empty;
     386                _ve_br = new Expr (_ve_branch, (0 + 1), _v_len__br);
     387                _ve_p = _gt_p__6;
     388                _ge_branch__5 = _ve_br;
     389                break _block5;
     390              }
     391              _ve_p = Expr.empty;
    325392              _ge_branch__5 = _ve_branch;
    326393            }
     394            Expr _ge_in__6 = Expr.empty;
    327395            Expr _ge_branch__5__6 = Expr.empty;
    328             _block6: {
    329               _block6__branch1: {
    330                 if (!refal.plus.Table.IsInTable (rfp_helper.RFP_Options, _c_2))
     396            Result _ge_auxcall1 = new Result ();
     397            rfp_format.Format_Exp (_ve_in, _ge_auxcall1);
     398            Result _va_4 = new Result ();
     399            Result _va_5 = new Result ();
     400            Generate_In_Vars (_ge_auxcall1.getExpr (), _ge_branch__5, _va_4, _va_5);
     401            _ge_in__6 = _va_4.getExpr ();
     402            _ge_branch__5__6 = _va_5.getExpr ();
     403            Expr _ge_in__6__7 = Expr.empty;
     404            Expr _ge_branch__5__6__7 = Expr.empty;
     405            _block7: {
     406              _block7__branch1: {
     407                if (!refal.plus.Table.IsInTable (rfp_helper.RFP_Options, _c_3))
    331408                {
    332                   break _block6__branch1;
     409                  break _block7__branch1;
    333410                }
    334                 Expr[] _va_8 = { _c_3 , _vt_p , _ge_in__5 };
     411                int _v_len27;
     412                _v_len27 = _ve_p.getLen ();
     413                int _v_len28;
     414                _v_len28 = 0;
     415                if (_v_len27 < (_v_len28 + 1))
     416                {
     417                  break _block7__branch1;
     418                }
     419                int _v_len___dollar_tmp_m_72_m_46;
     420                _v_len___dollar_tmp_m_72_m_46 = (_v_len27 - _v_len28);
     421                Expr _vv__dollar_tmp_m_72_m_46 = Expr.empty;
     422                _vv__dollar_tmp_m_72_m_46 = new Expr (_ve_p, 0, _v_len___dollar_tmp_m_72_m_46);
     423                Result _ge_auxcall2 = new Result ();
     424                Del_Pragmas (_ge_in__6, _ge_auxcall2);
     425                Result _ge_auxcall3 = new Result ();
     426                Expr[] _va_6 = { _c_4 , _ve_p , _ge_in__6 };
     427                rfp_debug.Add_Debug (new Expr (new Expr(Expr.concat (_va_6)), _ge_branch__5__6), _ge_auxcall3);
    335428                Result _va_7 = new Result ();
    336                 rfp_debug.Add_Debug (new Expr (new Expr(Expr.concat (_va_8)), _ge_branch__5), _va_7);
    337                 _ge_branch__5__6 = _va_7.getExpr ();
    338                 break _block6;
    339               }
    340               _ge_branch__5__6 = _ge_branch__5;
    341             }
    342             refal.plus.Box.Store (Free_Idx, _c_4);
     429                Del_Pragmas (_ge_auxcall3.getExpr (), _va_7);
     430                _ge_branch__5__6__7 = _va_7.getExpr ();
     431                _ge_in__6__7 = _ge_auxcall2.getExpr ();
     432                break _block7;
     433              }
     434              _block7__branch2: {
     435                int _v_len29;
     436                _v_len29 = _ve_p.getLen ();
     437                int _v_len30;
     438                _v_len30 = 0;
     439                if (_v_len29 < (_v_len30 + 1))
     440                {
     441                  break _block7__branch2;
     442                }
     443                int _v_len___dollar_tmp_m_74_m_16;
     444                _v_len___dollar_tmp_m_74_m_16 = (_v_len29 - _v_len30);
     445                Expr _vv__dollar_tmp_m_74_m_16 = Expr.empty;
     446                _vv__dollar_tmp_m_74_m_16 = new Expr (_ve_p, 0, _v_len___dollar_tmp_m_74_m_16);
     447                Result _ge_auxcall4 = new Result ();
     448                Del_Pragmas (_ge_in__6, _ge_auxcall4);
     449                Result _va_8 = new Result ();
     450                Del_Pragmas (_ge_branch__5__6, _va_8);
     451                _ge_branch__5__6__7 = _va_8.getExpr ();
     452                _ge_in__6__7 = _ge_auxcall4.getExpr ();
     453                break _block7;
     454              }
     455              _ge_in__6__7 = _ge_in__6;
     456              _ge_branch__5__6__7 = _ge_branch__5__6;
     457            }
     458            refal.plus.Box.Store (Free_Idx, _c_5);
    343459            Result _v_Unstick__Blocks1 = new Result ();
    344460            Result _va_9 = new Result ();
    345             Unstick_Blocks (_ge_branch__5__6, _va_9, _v_Unstick__Blocks1);
    346             _ge_branch__5__6 = _va_9.getExpr ();
    347             Expr _vt__dollar_tmp_m_69_m_46 = Expr.empty;
    348             _vt__dollar_tmp_m_69_m_46 = new Expr(_v_Unstick__Blocks1.getExpr ());
    349             Result _ge_auxcall2 = new Result ();
    350             rfp_vars.Vars (_ge_in__5, _ge_auxcall2);
     461            Unstick_Blocks (_ge_branch__5__6__7, _va_9, _v_Unstick__Blocks1);
     462            _ge_branch__5__6__7 = _va_9.getExpr ();
     463            Expr _vt__dollar_tmp_m_79_m_46 = Expr.empty;
     464            _vt__dollar_tmp_m_79_m_46 = new Expr(_v_Unstick__Blocks1.getExpr ());
     465            Result _ge_auxcall5 = new Result ();
     466            rfp_vars.Vars (_ge_in__6__7, _ge_auxcall5);
    351467            Result _va_10 = new Result ();
    352             Rename_Vars (_c_5, _ge_auxcall2.getExpr (), Expr.empty, _ge_branch__5__6, _va_10);
    353             _ge_branch__5__6 = _va_10.getExpr ();
    354             Expr[] _va_12 = { _c_1 , _vt_p , _ge_branch__5__6 };
    355             Expr[] _va_11 = { _vs_link , _vs_tag , _vt_pragma , _vt_name , new Expr(_ge_in__5) , new Expr(_ve_out) , new Expr(Expr.concat (_va_12)) };
    356             _gt_item__3 = new Expr(Expr.concat (_va_11));
     468            Rename_Vars (_c_6, _ge_auxcall5.getExpr (), Expr.empty, _ge_branch__5__6__7, _va_10);
     469            _ge_branch__5__6__7 = _va_10.getExpr ();
     470            Expr[] _va_11 = { _vs_link , _vs_tag , _vt_name , new Expr(_ge_in__6__7) , new Expr(_ve_out) , new Expr(new Expr (_c_2, _ge_branch__5__6__7)) };
     471            _ge_item__3 = new Expr(Expr.concat (_va_11));
    357472            break _block2;
    358473          }
    359           _gt_item__3 = _vt_item;
     474          Result _va_12 = new Result ();
     475          Del_Pragmas (_vt_item, _va_12);
     476          _ge_item__3 = _va_12.getExpr ();
    360477        }
    361478        Result _v_Transform1 = new Result ();
    362479        Transform (_ve_targets, _ve_rest, _v_Transform1);
    363         _v_res1.assign (new Expr (_gt_item__3, _v_Transform1.getExpr ()));
     480        _v_res1.assign (new Expr (_ge_item__3, _v_Transform1.getExpr ()));
    364481        break _block1;
    365482      }
     
    368485  }
    369486
     487  @RefalFormat("$func Unstick_Blocks e = e (e);")
    370488  static  void Unstick_Blocks (Expr _ve_Sentence, Result _v_res1, Result _v_res2) throws RefalException
    371489  {
     
    408526          _v_len3 = _v_deref__Snt.getLen ();
    409527          int _v_len4;
    410           _v_len4 = 2;
     528          _v_len4 = 1;
    411529          if (_v_len3 < _v_len4)
    412530          {
     
    423541          Expr _vs_block = Expr.empty;
    424542          _vs_block = new Expr (_v_deref__Snt, 0, 1);
    425           Expr _vt_Pragma = Expr.empty;
    426           _vt_Pragma = new Expr (_v_deref__Snt, (0 + 1), 1);
    427543          Expr _ve_branches = Expr.empty;
    428           _ve_branches = new Expr (_v_deref__Snt, (0 + 1 + 1), _v_len__branches);
     544          _ve_branches = new Expr (_v_deref__Snt, (0 + 1), _v_len__branches);
    429545          _block2: {
    430546            _block2__branch1: {
    431               if (!_vs_block.termEq (_c_6, 0))
     547              if (!_vs_block.termEq (_c_7, 0))
    432548              {
    433549                break _block2__branch1;
     
    435551              break _block2;
    436552            }
    437             if (!_vs_block.termEq (_c_7, 0))
     553            if (!_vs_block.termEq (_c_8, 0))
    438554            {
    439555              break _block1__branch1;
     
    463579                        break _block4__branch1;
    464580                      }
    465                       int _v_len___dollar_tmp_m_97_m_45;
    466                       _v_len___dollar_tmp_m_97_m_45 = (_v_len5 - _v_len6);
     581                      int _v_len___dollar_tmp_m_107_m_41;
     582                      _v_len___dollar_tmp_m_107_m_41 = (_v_len5 - _v_len6);
    467583                      if (_ve_R.symbolAt (0))
    468584                      {
     
    474590                      _v_len7 = _v_deref__R.getLen ();
    475591                      int _v_len8;
    476                       _v_len8 = 3;
     592                      _v_len8 = 2;
    477593                      if (_v_len7 < _v_len8)
    478594                      {
    479595                        break _block4__branch1;
    480596                      }
    481                       int _v_len___dollar_tmp_m_97_m_42;
    482                       _v_len___dollar_tmp_m_97_m_42 = (_v_len7 - _v_len8);
    483                       if (_v_deref__R.symbolAt ((0 + 1 + 1)))
     597                      int _v_len___dollar_tmp_m_107_m_38;
     598                      _v_len___dollar_tmp_m_107_m_38 = (_v_len7 - _v_len8);
     599                      if (_v_deref__R.symbolAt ((0 + 1)))
    484600                      {
    485601                        break _block4__branch1;
    486602                      }
    487603                      Expr _v_deref__deref__R = Expr.empty;
    488                       _v_deref__deref__R = (Expr) _v_deref__R.at ((0 + 1 + 1));
     604                      _v_deref__deref__R = (Expr) _v_deref__R.at ((0 + 1));
    489605                      int _v_len9;
    490606                      _v_len9 = _v_deref__deref__R.getLen ();
    491607                      int _v_len10;
    492                       _v_len10 = 3;
     608                      _v_len10 = 2;
    493609                      if (_v_len9 < _v_len10)
    494610                      {
    495611                        break _block4__branch1;
    496612                      }
    497                       int _v_len___dollar_tmp_m_97_m_39;
    498                       _v_len___dollar_tmp_m_97_m_39 = (_v_len9 - _v_len10);
    499                       if (_v_deref__deref__R.symbolAt ((0 + 1 + 1)))
     613                      int _v_len___dollar_tmp_m_107_m_35;
     614                      _v_len___dollar_tmp_m_107_m_35 = (_v_len9 - _v_len10);
     615                      if (_v_deref__deref__R.symbolAt ((0 + 1)))
    500616                      {
    501617                        break _block4__branch1;
    502618                      }
    503619                      Expr _v_deref__deref__deref__R = Expr.empty;
    504                       _v_deref__deref__deref__R = (Expr) _v_deref__deref__R.at ((0 + 1 + 1));
     620                      _v_deref__deref__deref__R = (Expr) _v_deref__deref__R.at ((0 + 1));
    505621                      int _v_len11;
    506622                      _v_len11 = _v_deref__deref__deref__R.getLen ();
     
    511627                        break _block4__branch1;
    512628                      }
    513                       int _v_len___dollar_tmp_m_97_m_36;
    514                       _v_len___dollar_tmp_m_97_m_36 = (_v_len11 - _v_len12);
    515                       if (!_c_6.termEq (_v_deref__R, 0))
     629                      int _v_len___dollar_tmp_m_107_m_32;
     630                      _v_len___dollar_tmp_m_107_m_32 = (_v_len11 - _v_len12);
     631                      if (!_c_7.termEq (_v_deref__R, 0))
    516632                      {
    517633                        break _block4__branch1;
    518634                      }
    519                       if (!_c_1.termEq (_v_deref__deref__R, 0))
     635                      if (!_c_2.termEq (_v_deref__deref__R, 0))
    520636                      {
    521637                        break _block4__branch1;
    522638                      }
    523                       if (!_c_8.termEq (_v_deref__deref__deref__R, 0))
     639                      if (!_c_9.termEq (_v_deref__deref__deref__R, 0))
    524640                      {
    525641                        break _block4__branch1;
    526642                      }
    527                       Expr _ve__dollar_tmp_m_97_m_45 = Expr.empty;
    528                       _ve__dollar_tmp_m_97_m_45 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_97_m_45);
    529                       Expr _vt__dollar_tmp_m_97_m_18 = Expr.empty;
    530                       _vt__dollar_tmp_m_97_m_18 = new Expr (_v_deref__R, (0 + 1), 1);
    531                       Expr _ve__dollar_tmp_m_97_m_42 = Expr.empty;
    532                       _ve__dollar_tmp_m_97_m_42 = new Expr (_v_deref__R, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_97_m_42);
    533                       Expr _vt__dollar_tmp_m_97_m_28 = Expr.empty;
    534                       _vt__dollar_tmp_m_97_m_28 = new Expr (_v_deref__deref__R, (0 + 1), 1);
    535                       Expr _ve__dollar_tmp_m_97_m_39 = Expr.empty;
    536                       _ve__dollar_tmp_m_97_m_39 = new Expr (_v_deref__deref__R, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_97_m_39);
    537                       Expr _ve__dollar_tmp_m_97_m_36 = Expr.empty;
    538                       _ve__dollar_tmp_m_97_m_36 = new Expr (_v_deref__deref__deref__R, (0 + 1), _v_len___dollar_tmp_m_97_m_36);
     643                      Expr _ve__dollar_tmp_m_107_m_41 = Expr.empty;
     644                      _ve__dollar_tmp_m_107_m_41 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_107_m_41);
     645                      Expr _ve__dollar_tmp_m_107_m_38 = Expr.empty;
     646                      _ve__dollar_tmp_m_107_m_38 = new Expr (_v_deref__R, (0 + 1 + 1), _v_len___dollar_tmp_m_107_m_38);
     647                      Expr _ve__dollar_tmp_m_107_m_35 = Expr.empty;
     648                      _ve__dollar_tmp_m_107_m_35 = new Expr (_v_deref__deref__R, (0 + 1 + 1), _v_len___dollar_tmp_m_107_m_35);
     649                      Expr _ve__dollar_tmp_m_107_m_32 = Expr.empty;
     650                      _ve__dollar_tmp_m_107_m_32 = new Expr (_v_deref__deref__deref__R, (0 + 1), _v_len___dollar_tmp_m_107_m_32);
    539651                      break _block4;
    540652                    }
     
    548660                        break _block4__branch2;
    549661                      }
    550                       int _v_len___dollar_tmp_m_98_m_46;
    551                       _v_len___dollar_tmp_m_98_m_46 = (_v_len13 - _v_len14);
     662                      int _v_len___dollar_tmp_m_108_m_42;
     663                      _v_len___dollar_tmp_m_108_m_42 = (_v_len13 - _v_len14);
    552664                      if (_ve_R.symbolAt (0))
    553665                      {
     
    559671                      _v_len15 = _v_deref__R2.getLen ();
    560672                      int _v_len16;
    561                       _v_len16 = 3;
     673                      _v_len16 = 2;
    562674                      if (_v_len15 < _v_len16)
    563675                      {
    564676                        break _block4__branch2;
    565677                      }
    566                       int _v_len___dollar_tmp_m_98_m_43;
    567                       _v_len___dollar_tmp_m_98_m_43 = (_v_len15 - _v_len16);
    568                       if (_v_deref__R2.symbolAt ((0 + 1 + 1)))
     678                      int _v_len___dollar_tmp_m_108_m_39;
     679                      _v_len___dollar_tmp_m_108_m_39 = (_v_len15 - _v_len16);
     680                      if (_v_deref__R2.symbolAt ((0 + 1)))
    569681                      {
    570682                        break _block4__branch2;
    571683                      }
    572684                      Expr _v_deref__deref__R2 = Expr.empty;
    573                       _v_deref__deref__R2 = (Expr) _v_deref__R2.at ((0 + 1 + 1));
     685                      _v_deref__deref__R2 = (Expr) _v_deref__R2.at ((0 + 1));
    574686                      int _v_len17;
    575687                      _v_len17 = _v_deref__deref__R2.getLen ();
    576688                      int _v_len18;
    577                       _v_len18 = 3;
     689                      _v_len18 = 2;
    578690                      if (_v_len17 < _v_len18)
    579691                      {
    580692                        break _block4__branch2;
    581693                      }
    582                       int _v_len___dollar_tmp_m_98_m_40;
    583                       _v_len___dollar_tmp_m_98_m_40 = (_v_len17 - _v_len18);
    584                       if (_v_deref__deref__R2.symbolAt ((0 + 1 + 1)))
     694                      int _v_len___dollar_tmp_m_108_m_36;
     695                      _v_len___dollar_tmp_m_108_m_36 = (_v_len17 - _v_len18);
     696                      if (_v_deref__deref__R2.symbolAt ((0 + 1)))
    585697                      {
    586698                        break _block4__branch2;
    587699                      }
    588700                      Expr _v_deref__deref__deref__R2 = Expr.empty;
    589                       _v_deref__deref__deref__R2 = (Expr) _v_deref__deref__R2.at ((0 + 1 + 1));
     701                      _v_deref__deref__deref__R2 = (Expr) _v_deref__deref__R2.at ((0 + 1));
    590702                      int _v_len19;
    591703                      _v_len19 = _v_deref__deref__deref__R2.getLen ();
     
    596708                        break _block4__branch2;
    597709                      }
    598                       int _v_len___dollar_tmp_m_98_m_37;
    599                       _v_len___dollar_tmp_m_98_m_37 = (_v_len19 - _v_len20);
    600                       if (!_c_6.termEq (_v_deref__R2, 0))
     710                      int _v_len___dollar_tmp_m_108_m_33;
     711                      _v_len___dollar_tmp_m_108_m_33 = (_v_len19 - _v_len20);
     712                      if (!_c_7.termEq (_v_deref__R2, 0))
    601713                      {
    602714                        break _block4__branch2;
    603715                      }
    604                       if (!_c_1.termEq (_v_deref__deref__R2, 0))
     716                      if (!_c_2.termEq (_v_deref__deref__R2, 0))
    605717                      {
    606718                        break _block4__branch2;
    607719                      }
    608                       if (!_c_9.termEq (_v_deref__deref__deref__R2, 0))
     720                      if (!_c_10.termEq (_v_deref__deref__deref__R2, 0))
    609721                      {
    610722                        break _block4__branch2;
    611723                      }
    612                       Expr _ve__dollar_tmp_m_98_m_46 = Expr.empty;
    613                       _ve__dollar_tmp_m_98_m_46 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_98_m_46);
    614                       Expr _vt__dollar_tmp_m_98_m_18 = Expr.empty;
    615                       _vt__dollar_tmp_m_98_m_18 = new Expr (_v_deref__R2, (0 + 1), 1);
    616                       Expr _ve__dollar_tmp_m_98_m_43 = Expr.empty;
    617                       _ve__dollar_tmp_m_98_m_43 = new Expr (_v_deref__R2, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_98_m_43);
    618                       Expr _vt__dollar_tmp_m_98_m_28 = Expr.empty;
    619                       _vt__dollar_tmp_m_98_m_28 = new Expr (_v_deref__deref__R2, (0 + 1), 1);
    620                       Expr _ve__dollar_tmp_m_98_m_40 = Expr.empty;
    621                       _ve__dollar_tmp_m_98_m_40 = new Expr (_v_deref__deref__R2, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_98_m_40);
    622                       Expr _ve__dollar_tmp_m_98_m_37 = Expr.empty;
    623                       _ve__dollar_tmp_m_98_m_37 = new Expr (_v_deref__deref__deref__R2, (0 + 1), _v_len___dollar_tmp_m_98_m_37);
     724                      Expr _ve__dollar_tmp_m_108_m_42 = Expr.empty;
     725                      _ve__dollar_tmp_m_108_m_42 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_108_m_42);
     726                      Expr _ve__dollar_tmp_m_108_m_39 = Expr.empty;
     727                      _ve__dollar_tmp_m_108_m_39 = new Expr (_v_deref__R2, (0 + 1 + 1), _v_len___dollar_tmp_m_108_m_39);
     728                      Expr _ve__dollar_tmp_m_108_m_36 = Expr.empty;
     729                      _ve__dollar_tmp_m_108_m_36 = new Expr (_v_deref__deref__R2, (0 + 1 + 1), _v_len___dollar_tmp_m_108_m_36);
     730                      Expr _ve__dollar_tmp_m_108_m_33 = Expr.empty;
     731                      _ve__dollar_tmp_m_108_m_33 = new Expr (_v_deref__deref__deref__R2, (0 + 1), _v_len___dollar_tmp_m_108_m_33);
    624732                      break _block4;
    625733                    }
     
    633741                        break _block4__branch3;
    634742                      }
    635                       int _v_len___dollar_tmp_m_99_m_47;
    636                       _v_len___dollar_tmp_m_99_m_47 = (_v_len21 - _v_len22);
     743                      int _v_len___dollar_tmp_m_109_m_41;
     744                      _v_len___dollar_tmp_m_109_m_41 = (_v_len21 - _v_len22);
    637745                      if (_ve_R.symbolAt (0))
    638746                      {
     
    644752                      _v_len23 = _v_deref__R3.getLen ();
    645753                      int _v_len24;
    646                       _v_len24 = 3;
     754                      _v_len24 = 2;
    647755                      if (_v_len23 < _v_len24)
    648756                      {
    649757                        break _block4__branch3;
    650758                      }
    651                       int _v_len___dollar_tmp_m_99_m_44;
    652                       _v_len___dollar_tmp_m_99_m_44 = (_v_len23 - _v_len24);
    653                       if (_v_deref__R3.symbolAt ((0 + 1 + 1)))
     759                      int _v_len___dollar_tmp_m_109_m_38;
     760                      _v_len___dollar_tmp_m_109_m_38 = (_v_len23 - _v_len24);
     761                      if (_v_deref__R3.symbolAt ((0 + 1)))
    654762                      {
    655763                        break _block4__branch3;
    656764                      }
    657765                      Expr _v_deref__deref__R3 = Expr.empty;
    658                       _v_deref__deref__R3 = (Expr) _v_deref__R3.at ((0 + 1 + 1));
     766                      _v_deref__deref__R3 = (Expr) _v_deref__R3.at ((0 + 1));
    659767                      int _v_len25;
    660768                      _v_len25 = _v_deref__deref__R3.getLen ();
    661769                      int _v_len26;
    662                       _v_len26 = 3;
     770                      _v_len26 = 2;
    663771                      if (_v_len25 < _v_len26)
    664772                      {
    665773                        break _block4__branch3;
    666774                      }
    667                       int _v_len___dollar_tmp_m_99_m_41;
    668                       _v_len___dollar_tmp_m_99_m_41 = (_v_len25 - _v_len26);
    669                       if (_v_deref__deref__R3.symbolAt ((0 + 1 + 1)))
     775                      int _v_len___dollar_tmp_m_109_m_35;
     776                      _v_len___dollar_tmp_m_109_m_35 = (_v_len25 - _v_len26);
     777                      if (_v_deref__deref__R3.symbolAt ((0 + 1)))
    670778                      {
    671779                        break _block4__branch3;
    672780                      }
    673781                      Expr _v_deref__deref__deref__R3 = Expr.empty;
    674                       _v_deref__deref__deref__R3 = (Expr) _v_deref__deref__R3.at ((0 + 1 + 1));
     782                      _v_deref__deref__deref__R3 = (Expr) _v_deref__deref__R3.at ((0 + 1));
    675783                      int _v_len27;
    676784                      _v_len27 = _v_deref__deref__deref__R3.getLen ();
     
    681789                        break _block4__branch3;
    682790                      }
    683                       int _v_len___dollar_tmp_m_99_m_38;
    684                       _v_len___dollar_tmp_m_99_m_38 = (_v_len27 - _v_len28);
    685                       if (!_c_7.termEq (_v_deref__R3, 0))
     791                      int _v_len___dollar_tmp_m_109_m_32;
     792                      _v_len___dollar_tmp_m_109_m_32 = (_v_len27 - _v_len28);
     793                      if (!_c_8.termEq (_v_deref__R3, 0))
    686794                      {
    687795                        break _block4__branch3;
    688796                      }
    689                       if (!_c_1.termEq (_v_deref__deref__R3, 0))
     797                      if (!_c_2.termEq (_v_deref__deref__R3, 0))
    690798                      {
    691799                        break _block4__branch3;
    692800                      }
    693                       if (!_c_8.termEq (_v_deref__deref__deref__R3, 0))
     801                      if (!_c_9.termEq (_v_deref__deref__deref__R3, 0))
    694802                      {
    695803                        break _block4__branch3;
    696804                      }
    697                       Expr _ve__dollar_tmp_m_99_m_47 = Expr.empty;
    698                       _ve__dollar_tmp_m_99_m_47 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_99_m_47);
    699                       Expr _vt__dollar_tmp_m_99_m_20 = Expr.empty;
    700                       _vt__dollar_tmp_m_99_m_20 = new Expr (_v_deref__R3, (0 + 1), 1);
    701                       Expr _ve__dollar_tmp_m_99_m_44 = Expr.empty;
    702                       _ve__dollar_tmp_m_99_m_44 = new Expr (_v_deref__R3, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_99_m_44);
    703                       Expr _vt__dollar_tmp_m_99_m_30 = Expr.empty;
    704                       _vt__dollar_tmp_m_99_m_30 = new Expr (_v_deref__deref__R3, (0 + 1), 1);
    705                       Expr _ve__dollar_tmp_m_99_m_41 = Expr.empty;
    706                       _ve__dollar_tmp_m_99_m_41 = new Expr (_v_deref__deref__R3, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_99_m_41);
    707                       Expr _ve__dollar_tmp_m_99_m_38 = Expr.empty;
    708                       _ve__dollar_tmp_m_99_m_38 = new Expr (_v_deref__deref__deref__R3, (0 + 1), _v_len___dollar_tmp_m_99_m_38);
     805                      Expr _ve__dollar_tmp_m_109_m_41 = Expr.empty;
     806                      _ve__dollar_tmp_m_109_m_41 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_109_m_41);
     807                      Expr _ve__dollar_tmp_m_109_m_38 = Expr.empty;
     808                      _ve__dollar_tmp_m_109_m_38 = new Expr (_v_deref__R3, (0 + 1 + 1), _v_len___dollar_tmp_m_109_m_38);
     809                      Expr _ve__dollar_tmp_m_109_m_35 = Expr.empty;
     810                      _ve__dollar_tmp_m_109_m_35 = new Expr (_v_deref__deref__R3, (0 + 1 + 1), _v_len___dollar_tmp_m_109_m_35);
     811                      Expr _ve__dollar_tmp_m_109_m_32 = Expr.empty;
     812                      _ve__dollar_tmp_m_109_m_32 = new Expr (_v_deref__deref__deref__R3, (0 + 1), _v_len___dollar_tmp_m_109_m_32);
    709813                      break _block4;
    710814                    }
     
    718822                        break _block4__branch4;
    719823                      }
    720                       int _v_len___dollar_tmp_m_100_m_48;
    721                       _v_len___dollar_tmp_m_100_m_48 = (_v_len29 - _v_len30);
     824                      int _v_len___dollar_tmp_m_110_m_42;
     825                      _v_len___dollar_tmp_m_110_m_42 = (_v_len29 - _v_len30);
    722826                      if (_ve_R.symbolAt (0))
    723827                      {
     
    729833                      _v_len31 = _v_deref__R4.getLen ();
    730834                      int _v_len32;
    731                       _v_len32 = 3;
     835                      _v_len32 = 2;
    732836                      if (_v_len31 < _v_len32)
    733837                      {
    734838                        break _block4__branch4;
    735839                      }
    736                       int _v_len___dollar_tmp_m_100_m_45;
    737                       _v_len___dollar_tmp_m_100_m_45 = (_v_len31 - _v_len32);
    738                       if (_v_deref__R4.symbolAt ((0 + 1 + 1)))
     840                      int _v_len___dollar_tmp_m_110_m_39;
     841                      _v_len___dollar_tmp_m_110_m_39 = (_v_len31 - _v_len32);
     842                      if (_v_deref__R4.symbolAt ((0 + 1)))
    739843                      {
    740844                        break _block4__branch4;
    741845                      }
    742846                      Expr _v_deref__deref__R4 = Expr.empty;
    743                       _v_deref__deref__R4 = (Expr) _v_deref__R4.at ((0 + 1 + 1));
     847                      _v_deref__deref__R4 = (Expr) _v_deref__R4.at ((0 + 1));
    744848                      int _v_len33;
    745849                      _v_len33 = _v_deref__deref__R4.getLen ();
    746850                      int _v_len34;
    747                       _v_len34 = 3;
     851                      _v_len34 = 2;
    748852                      if (_v_len33 < _v_len34)
    749853                      {
    750854                        break _block4__branch4;
    751855                      }
    752                       int _v_len___dollar_tmp_m_100_m_42;
    753                       _v_len___dollar_tmp_m_100_m_42 = (_v_len33 - _v_len34);
    754                       if (_v_deref__deref__R4.symbolAt ((0 + 1 + 1)))
     856                      int _v_len___dollar_tmp_m_110_m_36;
     857                      _v_len___dollar_tmp_m_110_m_36 = (_v_len33 - _v_len34);
     858                      if (_v_deref__deref__R4.symbolAt ((0 + 1)))
    755859                      {
    756860                        break _block4__branch4;
    757861                      }
    758862                      Expr _v_deref__deref__deref__R4 = Expr.empty;
    759                       _v_deref__deref__deref__R4 = (Expr) _v_deref__deref__R4.at ((0 + 1 + 1));
     863                      _v_deref__deref__deref__R4 = (Expr) _v_deref__deref__R4.at ((0 + 1));
    760864                      int _v_len35;
    761865                      _v_len35 = _v_deref__deref__deref__R4.getLen ();
     
    766870                        break _block4__branch4;
    767871                      }
    768                       int _v_len___dollar_tmp_m_100_m_39;
    769                       _v_len___dollar_tmp_m_100_m_39 = (_v_len35 - _v_len36);
    770                       if (!_c_7.termEq (_v_deref__R4, 0))
     872                      int _v_len___dollar_tmp_m_110_m_33;
     873                      _v_len___dollar_tmp_m_110_m_33 = (_v_len35 - _v_len36);
     874                      if (!_c_8.termEq (_v_deref__R4, 0))
    771875                      {
    772876                        break _block4__branch4;
    773877                      }
    774                       if (!_c_1.termEq (_v_deref__deref__R4, 0))
     878                      if (!_c_2.termEq (_v_deref__deref__R4, 0))
    775879                      {
    776880                        break _block4__branch4;
    777881                      }
    778                       if (!_c_9.termEq (_v_deref__deref__deref__R4, 0))
     882                      if (!_c_10.termEq (_v_deref__deref__deref__R4, 0))
    779883                      {
    780884                        break _block4__branch4;
    781885                      }
    782                       Expr _ve__dollar_tmp_m_100_m_48 = Expr.empty;
    783                       _ve__dollar_tmp_m_100_m_48 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_100_m_48);
    784                       Expr _vt__dollar_tmp_m_100_m_20 = Expr.empty;
    785                       _vt__dollar_tmp_m_100_m_20 = new Expr (_v_deref__R4, (0 + 1), 1);
    786                       Expr _ve__dollar_tmp_m_100_m_45 = Expr.empty;
    787                       _ve__dollar_tmp_m_100_m_45 = new Expr (_v_deref__R4, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_100_m_45);
    788                       Expr _vt__dollar_tmp_m_100_m_30 = Expr.empty;
    789                       _vt__dollar_tmp_m_100_m_30 = new Expr (_v_deref__deref__R4, (0 + 1), 1);
    790                       Expr _ve__dollar_tmp_m_100_m_42 = Expr.empty;
    791                       _ve__dollar_tmp_m_100_m_42 = new Expr (_v_deref__deref__R4, (0 + 1 + 1 + 1), _v_len___dollar_tmp_m_100_m_42);
    792                       Expr _ve__dollar_tmp_m_100_m_39 = Expr.empty;
    793                       _ve__dollar_tmp_m_100_m_39 = new Expr (_v_deref__deref__deref__R4, (0 + 1), _v_len___dollar_tmp_m_100_m_39);
     886                      Expr _ve__dollar_tmp_m_110_m_42 = Expr.empty;
     887                      _ve__dollar_tmp_m_110_m_42 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_110_m_42);
     888                      Expr _ve__dollar_tmp_m_110_m_39 = Expr.empty;
     889                      _ve__dollar_tmp_m_110_m_39 = new Expr (_v_deref__R4, (0 + 1 + 1), _v_len___dollar_tmp_m_110_m_39);
     890                      Expr _ve__dollar_tmp_m_110_m_36 = Expr.empty;
     891                      _ve__dollar_tmp_m_110_m_36 = new Expr (_v_deref__deref__R4, (0 + 1 + 1), _v_len___dollar_tmp_m_110_m_36);
     892                      Expr _ve__dollar_tmp_m_110_m_33 = Expr.empty;
     893                      _ve__dollar_tmp_m_110_m_33 = new Expr (_v_deref__deref__deref__R4, (0 + 1), _v_len___dollar_tmp_m_110_m_33);
    794894                      break _block4;
    795895                    }
     
    803903                        break _block4__branch5;
    804904                      }
    805                       int _v_len___dollar_tmp_m_101_m_19;
    806                       _v_len___dollar_tmp_m_101_m_19 = (_v_len37 - _v_len38);
     905                      int _v_len___dollar_tmp_m_111_m_20;
     906                      _v_len___dollar_tmp_m_111_m_20 = (_v_len37 - _v_len38);
    807907                      if (_ve_R.symbolAt (0))
    808908                      {
     
    819919                        break _block4__branch5;
    820920                      }
    821                       int _v_len___dollar_tmp_m_101_m_16;
    822                       _v_len___dollar_tmp_m_101_m_16 = (_v_len39 - _v_len40);
    823                       if (!_c_8.termEq (_v_deref__R5, 0))
     921                      int _v_len___dollar_tmp_m_111_m_17;
     922                      _v_len___dollar_tmp_m_111_m_17 = (_v_len39 - _v_len40);
     923                      if (!_c_9.termEq (_v_deref__R5, 0))
    824924                      {
    825925                        break _block4__branch5;
    826926                      }
    827                       Expr _ve__dollar_tmp_m_101_m_19 = Expr.empty;
    828                       _ve__dollar_tmp_m_101_m_19 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_101_m_19);
    829                       Expr _ve__dollar_tmp_m_101_m_16 = Expr.empty;
    830                       _ve__dollar_tmp_m_101_m_16 = new Expr (_v_deref__R5, (0 + 1), _v_len___dollar_tmp_m_101_m_16);
     927                      Expr _ve__dollar_tmp_m_111_m_20 = Expr.empty;
     928                      _ve__dollar_tmp_m_111_m_20 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_111_m_20);
     929                      Expr _ve__dollar_tmp_m_111_m_17 = Expr.empty;
     930                      _ve__dollar_tmp_m_111_m_17 = new Expr (_v_deref__R5, (0 + 1), _v_len___dollar_tmp_m_111_m_17);
    831931                      break _block4;
    832932                    }
     
    839939                      break _block3__branch1;
    840940                    }
    841                     int _v_len___dollar_tmp_m_102_m_20;
    842                     _v_len___dollar_tmp_m_102_m_20 = (_v_len41 - _v_len42);
     941                    int _v_len___dollar_tmp_m_112_m_20;
     942                    _v_len___dollar_tmp_m_112_m_20 = (_v_len41 - _v_len42);
    843943                    if (_ve_R.symbolAt (0))
    844944                    {
     
    855955                      break _block3__branch1;
    856956                    }
    857                     int _v_len___dollar_tmp_m_102_m_17;
    858                     _v_len___dollar_tmp_m_102_m_17 = (_v_len43 - _v_len44);
    859                     if (!_c_9.termEq (_v_deref__R6, 0))
     957                    int _v_len___dollar_tmp_m_112_m_17;
     958                    _v_len___dollar_tmp_m_112_m_17 = (_v_len43 - _v_len44);
     959                    if (!_c_10.termEq (_v_deref__R6, 0))
    860960                    {
    861961                      break _block3__branch1;
    862962                    }
    863                     Expr _ve__dollar_tmp_m_102_m_20 = Expr.empty;
    864                     _ve__dollar_tmp_m_102_m_20 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_102_m_20);
    865                     Expr _ve__dollar_tmp_m_102_m_17 = Expr.empty;
    866                     _ve__dollar_tmp_m_102_m_17 = new Expr (_v_deref__R6, (0 + 1), _v_len___dollar_tmp_m_102_m_17);
     963                    Expr _ve__dollar_tmp_m_112_m_20 = Expr.empty;
     964                    _ve__dollar_tmp_m_112_m_20 = new Expr (_ve_R, (0 + 1), _v_len___dollar_tmp_m_112_m_20);
     965                    Expr _ve__dollar_tmp_m_112_m_17 = Expr.empty;
     966                    _ve__dollar_tmp_m_112_m_17 = new Expr (_v_deref__R6, (0 + 1), _v_len___dollar_tmp_m_112_m_17);
    867967                  }
    868968                  Result _v_Get1 = new Result ();
     
    882982                  Result _ve_aux = new Result ();
    883983                  Result _va_14 = new Result ();
    884                   rfp_vars.Gener_Var_Indices (_vs_N, _ge_auxcall1.getExpr (), _c_10, _ve_aux, _va_14);
     984                  rfp_vars.Gener_Var_Indices (_vs_N, _ge_auxcall1.getExpr (), _c_11, _ve_aux, _va_14);
    885985                  _vs_N = _va_14.getExpr ();
    886986                  refal.plus.Box.Store (Free_Idx, _vs_N);
     987                  Del_Pragmas (_ve_aux.getExpr (), _ve_aux);
    887988                  Result _v_Unstick__Blocks1 = new Result ();
    888989                  Unstick_Blocks (_ve_R, _v_Unstick__Blocks1, _v_res2);
    889                   Expr[] _va_16 = { _vs_block , _vt_Pragma , _ve_br };
    890                   Expr[] _va_15 = { _ve_L , new Expr(Expr.concat (_va_16)) , new Expr(new Expr (_c_11, _ve_aux.getExpr ())) , new Expr(new Expr (_c_12, _ve_aux.getExpr ())) , _v_Unstick__Blocks1.getExpr () };
     990                  Expr[] _va_15 = { _ve_L , new Expr(new Expr (_vs_block, _ve_br)) , new Expr(new Expr (_c_12, _ve_aux.getExpr ())) , new Expr(new Expr (_c_4, _ve_aux.getExpr ())) , _v_Unstick__Blocks1.getExpr () };
    891991                  _v_res1.assign (Expr.concat (_va_15));
    892992                  break _block3;
     
    899999                  Result _ge_auxcall2 = new Result ();
    9001000                  rfp_format.MSG (_ve_Fes, _ge_auxcall2);
    901                   Expr[] _va_17 = { _vs_block , _vt_Pragma , _ve_br };
    902                   _v_res1.assign (new Expr (_ve_L, new Expr(Expr.concat (_va_17))));
     1001                  _v_res1.assign (new Expr (_ve_L, new Expr(new Expr (_vs_block, _ve_br))));
    9031002                  _v_res2.assign (_ge_auxcall2.getExpr ());
    9041003                  break _block3;
     
    9061005                Result _v_Unstick__Blocks2 = new Result ();
    9071006                Unstick_Blocks (_ve_R, _v_Unstick__Blocks2, _v_res2);
    908                 Expr[] _va_19 = { _vs_block , _vt_Pragma , _ve_br };
    909                 Expr[] _va_18 = { _ve_L , new Expr(Expr.concat (_va_19)) , _v_Unstick__Blocks2.getExpr () };
    910                 _v_res1.assign (Expr.concat (_va_18));
     1007                Expr[] _va_16 = { _ve_L , new Expr(new Expr (_vs_block, _ve_br)) , _v_Unstick__Blocks2.getExpr () };
     1008                _v_res1.assign (Expr.concat (_va_16));
    9111009              }
    9121010              break _exit__iter1;
     
    9311029            _v_len47 = _v_deref__branches.getLen ();
    9321030            int _v_len48;
    933             _v_len48 = 2;
     1031            _v_len48 = 1;
    9341032            if (_v_len47 < _v_len48)
    9351033            {
     
    9381036            int _v_len__branch;
    9391037            _v_len__branch = (_v_len47 - _v_len48);
    940             if (!_c_1.termEq (_v_deref__branches, 0))
     1038            if (!_c_2.termEq (_v_deref__branches, 0))
    9411039            {
    9421040              throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Unstick_Blocks", "Unexpected fail");
     
    9441042            Expr _ve_rest = Expr.empty;
    9451043            _ve_rest = new Expr (_ve_branches, (0 + 1), _v_len__rest);
    946             Expr _vt_p = Expr.empty;
    947             _vt_p = new Expr (_v_deref__branches, (0 + 1), 1);
    9481044            Expr _ve_branch = Expr.empty;
    949             _ve_branch = new Expr (_v_deref__branches, (0 + 1 + 1), _v_len__branch);
     1045            _ve_branch = new Expr (_v_deref__branches, (0 + 1), _v_len__branch);
    9501046            Result _ve_new__branch = new Result ();
    9511047            Result _ve_Fe = new Result ();
    9521048            Unstick_Blocks (_ve_branch, _ve_new__branch, _ve_Fe);
    9531049            _ve_branches = _ve_rest;
    954             Expr[] _va_20 = { _c_1 , _vt_p , _ve_new__branch.getExpr () };
    955             _ve_br = new Expr (_ve_br, new Expr(Expr.concat (_va_20)));
     1050            _ve_br = new Expr (_ve_br, new Expr(new Expr (_c_2, _ve_new__branch.getExpr ())));
    9561051            _ve_Fes = new Expr (_ve_Fes, new Expr(_ve_Fe.getExpr ()));
    9571052          }
     
    9751070          Expr _v_deref__Snt2 = Expr.empty;
    9761071          _v_deref__Snt2 = (Expr) _ve_Snt.at (0);
    977           if (_v_deref__Snt2.getLen () != 3)
     1072          if (_v_deref__Snt2.getLen () != 2)
    9781073          {
    9791074            break _block1__branch2;
    9801075          }
    981           if (_v_deref__Snt2.symbolAt ((0 + 1 + 1)))
     1076          if (_v_deref__Snt2.symbolAt ((0 + 1)))
    9821077          {
    9831078            break _block1__branch2;
    9841079          }
    9851080          Expr _v_deref__deref__Snt2 = Expr.empty;
    986           _v_deref__deref__Snt2 = (Expr) _v_deref__Snt2.at ((0 + 1 + 1));
     1081          _v_deref__deref__Snt2 = (Expr) _v_deref__Snt2.at ((0 + 1));
    9871082          int _v_len51;
    9881083          _v_len51 = _v_deref__deref__Snt2.getLen ();
     
    9951090          int _v_len__branches2;
    9961091          _v_len__branches2 = (_v_len51 - _v_len52);
    997           if (!_c_3.termEq (_v_deref__Snt2, 0))
     1092          if (!_c_4.termEq (_v_deref__Snt2, 0))
    9981093          {
    9991094            break _block1__branch2;
     
    10051100          Expr _ve_R = Expr.empty;
    10061101          _ve_R = new Expr (_ve_Snt, (0 + 1), _v_len__R2);
    1007           Expr _vt_Pragma = Expr.empty;
    1008           _vt_Pragma = new Expr (_v_deref__Snt2, (0 + 1), 1);
    10091102          Expr _vs_block = Expr.empty;
    10101103          _vs_block = new Expr (_v_deref__deref__Snt2, 0, 1);
     
    10131106          _block6: {
    10141107            _block6__branch1: {
    1015               if (!_vs_block.termEq (_c_6, 0))
     1108              if (!_vs_block.termEq (_c_7, 0))
    10161109              {
    10171110                break _block6__branch1;
     
    10191112              break _block6;
    10201113            }
    1021             if (!_vs_block.termEq (_c_7, 0))
     1114            if (!_vs_block.termEq (_c_8, 0))
    10221115            {
    10231116              break _block1__branch2;
     
    10491142          _v_len55 = _v_deref__Snt3.getLen ();
    10501143          int _v_len56;
    1051           _v_len56 = 2;
     1144          _v_len56 = 1;
    10521145          if (_v_len55 < _v_len56)
    10531146          {
     
    10561149          int _v_len__Re;
    10571150          _v_len__Re = (_v_len55 - _v_len56);
    1058           if (!_c_3.termEq (_v_deref__Snt3, 0))
     1151          if (!_c_4.termEq (_v_deref__Snt3, 0))
    10591152          {
    10601153            break _block1__branch3;
     
    10621155          Expr _ve_R = Expr.empty;
    10631156          _ve_R = new Expr (_ve_Snt, (0 + 1), _v_len__R3);
    1064           Expr _vt_Pragma = Expr.empty;
    1065           _vt_Pragma = new Expr (_v_deref__Snt3, (0 + 1), 1);
    10661157          Expr _ve_Re = Expr.empty;
    1067           _ve_Re = new Expr (_v_deref__Snt3, (0 + 1 + 1), _v_len__Re);
     1158          _ve_Re = new Expr (_v_deref__Snt3, (0 + 1), _v_len__Re);
    10681159          Result _ve_assigns = new Result ();
    1069           Result _va_21 = new Result ();
    1070           Flatten_Result (_c_13, Expr.empty, _ve_Re, _ve_assigns, _va_21);
    1071           _ve_Re = _va_21.getExpr ();
     1160          Result _va_17 = new Result ();
     1161          Flatten_Result (_c_13, Expr.empty, _ve_Re, _ve_assigns, _va_17);
     1162          _ve_Re = _va_17.getExpr ();
    10721163          Expr _ve_Result = Expr.empty;
    10731164          _block7: {
     
    11071198              Expr _ve_2 = Expr.empty;
    11081199              _ve_2 = new Expr (_v_deref__Re, (0 + 1), _v_len__2);
    1109               Expr[] _va_22 = { _c_3 , _vt_Pragma , _ve_1 };
    1110               _ve_Result = new Expr (new Expr(Expr.concat (_va_22)), _ve_2);
     1200              _ve_Result = new Expr (new Expr(new Expr (_c_4, _ve_1)), _ve_2);
    11111201              break _block7;
    11121202            }
    1113             Expr[] _va_23 = { _c_3 , _vt_Pragma , _ve_Re };
    1114             _ve_Result = new Expr(Expr.concat (_va_23));
     1203            _ve_Result = new Expr(new Expr (_c_4, _ve_Re));
    11151204          }
    11161205          _block8: {
     
    11241213                break _block8__branch1;
    11251214              }
    1126               int _v_len___dollar_tmp_m_122_m_13;
    1127               _v_len___dollar_tmp_m_122_m_13 = (_v_len61 - _v_len62);
    1128               Expr _vv__dollar_tmp_m_122_m_13 = Expr.empty;
    1129               _vv__dollar_tmp_m_122_m_13 = new Expr (_ve_R, 0, _v_len___dollar_tmp_m_122_m_13);
     1215              int _v_len___dollar_tmp_m_133_m_13;
     1216              _v_len___dollar_tmp_m_133_m_13 = (_v_len61 - _v_len62);
     1217              Expr _vv__dollar_tmp_m_133_m_13 = Expr.empty;
     1218              _vv__dollar_tmp_m_133_m_13 = new Expr (_ve_R, 0, _v_len___dollar_tmp_m_133_m_13);
    11301219              Result _v_Unstick__Blocks4 = new Result ();
    11311220              Unstick_Blocks (_ve_R, _v_Unstick__Blocks4, _v_res2);
    1132               Expr[] _va_24 = { _ve_L , _ve_assigns.getExpr () , _ve_Result , _v_Unstick__Blocks4.getExpr () };
    1133               _v_res1.assign (Expr.concat (_va_24));
     1221              Expr[] _va_18 = { _ve_L , _ve_assigns.getExpr () , _ve_Result , _v_Unstick__Blocks4.getExpr () };
     1222              _v_res1.assign (Expr.concat (_va_18));
    11341223              break _block8;
    11351224            }
     
    11371226            rfp_format.Format_Exp (_ve_Re, _ve_Fe);
    11381227            rfp_format.MSG (new Expr (new Expr(_ve_Fe.getExpr ()), new Expr(_ve_Fe.getExpr ())), _ve_Fe);
    1139             Expr[] _va_25 = { _ve_L , _ve_assigns.getExpr () , _ve_Result };
    1140             _v_res1.assign (Expr.concat (_va_25));
     1228            Expr[] _va_19 = { _ve_L , _ve_assigns.getExpr () , _ve_Result };
     1229            _v_res1.assign (Expr.concat (_va_19));
    11411230            _v_res2.assign (_ve_Fe.getExpr ());
    11421231          }
     
    11731262          _v_len65 = _v_deref__deref__Snt4.getLen ();
    11741263          int _v_len66;
    1175           _v_len66 = 2;
     1264          _v_len66 = 1;
    11761265          if (_v_len65 < _v_len66)
    11771266          {
     
    11841273            break _block1__branch4;
    11851274          }
    1186           if (!_c_1.termEq (_v_deref__deref__Snt4, 0))
     1275          if (!_c_2.termEq (_v_deref__deref__Snt4, 0))
    11871276          {
    11881277            break _block1__branch4;
     
    11901279          Expr _ve_R = Expr.empty;
    11911280          _ve_R = new Expr (_ve_Snt, (0 + 1), _v_len__R4);
    1192           Expr _vt_p1 = Expr.empty;
    1193           _vt_p1 = new Expr (_v_deref__deref__Snt4, (0 + 1), 1);
    11941281          Expr _ve_body = Expr.empty;
    1195           _ve_body = new Expr (_v_deref__deref__Snt4, (0 + 1 + 1), _v_len__body);
     1282          _ve_body = new Expr (_v_deref__deref__Snt4, (0 + 1), _v_len__body);
    11961283          Result _v_Unstick__Blocks5 = new Result ();
    1197           Result _va_26 = new Result ();
    1198           Unstick_Blocks (_ve_body, _va_26, _v_Unstick__Blocks5);
    1199           _ve_body = _va_26.getExpr ();
     1284          Result _va_20 = new Result ();
     1285          Unstick_Blocks (_ve_body, _va_20, _v_Unstick__Blocks5);
     1286          _ve_body = _va_20.getExpr ();
    12001287          Expr _vt_empty = Expr.empty;
    12011288          _vt_empty = new Expr(_v_Unstick__Blocks5.getExpr ());
    12021289          Result _v_Unstick__Blocks6 = new Result ();
    12031290          Unstick_Blocks (_ve_R, _v_Unstick__Blocks6, _v_res2);
    1204           Expr[] _va_28 = { _c_1 , _vt_p1 , _ve_body };
    1205           Expr[] _va_27 = { _ve_L , new Expr(new Expr (_c_15, new Expr(Expr.concat (_va_28)))) , _v_Unstick__Blocks6.getExpr () };
    1206           _v_res1.assign (Expr.concat (_va_27));
     1291          Expr[] _va_21 = { _ve_L , new Expr(new Expr (_c_15, new Expr(new Expr (_c_2, _ve_body)))) , _v_Unstick__Blocks6.getExpr () };
     1292          _v_res1.assign (Expr.concat (_va_21));
    12071293          break _block1;
    12081294        }
     
    12371323          _v_len67 = _v_deref__deref__Snt52.getLen ();
    12381324          int _v_len68;
    1239           _v_len68 = 2;
     1325          _v_len68 = 1;
    12401326          if (_v_len67 < _v_len68)
    12411327          {
     
    12471333          _v_len69 = _v_deref__deref__Snt5.getLen ();
    12481334          int _v_len70;
    1249           _v_len70 = 2;
     1335          _v_len70 = 1;
    12501336          if (_v_len69 < _v_len70)
    12511337          {
     
    12581344            break _block1__branch5;
    12591345          }
    1260           if (!_c_1.termEq (_v_deref__deref__Snt5, 0))
     1346          if (!_c_2.termEq (_v_deref__deref__Snt5, 0))
    12611347          {
    12621348            break _block1__branch5;
    12631349          }
    1264           if (!_c_1.termEq (_v_deref__deref__Snt52, 0))
     1350          if (!_c_2.termEq (_v_deref__deref__Snt52, 0))
    12651351          {
    12661352            break _block1__branch5;
     
    12681354          Expr _vt_IterVars = Expr.empty;
    12691355          _vt_IterVars = new Expr (_v_deref__Snt5, (0 + 1 + 1), 1);
    1270           Expr _vt_p1 = Expr.empty;
    1271           _vt_p1 = new Expr (_v_deref__deref__Snt5, (0 + 1), 1);
    12721356          Expr _ve_body = Expr.empty;
    1273           _ve_body = new Expr (_v_deref__deref__Snt5, (0 + 1 + 1), _v_len__body2);
    1274           Expr _vt_p2 = Expr.empty;
    1275           _vt_p2 = new Expr (_v_deref__deref__Snt52, (0 + 1), 1);
     1357          _ve_body = new Expr (_v_deref__deref__Snt5, (0 + 1), _v_len__body2);
    12761358          Expr _ve_condition = Expr.empty;
    1277           _ve_condition = new Expr (_v_deref__deref__Snt52, (0 + 1 + 1), _v_len__condition);
     1359          _ve_condition = new Expr (_v_deref__deref__Snt52, (0 + 1), _v_len__condition);
    12781360          Result _v_Unstick__Blocks7 = new Result ();
    1279           Result _va_29 = new Result ();
    1280           Unstick_Blocks (_ve_body, _va_29, _v_Unstick__Blocks7);
    1281           _ve_body = _va_29.getExpr ();
    1282           Expr _vt__dollar_tmp_m_132_m_40 = Expr.empty;
    1283           _vt__dollar_tmp_m_132_m_40 = new Expr(_v_Unstick__Blocks7.getExpr ());
     1361          Result _va_22 = new Result ();
     1362          Unstick_Blocks (_ve_body, _va_22, _v_Unstick__Blocks7);
     1363          _ve_body = _va_22.getExpr ();
     1364          Expr _vt__dollar_tmp_m_143_m_40 = Expr.empty;
     1365          _vt__dollar_tmp_m_143_m_40 = new Expr(_v_Unstick__Blocks7.getExpr ());
    12841366          Result _ve_Format = new Result ();
    1285           Result _va_30 = new Result ();
    1286           Unstick_Blocks (_ve_condition, _va_30, _ve_Format);
    1287           _ve_condition = _va_30.getExpr ();
    1288           Expr[] _va_32 = { _c_1 , _vt_p1 , _ve_body };
    1289           Expr[] _va_33 = { _c_1 , _vt_p2 , _ve_condition };
    1290           Expr[] _va_31 = { _c_16 , new Expr(Expr.concat (_va_32)) , _vt_IterVars , new Expr(Expr.concat (_va_33)) };
    1291           _v_res1.assign (new Expr (_ve_L, new Expr(Expr.concat (_va_31))));
     1367          Result _va_23 = new Result ();
     1368          Unstick_Blocks (_ve_condition, _va_23, _ve_Format);
     1369          _ve_condition = _va_23.getExpr ();
     1370          Expr[] _va_24 = { _c_16 , new Expr(new Expr (_c_2, _ve_body)) , _vt_IterVars , new Expr(new Expr (_c_2, _ve_condition)) };
     1371          _v_res1.assign (new Expr (_ve_L, new Expr(Expr.concat (_va_24))));
    12921372          _v_res2.assign (_ve_Format.getExpr ());
    12931373          break _block1;
     
    13231403          _v_len73 = _v_deref__deref__Snt6.getLen ();
    13241404          int _v_len74;
    1325           _v_len74 = 2;
     1405          _v_len74 = 1;
    13261406          if (_v_len73 < _v_len74)
    13271407          {
     
    13341414            break _block1__branch6;
    13351415          }
    1336           if (!_c_1.termEq (_v_deref__deref__Snt6, 0))
     1416          if (!_c_2.termEq (_v_deref__deref__Snt6, 0))
    13371417          {
    13381418            break _block1__branch6;
     
    13421422          Expr _vt_CatchBlock = Expr.empty;
    13431423          _vt_CatchBlock = new Expr (_v_deref__Snt6, (0 + 1 + 1 + _v_len__NOFAIL), 1);
    1344           Expr _vt_p1 = Expr.empty;
    1345           _vt_p1 = new Expr (_v_deref__deref__Snt6, (0 + 1), 1);
    13461424          Expr _ve_TrySnt = Expr.empty;
    1347           _ve_TrySnt = new Expr (_v_deref__deref__Snt6, (0 + 1 + 1), _v_len__TrySnt);
     1425          _ve_TrySnt = new Expr (_v_deref__deref__Snt6, (0 + 1), _v_len__TrySnt);
    13481426          Result _v_Unstick__Blocks8 = new Result ();
    1349           Result _va_34 = new Result ();
    1350           Unstick_Blocks (_ve_TrySnt, _va_34, _v_Unstick__Blocks8);
    1351           _ve_TrySnt = _va_34.getExpr ();
     1427          Result _va_25 = new Result ();
     1428          Unstick_Blocks (_ve_TrySnt, _va_25, _v_Unstick__Blocks8);
     1429          _ve_TrySnt = _va_25.getExpr ();
    13521430          Expr _vt_Try__Fe = Expr.empty;
    13531431          _vt_Try__Fe = new Expr(_v_Unstick__Blocks8.getExpr ());
     
    13591437          Result _ge_auxcall3 = new Result ();
    13601438          rfp_format.MSG (new Expr (_vt_Try__Fe, _vt_Catch__Fe), _ge_auxcall3);
    1361           Expr[] _va_36 = { _c_1 , _vt_p1 , _ve_TrySnt };
    1362           Expr[] _va_35 = { _c_17 , new Expr(Expr.concat (_va_36)) , _ve_NOFAIL , _ve_CatchBlock.getExpr () };
    1363           _v_res1.assign (new Expr (_ve_L, new Expr(Expr.concat (_va_35))));
     1439          Expr[] _va_26 = { _c_17 , new Expr(new Expr (_c_2, _ve_TrySnt)) , _ve_NOFAIL , _ve_CatchBlock.getExpr () };
     1440          _v_res1.assign (new Expr (_ve_L, new Expr(Expr.concat (_va_26))));
    13641441          _v_res2.assign (_ge_auxcall3.getExpr ());
    13651442          break _block1;
     
    13701447            break _block1__branch7;
    13711448          }
    1372           if (_ve_Snt.symbolAt (0))
     1449          if (!_c_18.termEq (_ve_Snt, 0))
    13731450          {
    13741451            break _block1__branch7;
    13751452          }
    1376           Expr _v_deref__Snt7 = Expr.empty;
    1377           _v_deref__Snt7 = (Expr) _ve_Snt.at (0);
     1453          _v_res1.assign (_ve_Sentence);
     1454          _v_res2.assign (_c_18);
     1455          break _block1;
     1456        }
     1457        _block1__branch8: {
    13781458          int _v_len75;
    1379           _v_len75 = _v_deref__Snt7.getLen ();
     1459          _v_len75 = _ve_Snt.getLen ();
    13801460          int _v_len76;
    13811461          _v_len76 = 1;
    13821462          if (_v_len75 < _v_len76)
    13831463          {
    1384             break _block1__branch7;
    1385           }
    1386           int _v_len___dollar_tmp_m_139_m_10;
    1387           _v_len___dollar_tmp_m_139_m_10 = (_v_len75 - _v_len76);
    1388           if (!_c_14.termEq (_v_deref__Snt7, 0))
    1389           {
    1390             break _block1__branch7;
    1391           }
    1392           Expr _ve__dollar_tmp_m_139_m_10 = Expr.empty;
    1393           _ve__dollar_tmp_m_139_m_10 = new Expr (_v_deref__Snt7, (0 + 1), _v_len___dollar_tmp_m_139_m_10);
    1394           _v_res1.assign (_ve_Sentence);
    1395           _v_res2.assign (_c_18);
    1396           break _block1;
    1397         }
    1398         _block1__branch8: {
    1399           int _v_len77;
    1400           _v_len77 = _ve_Snt.getLen ();
    1401           int _v_len78;
    1402           _v_len78 = 1;
    1403           if (_v_len77 < _v_len78)
    1404           {
    14051464            break _block1__branch8;
    14061465          }
    14071466          int _v_len__R5;
    1408           _v_len__R5 = (_v_len77 - _v_len78);
    1409           if (_ve_Snt.symbolAt (0))
    1410           {
    1411             break _block1__branch8;
    1412           }
    1413           Expr _v_deref__Snt8 = Expr.empty;
    1414           _v_deref__Snt8 = (Expr) _ve_Snt.at (0);
    1415           if (_v_deref__Snt8.getLen () != 2)
    1416           {
    1417             break _block1__branch8;
    1418           }
    1419           if (!_c_19.termEq (_v_deref__Snt8, 0))
     1467          _v_len__R5 = (_v_len75 - _v_len76);
     1468          if (!_c_19.termEq (_ve_Snt, 0))
    14201469          {
    14211470            break _block1__branch8;
     
    14231472          Expr _ve_R = Expr.empty;
    14241473          _ve_R = new Expr (_ve_Snt, (0 + 1), _v_len__R5);
    1425           Expr _vt_Pragma = Expr.empty;
    1426           _vt_Pragma = new Expr (_v_deref__Snt8, (0 + 1), 1);
    14271474          Result _v_Unstick__Blocks10 = new Result ();
    1428           Result _va_37 = new Result ();
    1429           Unstick_Blocks (_ve_R, _va_37, _v_Unstick__Blocks10);
    1430           _ve_R = _va_37.getExpr ();
    1431           Expr _vt__dollar_tmp_m_141_m_32 = Expr.empty;
    1432           _vt__dollar_tmp_m_141_m_32 = new Expr(_v_Unstick__Blocks10.getExpr ());
    1433           Expr[] _va_38 = { _ve_L , new Expr(new Expr (_c_19, _vt_Pragma)) , _ve_R };
    1434           _v_res1.assign (Expr.concat (_va_38));
     1475          Result _va_27 = new Result ();
     1476          Unstick_Blocks (_ve_R, _va_27, _v_Unstick__Blocks10);
     1477          _ve_R = _va_27.getExpr ();
     1478          Expr _vt__dollar_tmp_m_152_m_32 = Expr.empty;
     1479          _vt__dollar_tmp_m_152_m_32 = new Expr(_v_Unstick__Blocks10.getExpr ());
     1480          Expr[] _va_28 = { _ve_L , _c_19 , _ve_R };
     1481          _v_res1.assign (Expr.concat (_va_28));
    14351482          _v_res2.assign (_c_18);
    14361483          break _block1;
     
    14471494  }
    14481495
     1496  @RefalFormat("$func Flatten_Result s (e) e = e (e);")
    14491497  static  void Flatten_Result (Expr _vs_Istail, Expr _ve_Re, Expr _ve_items, Result _v_res1, Result _v_res2) throws RefalException
    14501498  {
     
    14811529              break _block2__branch1;
    14821530            }
    1483             int _v_len___dollar_tmp_m_147_m_30;
    1484             _v_len___dollar_tmp_m_147_m_30 = (_v_len3 - _v_len4);
    1485             if (!_c_6.termEq (_v_deref__1, 0))
     1531            int _v_len___dollar_tmp_m_158_m_28;
     1532            _v_len___dollar_tmp_m_158_m_28 = (_v_len3 - _v_len4);
     1533            if (!_c_7.termEq (_v_deref__1, 0))
    14861534            {
    14871535              break _block2__branch1;
    14881536            }
    1489             Expr _ve__dollar_tmp_m_147_m_30 = Expr.empty;
    1490             _ve__dollar_tmp_m_147_m_30 = new Expr (_v_deref__1, (0 + 1), _v_len___dollar_tmp_m_147_m_30);
     1537            Expr _ve__dollar_tmp_m_158_m_28 = Expr.empty;
     1538            _ve__dollar_tmp_m_158_m_28 = new Expr (_v_deref__1, (0 + 1), _v_len___dollar_tmp_m_158_m_28);
    14911539            break _block2;
    14921540          }
     
    15051553            break _block1__branch1;
    15061554          }
    1507           int _v_len___dollar_tmp_m_147_m_44;
    1508           _v_len___dollar_tmp_m_147_m_44 = (_v_len5 - _v_len6);
    1509           if (!_c_7.termEq (_v_deref__12, 0))
     1555          int _v_len___dollar_tmp_m_158_m_40;
     1556          _v_len___dollar_tmp_m_158_m_40 = (_v_len5 - _v_len6);
     1557          if (!_c_8.termEq (_v_deref__12, 0))
    15101558          {
    15111559            break _block1__branch1;
    15121560          }
    1513           Expr _ve__dollar_tmp_m_147_m_44 = Expr.empty;
    1514           _ve__dollar_tmp_m_147_m_44 = new Expr (_v_deref__12, (0 + 1), _v_len___dollar_tmp_m_147_m_44);
     1561          Expr _ve__dollar_tmp_m_158_m_40 = Expr.empty;
     1562          _ve__dollar_tmp_m_158_m_40 = new Expr (_v_deref__12, (0 + 1), _v_len___dollar_tmp_m_158_m_40);
    15151563        }
    15161564        Result _ve_1 = new Result ();
     
    15441592          _vs_N = new Expr (_v_Get1.getExpr (), 0, 1);
    15451593          Result _ve_aux = new Result ();
    1546           Result _va_39 = new Result ();
    1547           rfp_vars.Gener_Var_Indices (_vs_N, _ve_Format.getExpr (), _c_20, _ve_aux, _va_39);
    1548           _vs_N = _va_39.getExpr ();
     1594          Result _va_29 = new Result ();
     1595          rfp_vars.Gener_Var_Indices (_vs_N, _ve_Format.getExpr (), _c_20, _ve_aux, _va_29);
     1596          _vs_N = _va_29.getExpr ();
    15491597          refal.plus.Box.Store (Free_Idx, _vs_N);
     1598          Del_Pragmas (_ve_aux.getExpr (), _ve_aux);
    15501599          Result _v_Flatten__Result1 = new Result ();
    15511600          Flatten_Result (_vs_Istail, new Expr (_ve_Re, _ve_aux.getExpr ()), _ve_rest, _v_Flatten__Result1, _v_res2);
    1552           Expr[] _va_40 = { _ve_1.getExpr () , new Expr(new Expr (_c_11, _ve_aux.getExpr ())) , _v_Flatten__Result1.getExpr () };
    1553           _v_res1.assign (Expr.concat (_va_40));
     1601          Expr[] _va_30 = { _ve_1.getExpr () , new Expr(new Expr (_c_12, _ve_aux.getExpr ())) , _v_Flatten__Result1.getExpr () };
     1602          _v_res1.assign (Expr.concat (_va_30));
    15541603        }
    15551604        break _block1;
     
    15751624        _v_len9 = _v_deref__items.getLen ();
    15761625        int _v_len10;
    1577         _v_len10 = 3;
     1626        _v_len10 = 2;
    15781627        if (_v_len9 < _v_len10)
    15791628        {
     
    15881637        Expr _ve_rest = Expr.empty;
    15891638        _ve_rest = new Expr (_ve_items, (0 + 1), _v_len__rest2);
    1590         Expr _vt_p = Expr.empty;
    1591         _vt_p = new Expr (_v_deref__items, (0 + 1), 1);
    15921639        Expr _vt_name = Expr.empty;
    1593         _vt_name = new Expr (_v_deref__items, (0 + 1 + 1), 1);
     1640        _vt_name = new Expr (_v_deref__items, (0 + 1), 1);
    15941641        Expr _ve_r = Expr.empty;
    1595         _ve_r = new Expr (_v_deref__items, (0 + 1 + 1 + 1), _v_len__r);
     1642        _ve_r = new Expr (_v_deref__items, (0 + 1 + 1), _v_len__r);
    15961643        Result _ve_assigns = new Result ();
    1597         Result _va_41 = new Result ();
    1598         Flatten_Result (_c_22, Expr.empty, _ve_r, _ve_assigns, _va_41);
    1599         _ve_r = _va_41.getExpr ();
     1644        Result _va_31 = new Result ();
     1645        Flatten_Result (_c_22, Expr.empty, _ve_r, _ve_assigns, _va_31);
     1646        _ve_r = _va_31.getExpr ();
    16001647        Expr _vt_1 = Expr.empty;
    1601         Expr[] _va_42 = { _c_21 , _vt_p , _vt_name , _ve_r };
    1602         _vt_1 = new Expr(Expr.concat (_va_42));
     1648        Expr[] _va_32 = { _c_21 , _vt_name , _ve_r };
     1649        _vt_1 = new Expr(Expr.concat (_va_32));
    16031650        _block4: {
    16041651          _block4__branch1: {
     
    16301677          rfp_format.Format_Exp (_vt_1, _ge_auxcall1);
    16311678          Result _ve_aux1 = new Result ();
    1632           Result _va_43 = new Result ();
    1633           rfp_vars.Gener_Var_Indices (_vs_N, _ge_auxcall1.getExpr (), _c_23, _ve_aux1, _va_43);
    1634           _vs_N = _va_43.getExpr ();
     1679          Result _va_33 = new Result ();
     1680          rfp_vars.Gener_Var_Indices (_vs_N, _ge_auxcall1.getExpr (), _c_23, _ve_aux1, _va_33);
     1681          _vs_N = _va_33.getExpr ();
    16351682          refal.plus.Box.Store (Free_Idx, _vs_N);
     1683          Del_Pragmas (_ve_aux1.getExpr (), _ve_aux1);
    16361684          Result _v_Flatten__Result2 = new Result ();
    16371685          Flatten_Result (_vs_Istail, new Expr (_ve_Re, _ve_aux1.getExpr ()), _ve_rest, _v_Flatten__Result2, _v_res2);
    1638           Expr[] _va_44 = { _ve_assigns.getExpr () , new Expr(new Expr (_c_12, _vt_1)) , new Expr(new Expr (_c_11, _ve_aux1.getExpr ())) , _v_Flatten__Result2.getExpr () };
    1639           _v_res1.assign (Expr.concat (_va_44));
     1686          Expr[] _va_34 = { _ve_assigns.getExpr () , new Expr(new Expr (_c_4, _vt_1)) , new Expr(new Expr (_c_12, _ve_aux1.getExpr ())) , _v_Flatten__Result2.getExpr () };
     1687          _v_res1.assign (Expr.concat (_va_34));
    16401688        }
    16411689        break _block1;
     
    16771725        _ve_r = new Expr (_v_deref__items2, (0 + 1), _v_len__r2);
    16781726        Result _ve_assigns = new Result ();
    1679         Result _va_45 = new Result ();
    1680         Flatten_Result (_c_22, Expr.empty, _ve_r, _ve_assigns, _va_45);
    1681         _ve_r = _va_45.getExpr ();
     1727        Result _va_35 = new Result ();
     1728        Flatten_Result (_c_22, Expr.empty, _ve_r, _ve_assigns, _va_35);
     1729        _ve_r = _va_35.getExpr ();
    16821730        Result _v_Flatten__Result3 = new Result ();
    16831731        Flatten_Result (_vs_Istail, new Expr (_ve_Re, new Expr(new Expr (_c_24, _ve_r))), _ve_rest, _v_Flatten__Result3, _v_res2);
     
    17121760  }
    17131761
     1762  @RefalFormat("$func Generate_In_Vars (e) e = (e) e;")
    17141763  static  void Generate_In_Vars (Expr _ve_in, Expr _ve_Sentence, Result _v_res1, Result _v_res2) throws RefalException
    17151764  {
     
    17201769        Expr _ve_Pe = Expr.empty;
    17211770        Expr _ve_Snt = Expr.empty;
     1771        Expr _vs_pragmas = Expr.empty;
    17221772        _block2: {
    17231773          _block2__branch1: {
     
    17481798            int _v_len__Pe__4;
    17491799            _v_len__Pe__4 = (_v_len3 - _v_len4);
    1750             if (!_c_8.termEq (_v_deref__Sentence, 0))
     1800            if (_v_deref__Sentence.symbolAt ((0 + 1)))
     1801            {
     1802              break _block2__branch1;
     1803            }
     1804            Expr _v_deref__deref__Sentence = Expr.empty;
     1805            _v_deref__deref__Sentence = (Expr) _v_deref__Sentence.at ((0 + 1));
     1806            int _v_len5;
     1807            _v_len5 = _v_deref__deref__Sentence.getLen ();
     1808            int _v_len6;
     1809            _v_len6 = 1;
     1810            if (_v_len5 < _v_len6)
     1811            {
     1812              break _block2__branch1;
     1813            }
     1814            int _v_len___dollar_tmp_m_205_m_20;
     1815            _v_len___dollar_tmp_m_205_m_20 = (_v_len5 - _v_len6);
     1816            if (!_c_9.termEq (_v_deref__Sentence, 0))
     1817            {
     1818              break _block2__branch1;
     1819            }
     1820            if (!_c_1.termEq (_v_deref__deref__Sentence, 0))
    17511821            {
    17521822              break _block2__branch1;
     
    17541824            Expr _ge_Snt__4 = Expr.empty;
    17551825            _ge_Snt__4 = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt__4);
    1756             Expr _vt__dollar_tmp_m_192_m_12 = Expr.empty;
    1757             _vt__dollar_tmp_m_192_m_12 = new Expr (_v_deref__Sentence, (0 + 1), 1);
    17581826            Expr _ge_Pe__4 = Expr.empty;
    17591827            _ge_Pe__4 = new Expr (_v_deref__Sentence, (0 + 1 + 1), _v_len__Pe__4);
     1828            Expr _ve__dollar_tmp_m_205_m_20 = Expr.empty;
     1829            _ve__dollar_tmp_m_205_m_20 = new Expr (_v_deref__deref__Sentence, (0 + 1), _v_len___dollar_tmp_m_205_m_20);
    17601830            _ve_Pe = _ge_Pe__4;
    17611831            _ve_Snt = _ge_Snt__4;
     1832            _vs_pragmas = _c_25;
    17621833            break _block2;
    17631834          }
    1764           int _v_len5;
    1765           _v_len5 = _ve_Sentence.getLen ();
    1766           int _v_len6;
    1767           _v_len6 = 1;
    1768           if (_v_len5 < _v_len6)
     1835          _block2__branch2: {
     1836            int _v_len7;
     1837            _v_len7 = _ve_Sentence.getLen ();
     1838            int _v_len8;
     1839            _v_len8 = 1;
     1840            if (_v_len7 < _v_len8)
     1841            {
     1842              break _block2__branch2;
     1843            }
     1844            int _v_len__Snt__42;
     1845            _v_len__Snt__42 = (_v_len7 - _v_len8);
     1846            if (_ve_Sentence.symbolAt (0))
     1847            {
     1848              break _block2__branch2;
     1849            }
     1850            Expr _v_deref__Sentence2 = Expr.empty;
     1851            _v_deref__Sentence2 = (Expr) _ve_Sentence.at (0);
     1852            int _v_len9;
     1853            _v_len9 = _v_deref__Sentence2.getLen ();
     1854            int _v_len10;
     1855            _v_len10 = 2;
     1856            if (_v_len9 < _v_len10)
     1857            {
     1858              break _block2__branch2;
     1859            }
     1860            int _v_len__Pe__42;
     1861            _v_len__Pe__42 = (_v_len9 - _v_len10);
     1862            if (_v_deref__Sentence2.symbolAt ((0 + 1)))
     1863            {
     1864              break _block2__branch2;
     1865            }
     1866            Expr _v_deref__deref__Sentence2 = Expr.empty;
     1867            _v_deref__deref__Sentence2 = (Expr) _v_deref__Sentence2.at ((0 + 1));
     1868            int _v_len11;
     1869            _v_len11 = _v_deref__deref__Sentence2.getLen ();
     1870            int _v_len12;
     1871            _v_len12 = 1;
     1872            if (_v_len11 < _v_len12)
     1873            {
     1874              break _block2__branch2;
     1875            }
     1876            int _v_len___dollar_tmp_m_206_m_21;
     1877            _v_len___dollar_tmp_m_206_m_21 = (_v_len11 - _v_len12);
     1878            if (!_c_10.termEq (_v_deref__Sentence2, 0))
     1879            {
     1880              break _block2__branch2;
     1881            }
     1882            if (!_c_1.termEq (_v_deref__deref__Sentence2, 0))
     1883            {
     1884              break _block2__branch2;
     1885            }
     1886            Expr _ge_Snt__4 = Expr.empty;
     1887            _ge_Snt__4 = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt__42);
     1888            Expr _ge_Pe__4 = Expr.empty;
     1889            _ge_Pe__4 = new Expr (_v_deref__Sentence2, (0 + 1 + 1), _v_len__Pe__42);
     1890            Expr _ve__dollar_tmp_m_206_m_21 = Expr.empty;
     1891            _ve__dollar_tmp_m_206_m_21 = new Expr (_v_deref__deref__Sentence2, (0 + 1), _v_len___dollar_tmp_m_206_m_21);
     1892            _ve_Pe = _ge_Pe__4;
     1893            _ve_Snt = _ge_Snt__4;
     1894            _vs_pragmas = _c_25;
     1895            break _block2;
     1896          }
     1897          _block2__branch3: {
     1898            int _v_len13;
     1899            _v_len13 = _ve_Sentence.getLen ();
     1900            int _v_len14;
     1901            _v_len14 = 1;
     1902            if (_v_len13 < _v_len14)
     1903            {
     1904              break _block2__branch3;
     1905            }
     1906            int _v_len__Snt__43;
     1907            _v_len__Snt__43 = (_v_len13 - _v_len14);
     1908            if (_ve_Sentence.symbolAt (0))
     1909            {
     1910              break _block2__branch3;
     1911            }
     1912            Expr _v_deref__Sentence3 = Expr.empty;
     1913            _v_deref__Sentence3 = (Expr) _ve_Sentence.at (0);
     1914            int _v_len15;
     1915            _v_len15 = _v_deref__Sentence3.getLen ();
     1916            int _v_len16;
     1917            _v_len16 = 1;
     1918            if (_v_len15 < _v_len16)
     1919            {
     1920              break _block2__branch3;
     1921            }
     1922            int _v_len__Pe__43;
     1923            _v_len__Pe__43 = (_v_len15 - _v_len16);
     1924            if (!_c_9.termEq (_v_deref__Sentence3, 0))
     1925            {
     1926              break _block2__branch3;
     1927            }
     1928            Expr _ge_Snt__4 = Expr.empty;
     1929            _ge_Snt__4 = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt__43);
     1930            Expr _ge_Pe__4 = Expr.empty;
     1931            _ge_Pe__4 = new Expr (_v_deref__Sentence3, (0 + 1), _v_len__Pe__43);
     1932            _ve_Pe = _ge_Pe__4;
     1933            _ve_Snt = _ge_Snt__4;
     1934            _vs_pragmas = _c_26;
     1935            break _block2;
     1936          }
     1937          int _v_len17;
     1938          _v_len17 = _ve_Sentence.getLen ();
     1939          int _v_len18;
     1940          _v_len18 = 1;
     1941          if (_v_len17 < _v_len18)
    17691942          {
    17701943            break _block1__branch1;
    17711944          }
    1772           int _v_len__Snt__42;
    1773           _v_len__Snt__42 = (_v_len5 - _v_len6);
     1945          int _v_len__Snt__44;
     1946          _v_len__Snt__44 = (_v_len17 - _v_len18);
    17741947          if (_ve_Sentence.symbolAt (0))
    17751948          {
    17761949            break _block1__branch1;
    17771950          }
    1778           Expr _v_deref__Sentence2 = Expr.empty;
    1779           _v_deref__Sentence2 = (Expr) _ve_Sentence.at (0);
    1780           int _v_len7;
    1781           _v_len7 = _v_deref__Sentence2.getLen ();
    1782           int _v_len8;
    1783           _v_len8 = 2;
    1784           if (_v_len7 < _v_len8)
     1951          Expr _v_deref__Sentence4 = Expr.empty;
     1952          _v_deref__Sentence4 = (Expr) _ve_Sentence.at (0);
     1953          int _v_len19;
     1954          _v_len19 = _v_deref__Sentence4.getLen ();
     1955          int _v_len20;
     1956          _v_len20 = 1;
     1957          if (_v_len19 < _v_len20)
    17851958          {
    17861959            break _block1__branch1;
    17871960          }
    1788           int _v_len__Pe__42;
    1789           _v_len__Pe__42 = (_v_len7 - _v_len8);
    1790           if (!_c_9.termEq (_v_deref__Sentence2, 0))
     1961          int _v_len__Pe__44;
     1962          _v_len__Pe__44 = (_v_len19 - _v_len20);
     1963          if (!_c_10.termEq (_v_deref__Sentence4, 0))
    17911964          {
    17921965            break _block1__branch1;
    17931966          }
    17941967          Expr _ge_Snt__4 = Expr.empty;
    1795           _ge_Snt__4 = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt__42);
    1796           Expr _vt__dollar_tmp_m_193_m_13 = Expr.empty;
    1797           _vt__dollar_tmp_m_193_m_13 = new Expr (_v_deref__Sentence2, (0 + 1), 1);
     1968          _ge_Snt__4 = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt__44);
    17981969          Expr _ge_Pe__4 = Expr.empty;
    1799           _ge_Pe__4 = new Expr (_v_deref__Sentence2, (0 + 1 + 1), _v_len__Pe__42);
     1970          _ge_Pe__4 = new Expr (_v_deref__Sentence4, (0 + 1), _v_len__Pe__44);
    18001971          _ve_Pe = _ge_Pe__4;
    18011972          _ve_Snt = _ge_Snt__4;
     1973          _vs_pragmas = _c_26;
    18021974        }
    18031975        _block3: {
     
    18161988                break _negation1;
    18171989              }
    1818               Expr.SplitIterator _va_46 = _ve_args.getExpr ().leftSplit(0);
    1819               _exit1: _continue1: for ( ; ; _va_46.next ())
     1990              Expr.SplitIterator _va_36 = _ve_args.getExpr ().leftSplit(0);
     1991              _exit1: _continue1: for ( ; ; _va_36.next ())
    18201992              {
    1821                 Expr _ve__dollar_tmp_m_198_m_24 = _va_46.getLeft();
    1822                 Expr _v_lsplit__args = _va_46.getRight();
    1823                 if (!_va_46.isValid ())
     1993                Expr _ve__dollar_tmp_m_213_m_24 = _va_36.getLeft();
     1994                Expr _v_lsplit__args = _va_36.getRight();
     1995                if (!_va_36.isValid ())
    18241996                {
    18251997                  break _negation1;
     
    18352007                Expr _v_deref__lsplit__args = Expr.empty;
    18362008                _v_deref__lsplit__args = (Expr) _v_lsplit__args.at (0);
    1837                 int _v_len9;
    1838                 _v_len9 = _v_deref__lsplit__args.getLen ();
    1839                 int _v_len10;
    1840                 _v_len10 = 1;
    1841                 if (_v_len9 < _v_len10)
     2009                int _v_len21;
     2010                _v_len21 = _v_deref__lsplit__args.getLen ();
     2011                int _v_len22;
     2012                _v_len22 = 1;
     2013                if (_v_len21 < _v_len22)
    18422014                {
    18432015                  continue _continue1;
    18442016                }
    1845                 int _v_len___dollar_tmp_m_198_m_27;
    1846                 _v_len___dollar_tmp_m_198_m_27 = (_v_len9 - _v_len10);
    1847                 Expr _ve__dollar_tmp_m_198_m_27 = Expr.empty;
    1848                 _ve__dollar_tmp_m_198_m_27 = new Expr (_v_deref__lsplit__args, 0, _v_len___dollar_tmp_m_198_m_27);
     2017                int _v_len___dollar_tmp_m_213_m_27;
     2018                _v_len___dollar_tmp_m_213_m_27 = (_v_len21 - _v_len22);
     2019                Expr _ve__dollar_tmp_m_213_m_27 = Expr.empty;
     2020                _ve__dollar_tmp_m_213_m_27 = new Expr (_v_deref__lsplit__args, 0, _v_len___dollar_tmp_m_213_m_27);
    18492021                Expr _vt_1 = Expr.empty;
    1850                 _vt_1 = new Expr (_v_deref__lsplit__args, (0 + _v_len___dollar_tmp_m_198_m_27), 1);
     2022                _vt_1 = new Expr (_v_deref__lsplit__args, (0 + _v_len___dollar_tmp_m_213_m_27), 1);
    18512023                Expr _v_subexpr__lsplit__args = Expr.empty;
    18522024                _v_subexpr__lsplit__args = new Expr (_v_lsplit__args, (0 + 1), (_v_lsplit__args.getLen () - (0 + 1 + 0)));
    1853                 Expr.SplitIterator _va_47 = _v_subexpr__lsplit__args.leftSplit(0);
    1854                 _exit2: _continue2: for ( ; ; _va_47.next ())
     2025                Expr.SplitIterator _va_37 = _v_subexpr__lsplit__args.leftSplit(0);
     2026                _exit2: _continue2: for ( ; ; _va_37.next ())
    18552027                {
    1856                   Expr _ve__dollar_tmp_m_198_m_33 = _va_47.getLeft();
    1857                   Expr _v_lsplit__lsplit__args = _va_47.getRight();
    1858                   if (!_va_47.isValid ())
     2028                  Expr _ve__dollar_tmp_m_213_m_33 = _va_37.getLeft();
     2029                  Expr _v_lsplit__lsplit__args = _va_37.getRight();
     2030                  if (!_va_37.isValid ())
    18592031                  {
    18602032                    continue _continue1;
    18612033                  }
    1862                   int _v_len11;
    1863                   _v_len11 = _v_lsplit__lsplit__args.getLen ();
    1864                   int _v_len12;
    1865                   _v_len12 = 1;
    1866                   if (_v_len11 < _v_len12)
     2034                  int _v_len23;
     2035                  _v_len23 = _v_lsplit__lsplit__args.getLen ();
     2036                  int _v_len24;
     2037                  _v_len24 = 1;
     2038                  if (_v_len23 < _v_len24)
    18672039                  {
    18682040                    continue _continue1;
    18692041                  }
    1870                   int _v_len___dollar_tmp_m_198_m_42;
    1871                   _v_len___dollar_tmp_m_198_m_42 = (_v_len11 - _v_len12);
     2042                  int _v_len___dollar_tmp_m_213_m_42;
     2043                  _v_len___dollar_tmp_m_213_m_42 = (_v_len23 - _v_len24);
    18722044                  if (_v_lsplit__lsplit__args.symbolAt (0))
    18732045                  {
     
    18762048                  Expr _v_deref__lsplit__lsplit__args = Expr.empty;
    18772049                  _v_deref__lsplit__lsplit__args = (Expr) _v_lsplit__lsplit__args.at (0);
    1878                   int _v_len13;
    1879                   _v_len13 = _v_deref__lsplit__lsplit__args.getLen ();
    1880                   int _v_len14;
    1881                   _v_len14 = 1;
    1882                   if (_v_len13 < _v_len14)
     2050                  int _v_len25;
     2051                  _v_len25 = _v_deref__lsplit__lsplit__args.getLen ();
     2052                  int _v_len26;
     2053                  _v_len26 = 1;
     2054                  if (_v_len25 < _v_len26)
    18832055                  {
    18842056                    continue _continue2;
    18852057                  }
    1886                   int _v_len___dollar_tmp_m_198_m_36;
    1887                   _v_len___dollar_tmp_m_198_m_36 = (_v_len13 - _v_len14);
    1888                   if (!_vt_1.termEq (_v_deref__lsplit__lsplit__args, (0 + _v_len___dollar_tmp_m_198_m_36)))
     2058                  int _v_len___dollar_tmp_m_213_m_36;
     2059                  _v_len___dollar_tmp_m_213_m_36 = (_v_len25 - _v_len26);
     2060                  if (!_vt_1.termEq (_v_deref__lsplit__lsplit__args, (0 + _v_len___dollar_tmp_m_213_m_36)))
    18892061                  {
    18902062                    continue _continue2;
    18912063                  }
    1892                   Expr _ve__dollar_tmp_m_198_m_42 = Expr.empty;
    1893                   _ve__dollar_tmp_m_198_m_42 = new Expr (_v_lsplit__lsplit__args, (0 + 1), _v_len___dollar_tmp_m_198_m_42);
    1894                   Expr _ve__dollar_tmp_m_198_m_36 = Expr.empty;
    1895                   _ve__dollar_tmp_m_198_m_36 = new Expr (_v_deref__lsplit__lsplit__args, 0, _v_len___dollar_tmp_m_198_m_36);
     2064                  Expr _ve__dollar_tmp_m_213_m_42 = Expr.empty;
     2065                  _ve__dollar_tmp_m_213_m_42 = new Expr (_v_lsplit__lsplit__args, (0 + 1), _v_len___dollar_tmp_m_213_m_42);
     2066                  Expr _ve__dollar_tmp_m_213_m_36 = Expr.empty;
     2067                  _ve__dollar_tmp_m_213_m_36 = new Expr (_v_deref__lsplit__lsplit__args, 0, _v_len___dollar_tmp_m_213_m_36);
    18962068                  break _exit2;
    18972069                }
     
    19052077          }
    19062078          Result _ve_in__expr = new Result ();
    1907           Result _vs__dollar_tmp_m_200_m_56 = new Result ();
    1908           rfp_vars.Gener_Var_Indices (_c_4, _ve_in, _c_25, _ve_in__expr, _vs__dollar_tmp_m_200_m_56);
    1909           _ge_in__1 = _ve_in__expr.getExpr ();
    1910           _ge_Sentence__1 = new Expr (new Expr(new Expr (_c_12, _ve_in__expr.getExpr ())), _ve_Sentence);
     2079          Result _vs__dollar_tmp_m_215_m_56 = new Result ();
     2080          rfp_vars.Gener_Var_Indices (_c_5, _ve_in, _c_27, _ve_in__expr, _vs__dollar_tmp_m_215_m_56);
     2081          _block5: {
     2082            _block5__branch1: {
     2083              if (!_vs_pragmas.termEq (_c_26, 0))
     2084              {
     2085                break _block5__branch1;
     2086              }
     2087              Result _ge_in__expr__7 = new Result ();
     2088              Del_Pragmas (_ve_in__expr.getExpr (), _ge_in__expr__7);
     2089              _ge_in__1 = _ge_in__expr__7.getExpr ();
     2090              _ge_Sentence__1 = new Expr (new Expr(new Expr (_c_4, _ge_in__expr__7.getExpr ())), _ve_Sentence);
     2091              break _block5;
     2092            }
     2093            _ge_in__1 = _ve_in__expr.getExpr ();
     2094            _ge_Sentence__1 = new Expr (new Expr(new Expr (_c_28, _ve_in__expr.getExpr ())), _ve_Sentence);
     2095          }
    19112096        }
    19122097        break _block1;
    19132098      }
    19142099      _block1__branch2: {
    1915         int _v_len15;
    1916         _v_len15 = _ve_Sentence.getLen ();
    1917         int _v_len16;
    1918         _v_len16 = 1;
    1919         if (_v_len15 < _v_len16)
     2100        int _v_len27;
     2101        _v_len27 = _ve_Sentence.getLen ();
     2102        int _v_len28;
     2103        _v_len28 = 1;
     2104        if (_v_len27 < _v_len28)
    19202105        {
    19212106          break _block1__branch2;
    19222107        }
    19232108        int _v_len__Snt;
    1924         _v_len__Snt = (_v_len15 - _v_len16);
     2109        _v_len__Snt = (_v_len27 - _v_len28);
    19252110        if (_ve_Sentence.symbolAt (0))
    19262111        {
    19272112          break _block1__branch2;
    19282113        }
    1929         Expr _v_deref__Sentence3 = Expr.empty;
    1930         _v_deref__Sentence3 = (Expr) _ve_Sentence.at (0);
    1931         int _v_len17;
    1932         _v_len17 = _v_deref__Sentence3.getLen ();
    1933         int _v_len18;
    1934         _v_len18 = 2;
    1935         if (_v_len17 < _v_len18)
     2114        Expr _v_deref__Sentence5 = Expr.empty;
     2115        _v_deref__Sentence5 = (Expr) _ve_Sentence.at (0);
     2116        int _v_len29;
     2117        _v_len29 = _v_deref__Sentence5.getLen ();
     2118        int _v_len30;
     2119        _v_len30 = 2;
     2120        if (_v_len29 < _v_len30)
    19362121        {
    19372122          break _block1__branch2;
    19382123        }
    19392124        int _v_len__branches;
    1940         _v_len__branches = (_v_len17 - _v_len18);
    1941         if (!_v_deref__Sentence3.symbolAt (0))
     2125        _v_len__branches = (_v_len29 - _v_len30);
     2126        if (_v_deref__Sentence5.symbolAt ((0 + 1)))
     2127        {
     2128          break _block1__branch2;
     2129        }
     2130        Expr _v_deref__deref__Sentence5 = Expr.empty;
     2131        _v_deref__deref__Sentence5 = (Expr) _v_deref__Sentence5.at ((0 + 1));
     2132        int _v_len31;
     2133        _v_len31 = _v_deref__deref__Sentence5.getLen ();
     2134        int _v_len32;
     2135        _v_len32 = 1;
     2136        if (_v_len31 < _v_len32)
     2137        {
     2138          break _block1__branch2;
     2139        }
     2140        int _v_len__Pragma;
     2141        _v_len__Pragma = (_v_len31 - _v_len32);
     2142        if (!_v_deref__Sentence5.symbolAt (0))
     2143        {
     2144          break _block1__branch2;
     2145        }
     2146        if (!_c_1.termEq (_v_deref__deref__Sentence5, 0))
    19422147        {
    19432148          break _block1__branch2;
     
    19462151        _ve_Snt = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt);
    19472152        Expr _vs_block = Expr.empty;
    1948         _vs_block = new Expr (_v_deref__Sentence3, 0, 1);
    1949         Expr _vt_Pragma = Expr.empty;
    1950         _vt_Pragma = new Expr (_v_deref__Sentence3, (0 + 1), 1);
     2153        _vs_block = new Expr (_v_deref__Sentence5, 0, 1);
    19512154        Expr _ve_branches = Expr.empty;
    1952         _ve_branches = new Expr (_v_deref__Sentence3, (0 + 1 + 1), _v_len__branches);
    1953         _block5: {
    1954           _block5__branch1: {
    1955             if (!_vs_block.termEq (_c_6, 0))
    1956             {
    1957               break _block5__branch1;
    1958             }
    1959             break _block5;
    1960           }
    1961           if (!_vs_block.termEq (_c_7, 0))
     2155        _ve_branches = new Expr (_v_deref__Sentence5, (0 + 1 + 1), _v_len__branches);
     2156        Expr _ve_Pragma = Expr.empty;
     2157        _ve_Pragma = new Expr (_v_deref__deref__Sentence5, (0 + 1), _v_len__Pragma);
     2158        _block6: {
     2159          _block6__branch1: {
     2160            if (!_vs_block.termEq (_c_7, 0))
     2161            {
     2162              break _block6__branch1;
     2163            }
     2164            break _block6;
     2165          }
     2166          if (!_vs_block.termEq (_c_8, 0))
    19622167          {
    19632168            break _block1__branch2;
     
    19652170        }
    19662171        Result _ve_in__expr = new Result ();
    1967         Result _vs__dollar_tmp_m_211_m_54 = new Result ();
    1968         rfp_vars.Gener_Var_Indices (_c_4, _ve_in, _c_25, _ve_in__expr, _vs__dollar_tmp_m_211_m_54);
     2172        Result _vs__dollar_tmp_m_231_m_54 = new Result ();
     2173        rfp_vars.Gener_Var_Indices (_c_5, _ve_in, _c_27, _ve_in__expr, _vs__dollar_tmp_m_231_m_54);
    19692174        Result _ve_in__vars = new Result ();
    19702175        rfp_vars.Vars (_ve_in__expr.getExpr (), _ve_in__vars);
     
    19792184            }
    19802185            _ge_in__1 = _ve_in__expr.getExpr ();
    1981             Expr[] _va_48 = { _vs_block , _vt_Pragma , _ve_br };
    1982             _ge_Sentence__1 = new Expr (new Expr(Expr.concat (_va_48)), _ve_Snt);
     2186            Expr[] _va_38 = { _vs_block , new Expr(new Expr (_c_1, _ve_Pragma)) , _ve_br };
     2187            _ge_Sentence__1 = new Expr (new Expr(Expr.concat (_va_38)), _ve_Snt);
    19832188            break _exit__iter1;
    19842189          }
    1985           int _v_len19;
    1986           _v_len19 = _ve_branches.getLen ();
    1987           int _v_len20;
    1988           _v_len20 = 1;
    1989           if (_v_len19 < _v_len20)
     2190          int _v_len33;
     2191          _v_len33 = _ve_branches.getLen ();
     2192          int _v_len34;
     2193          _v_len34 = 1;
     2194          if (_v_len33 < _v_len34)
    19902195          {
    19912196            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
    19922197          }
    19932198          int _v_len__rest;
    1994           _v_len__rest = (_v_len19 - _v_len20);
     2199          _v_len__rest = (_v_len33 - _v_len34);
    19952200          if (_ve_branches.symbolAt (0))
    19962201          {
     
    19992204          Expr _v_deref__branches = Expr.empty;
    20002205          _v_deref__branches = (Expr) _ve_branches.at (0);
    2001           int _v_len21;
    2002           _v_len21 = _v_deref__branches.getLen ();
    2003           int _v_len22;
    2004           _v_len22 = 3;
    2005           if (_v_len21 < _v_len22)
     2206          int _v_len35;
     2207          _v_len35 = _v_deref__branches.getLen ();
     2208          int _v_len36;
     2209          _v_len36 = 3;
     2210          if (_v_len35 < _v_len36)
    20062211          {
    20072212            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
    20082213          }
    20092214          int _v_len__br__snt;
    2010           _v_len__br__snt = (_v_len21 - _v_len22);
     2215          _v_len__br__snt = (_v_len35 - _v_len36);
    20112216          if (_v_deref__branches.symbolAt ((0 + 1 + 1)))
    20122217          {
     
    20152220          Expr _v_deref__deref__branches = Expr.empty;
    20162221          _v_deref__deref__branches = (Expr) _v_deref__branches.at ((0 + 1 + 1));
    2017           int _v_len23;
    2018           _v_len23 = _v_deref__deref__branches.getLen ();
    2019           int _v_len24;
    2020           _v_len24 = 2;
    2021           if (_v_len23 < _v_len24)
     2222          int _v_len37;
     2223          _v_len37 = _v_deref__deref__branches.getLen ();
     2224          int _v_len38;
     2225          _v_len38 = 2;
     2226          if (_v_len37 < _v_len38)
    20222227          {
    20232228            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
    20242229          }
    20252230          int _v_len__Pe;
    2026           _v_len__Pe = (_v_len23 - _v_len24);
    2027           if (!_c_1.termEq (_v_deref__branches, 0))
     2231          _v_len__Pe = (_v_len37 - _v_len38);
     2232          if (!_c_2.termEq (_v_deref__branches, 0))
    20282233          {
    20292234            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     
    20452250          Expr _ve_Pe = Expr.empty;
    20462251          _ve_Pe = new Expr (_v_deref__deref__branches, (0 + 1 + 1), _v_len__Pe);
    2047           _block7: {
    2048             _block7__branch1: {
     2252          _block8: {
     2253            _block8__branch1: {
    20492254              Result _ge_auxcall2 = new Result ();
    20502255              rfp_format.Format_Exp (_ve_Pe, _ge_auxcall2);
    20512256              if (!rfp_format.IsSubformat (_ge_auxcall2.getExpr (), _ve_in))
    20522257              {
    2053                 break _block7__branch1;
     2258                break _block8__branch1;
    20542259              }
    20552260              Result _ve_vars = new Result ();
     
    20602265                  break _negation2;
    20612266                }
    2062                 Expr.SplitIterator _va_49 = _ve_vars.getExpr ().leftSplit(0);
    2063                 _exit3: _continue3: for ( ; ; _va_49.next ())
     2267                Expr.SplitIterator _va_39 = _ve_vars.getExpr ().leftSplit(0);
     2268                _exit3: _continue3: for ( ; ; _va_39.next ())
    20642269                {
    2065                   Expr _ve__dollar_tmp_m_217_m_26 = _va_49.getLeft();
    2066                   Expr _v_lsplit__vars = _va_49.getRight();
    2067                   if (!_va_49.isValid ())
     2270                  Expr _ve__dollar_tmp_m_237_m_26 = _va_39.getLeft();
     2271                  Expr _v_lsplit__vars = _va_39.getRight();
     2272                  if (!_va_39.isValid ())
    20682273                  {
    20692274                    break _negation2;
     
    20792284                  Expr _v_deref__lsplit__vars = Expr.empty;
    20802285                  _v_deref__lsplit__vars = (Expr) _v_lsplit__vars.at (0);
    2081                   int _v_len25;
    2082                   _v_len25 = _v_deref__lsplit__vars.getLen ();
    2083                   int _v_len26;
    2084                   _v_len26 = 1;
    2085                   if (_v_len25 < _v_len26)
     2286                  int _v_len39;
     2287                  _v_len39 = _v_deref__lsplit__vars.getLen ();
     2288                  int _v_len40;
     2289                  _v_len40 = 1;
     2290                  if (_v_len39 < _v_len40)
    20862291                  {
    20872292                    continue _continue3;
    20882293                  }
    2089                   int _v_len___dollar_tmp_m_217_m_29;
    2090                   _v_len___dollar_tmp_m_217_m_29 = (_v_len25 - _v_len26);
    2091                   Expr _ve__dollar_tmp_m_217_m_29 = Expr.empty;
    2092                   _ve__dollar_tmp_m_217_m_29 = new Expr (_v_deref__lsplit__vars, 0, _v_len___dollar_tmp_m_217_m_29);
     2294                  int _v_len___dollar_tmp_m_237_m_29;
     2295                  _v_len___dollar_tmp_m_237_m_29 = (_v_len39 - _v_len40);
     2296                  Expr _ve__dollar_tmp_m_237_m_29 = Expr.empty;
     2297                  _ve__dollar_tmp_m_237_m_29 = new Expr (_v_deref__lsplit__vars, 0, _v_len___dollar_tmp_m_237_m_29);
    20932298                  Expr _vt_1 = Expr.empty;
    2094                   _vt_1 = new Expr (_v_deref__lsplit__vars, (0 + _v_len___dollar_tmp_m_217_m_29), 1);
     2299                  _vt_1 = new Expr (_v_deref__lsplit__vars, (0 + _v_len___dollar_tmp_m_237_m_29), 1);
    20952300                  Expr _v_subexpr__lsplit__vars = Expr.empty;
    20962301                  _v_subexpr__lsplit__vars = new Expr (_v_lsplit__vars, (0 + 1), (_v_lsplit__vars.getLen () - (0 + 1 + 0)));
    2097                   Expr.SplitIterator _va_50 = _v_subexpr__lsplit__vars.leftSplit(0);
    2098                   _exit4: _continue4: for ( ; ; _va_50.next ())
     2302                  Expr.SplitIterator _va_40 = _v_subexpr__lsplit__vars.leftSplit(0);
     2303                  _exit4: _continue4: for ( ; ; _va_40.next ())
    20992304                  {
    2100                     Expr _ve__dollar_tmp_m_217_m_35 = _va_50.getLeft();
    2101                     Expr _v_lsplit__lsplit__vars = _va_50.getRight();
    2102                     if (!_va_50.isValid ())
     2305                    Expr _ve__dollar_tmp_m_237_m_35 = _va_40.getLeft();
     2306                    Expr _v_lsplit__lsplit__vars = _va_40.getRight();
     2307                    if (!_va_40.isValid ())
    21032308                    {
    21042309                      continue _continue3;
    21052310                    }
    2106                     int _v_len27;
    2107                     _v_len27 = _v_lsplit__lsplit__vars.getLen ();
    2108                     int _v_len28;
    2109                     _v_len28 = 1;
    2110                     if (_v_len27 < _v_len28)
     2311                    int _v_len41;
     2312                    _v_len41 = _v_lsplit__lsplit__vars.getLen ();
     2313                    int _v_len42;
     2314                    _v_len42 = 1;
     2315                    if (_v_len41 < _v_len42)
    21112316                    {
    21122317                      continue _continue3;
    21132318                    }
    2114                     int _v_len___dollar_tmp_m_217_m_44;
    2115                     _v_len___dollar_tmp_m_217_m_44 = (_v_len27 - _v_len28);
     2319                    int _v_len___dollar_tmp_m_237_m_44;
     2320                    _v_len___dollar_tmp_m_237_m_44 = (_v_len41 - _v_len42);
    21162321                    if (_v_lsplit__lsplit__vars.symbolAt (0))
    21172322                    {
     
    21202325                    Expr _v_deref__lsplit__lsplit__vars = Expr.empty;
    21212326                    _v_deref__lsplit__lsplit__vars = (Expr) _v_lsplit__lsplit__vars.at (0);
    2122                     int _v_len29;
    2123                     _v_len29 = _v_deref__lsplit__lsplit__vars.getLen ();
    2124                     int _v_len30;
    2125                     _v_len30 = 1;
    2126                     if (_v_len29 < _v_len30)
     2327                    int _v_len43;
     2328                    _v_len43 = _v_deref__lsplit__lsplit__vars.getLen ();
     2329                    int _v_len44;
     2330                    _v_len44 = 1;
     2331                    if (_v_len43 < _v_len44)
    21272332                    {
    21282333                      continue _continue4;
    21292334                    }
    2130                     int _v_len___dollar_tmp_m_217_m_38;
    2131                     _v_len___dollar_tmp_m_217_m_38 = (_v_len29 - _v_len30);
    2132                     if (!_vt_1.termEq (_v_deref__lsplit__lsplit__vars, (0 + _v_len___dollar_tmp_m_217_m_38)))
     2335                    int _v_len___dollar_tmp_m_237_m_38;
     2336                    _v_len___dollar_tmp_m_237_m_38 = (_v_len43 - _v_len44);
     2337                    if (!_vt_1.termEq (_v_deref__lsplit__lsplit__vars, (0 + _v_len___dollar_tmp_m_237_m_38)))
    21332338                    {
    21342339                      continue _continue4;
    21352340                    }
    2136                     Expr _ve__dollar_tmp_m_217_m_44 = Expr.empty;
    2137                     _ve__dollar_tmp_m_217_m_44 = new Expr (_v_lsplit__lsplit__vars, (0 + 1), _v_len___dollar_tmp_m_217_m_44);
    2138                     Expr _ve__dollar_tmp_m_217_m_38 = Expr.empty;
    2139                     _ve__dollar_tmp_m_217_m_38 = new Expr (_v_deref__lsplit__lsplit__vars, 0, _v_len___dollar_tmp_m_217_m_38);
     2341                    Expr _ve__dollar_tmp_m_237_m_44 = Expr.empty;
     2342                    _ve__dollar_tmp_m_237_m_44 = new Expr (_v_lsplit__lsplit__vars, (0 + 1), _v_len___dollar_tmp_m_237_m_44);
     2343                    Expr _ve__dollar_tmp_m_237_m_38 = Expr.empty;
     2344                    _ve__dollar_tmp_m_237_m_38 = new Expr (_v_deref__lsplit__lsplit__vars, 0, _v_len___dollar_tmp_m_237_m_38);
    21402345                    break _exit4;
    21412346                  }
    21422347                  break _exit3;
    21432348                }
    2144                 break _block7__branch1;
     2349                break _block8__branch1;
    21452350              }
    21462351              Result _ve_pats = new Result ();
     
    21492354              Result _ge_auxcall3 = new Result ();
    21502355              rfp_helper.Subst (_ve_pats.getExpr (), _ve_repls.getExpr (), _ve_br__snt, _ge_auxcall3);
    2151               Expr[] _va_51 = { _c_1 , _vt_p , _ge_auxcall3.getExpr () };
    2152               _ve_br = new Expr (_ve_br, new Expr(Expr.concat (_va_51)));
     2356              Expr[] _va_41 = { _c_2 , _vt_p , _ge_auxcall3.getExpr () };
     2357              _ve_br = new Expr (_ve_br, new Expr(Expr.concat (_va_41)));
    21532358              _ve_branches = _ve_rest;
    2154               break _block7;
    2155             }
    2156             Expr[] _va_53 = { _vs_dir , _vt_pp , _ve_Pe };
    2157             Expr[] _va_52 = { _c_1 , _vt_p , new Expr(Expr.concat (_va_53)) , _ve_br__snt };
    2158             _ve_br = new Expr (_ve_br, new Expr(Expr.concat (_va_52)));
     2359              break _block8;
     2360            }
     2361            Expr[] _va_43 = { _vs_dir , _vt_pp , _ve_Pe };
     2362            Expr[] _va_42 = { _c_2 , _vt_p , new Expr(Expr.concat (_va_43)) , _ve_br__snt };
     2363            _ve_br = new Expr (_ve_br, new Expr(Expr.concat (_va_42)));
     2364            _ve_branches = _ve_rest;
     2365          }
     2366        }
     2367        break _block1;
     2368      }
     2369      _block1__branch3: {
     2370        int _v_len45;
     2371        _v_len45 = _ve_Sentence.getLen ();
     2372        int _v_len46;
     2373        _v_len46 = 1;
     2374        if (_v_len45 < _v_len46)
     2375        {
     2376          break _block1__branch3;
     2377        }
     2378        int _v_len__Snt2;
     2379        _v_len__Snt2 = (_v_len45 - _v_len46);
     2380        if (_ve_Sentence.symbolAt (0))
     2381        {
     2382          break _block1__branch3;
     2383        }
     2384        Expr _v_deref__Sentence6 = Expr.empty;
     2385        _v_deref__Sentence6 = (Expr) _ve_Sentence.at (0);
     2386        int _v_len47;
     2387        _v_len47 = _v_deref__Sentence6.getLen ();
     2388        int _v_len48;
     2389        _v_len48 = 1;
     2390        if (_v_len47 < _v_len48)
     2391        {
     2392          break _block1__branch3;
     2393        }
     2394        int _v_len__branches2;
     2395        _v_len__branches2 = (_v_len47 - _v_len48);
     2396        if (!_v_deref__Sentence6.symbolAt (0))
     2397        {
     2398          break _block1__branch3;
     2399        }
     2400        Expr _ve_Snt = Expr.empty;
     2401        _ve_Snt = new Expr (_ve_Sentence, (0 + 1), _v_len__Snt2);
     2402        Expr _vs_block = Expr.empty;
     2403        _vs_block = new Expr (_v_deref__Sentence6, 0, 1);
     2404        Expr _ve_branches = Expr.empty;
     2405        _ve_branches = new Expr (_v_deref__Sentence6, (0 + 1), _v_len__branches2);
     2406        _block10: {
     2407          _block10__branch1: {
     2408            if (!_vs_block.termEq (_c_7, 0))
     2409            {
     2410              break _block10__branch1;
     2411            }
     2412            break _block10;
     2413          }
     2414          if (!_vs_block.termEq (_c_8, 0))
     2415          {
     2416            break _block1__branch3;
     2417          }
     2418        }
     2419        Result _ve_in__expr = new Result ();
     2420        Result _vs__dollar_tmp_m_249_m_54 = new Result ();
     2421        rfp_vars.Gener_Var_Indices (_c_5, _ve_in, _c_27, _ve_in__expr, _vs__dollar_tmp_m_249_m_54);
     2422        Del_Pragmas (_ve_in__expr.getExpr (), _ve_in__expr);
     2423        Result _ve_in__vars = new Result ();
     2424        rfp_vars.Vars (_ve_in__expr.getExpr (), _ve_in__vars);
     2425        Expr _ve_br = Expr.empty;
     2426        _ve_br = Expr.empty;
     2427        _exit__iter2: for ( ; ; )
     2428        {
     2429          _iter2: {
     2430            if (_ve_branches.getLen () != 0)
     2431            {
     2432              break _iter2;
     2433            }
     2434            _ge_in__1 = _ve_in__expr.getExpr ();
     2435            _ge_Sentence__1 = new Expr (new Expr(new Expr (_vs_block, _ve_br)), _ve_Snt);
     2436            break _exit__iter2;
     2437          }
     2438          int _v_len49;
     2439          _v_len49 = _ve_branches.getLen ();
     2440          int _v_len50;
     2441          _v_len50 = 1;
     2442          if (_v_len49 < _v_len50)
     2443          {
     2444            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2445          }
     2446          int _v_len__rest2;
     2447          _v_len__rest2 = (_v_len49 - _v_len50);
     2448          if (_ve_branches.symbolAt (0))
     2449          {
     2450            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2451          }
     2452          Expr _v_deref__branches2 = Expr.empty;
     2453          _v_deref__branches2 = (Expr) _ve_branches.at (0);
     2454          int _v_len51;
     2455          _v_len51 = _v_deref__branches2.getLen ();
     2456          int _v_len52;
     2457          _v_len52 = 2;
     2458          if (_v_len51 < _v_len52)
     2459          {
     2460            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2461          }
     2462          int _v_len__br__snt2;
     2463          _v_len__br__snt2 = (_v_len51 - _v_len52);
     2464          if (_v_deref__branches2.symbolAt ((0 + 1)))
     2465          {
     2466            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2467          }
     2468          Expr _v_deref__deref__branches2 = Expr.empty;
     2469          _v_deref__deref__branches2 = (Expr) _v_deref__branches2.at ((0 + 1));
     2470          int _v_len53;
     2471          _v_len53 = _v_deref__deref__branches2.getLen ();
     2472          int _v_len54;
     2473          _v_len54 = 1;
     2474          if (_v_len53 < _v_len54)
     2475          {
     2476            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2477          }
     2478          int _v_len__Pe2;
     2479          _v_len__Pe2 = (_v_len53 - _v_len54);
     2480          if (!_c_2.termEq (_v_deref__branches2, 0))
     2481          {
     2482            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2483          }
     2484          if (!_v_deref__deref__branches2.symbolAt (0))
     2485          {
     2486            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Generate_In_Vars", "Unexpected fail");
     2487          }
     2488          Expr _ve_rest = Expr.empty;
     2489          _ve_rest = new Expr (_ve_branches, (0 + 1), _v_len__rest2);
     2490          Expr _ve_br__snt = Expr.empty;
     2491          _ve_br__snt = new Expr (_v_deref__branches2, (0 + 1 + 1), _v_len__br__snt2);
     2492          Expr _vs_dir = Expr.empty;
     2493          _vs_dir = new Expr (_v_deref__deref__branches2, 0, 1);
     2494          Expr _ve_Pe = Expr.empty;
     2495          _ve_Pe = new Expr (_v_deref__deref__branches2, (0 + 1), _v_len__Pe2);
     2496          _block12: {
     2497            _block12__branch1: {
     2498              Result _ge_auxcall4 = new Result ();
     2499              rfp_format.Format_Exp (_ve_Pe, _ge_auxcall4);
     2500              if (!rfp_format.IsSubformat (_ge_auxcall4.getExpr (), _ve_in))
     2501              {
     2502                break _block12__branch1;
     2503              }
     2504              Result _ve_vars = new Result ();
     2505              rfp_vars.Vars (_ve_Pe, _ve_vars);
     2506              _negation3: {
     2507                if (_ve_vars.getExpr ().getLen () < 2)
     2508                {
     2509                  break _negation3;
     2510                }
     2511                Expr.SplitIterator _va_44 = _ve_vars.getExpr ().leftSplit(0);
     2512                _exit5: _continue5: for ( ; ; _va_44.next ())
     2513                {
     2514                  Expr _ve__dollar_tmp_m_256_m_26 = _va_44.getLeft();
     2515                  Expr _v_lsplit__vars2 = _va_44.getRight();
     2516                  if (!_va_44.isValid ())
     2517                  {
     2518                    break _negation3;
     2519                  }
     2520                  if (_v_lsplit__vars2.getLen () < 2)
     2521                  {
     2522                    break _negation3;
     2523                  }
     2524                  if (_v_lsplit__vars2.symbolAt (0))
     2525                  {
     2526                    continue _continue5;
     2527                  }
     2528                  Expr _v_deref__lsplit__vars2 = Expr.empty;
     2529                  _v_deref__lsplit__vars2 = (Expr) _v_lsplit__vars2.at (0);
     2530                  int _v_len55;
     2531                  _v_len55 = _v_deref__lsplit__vars2.getLen ();
     2532                  int _v_len56;
     2533                  _v_len56 = 1;
     2534                  if (_v_len55 < _v_len56)
     2535                  {
     2536                    continue _continue5;
     2537                  }
     2538                  int _v_len___dollar_tmp_m_256_m_29;
     2539                  _v_len___dollar_tmp_m_256_m_29 = (_v_len55 - _v_len56);
     2540                  Expr _ve__dollar_tmp_m_256_m_29 = Expr.empty;
     2541                  _ve__dollar_tmp_m_256_m_29 = new Expr (_v_deref__lsplit__vars2, 0, _v_len___dollar_tmp_m_256_m_29);
     2542                  Expr _vt_1 = Expr.empty;
     2543                  _vt_1 = new Expr (_v_deref__lsplit__vars2, (0 + _v_len___dollar_tmp_m_256_m_29), 1);
     2544                  Expr _v_subexpr__lsplit__vars2 = Expr.empty;
     2545                  _v_subexpr__lsplit__vars2 = new Expr (_v_lsplit__vars2, (0 + 1), (_v_lsplit__vars2.getLen () - (0 + 1 + 0)));
     2546                  Expr.SplitIterator _va_45 = _v_subexpr__lsplit__vars2.leftSplit(0);
     2547                  _exit6: _continue6: for ( ; ; _va_45.next ())
     2548                  {
     2549                    Expr _ve__dollar_tmp_m_256_m_35 = _va_45.getLeft();
     2550                    Expr _v_lsplit__lsplit__vars2 = _va_45.getRight();
     2551                    if (!_va_45.isValid ())
     2552                    {
     2553                      continue _continue5;
     2554                    }
     2555                    int _v_len57;
     2556                    _v_len57 = _v_lsplit__lsplit__vars2.getLen ();
     2557                    int _v_len58;
     2558                    _v_len58 = 1;
     2559                    if (_v_len57 < _v_len58)
     2560                    {
     2561                      continue _continue5;
     2562                    }
     2563                    int _v_len___dollar_tmp_m_256_m_44;
     2564                    _v_len___dollar_tmp_m_256_m_44 = (_v_len57 - _v_len58);
     2565                    if (_v_lsplit__lsplit__vars2.symbolAt (0))
     2566                    {
     2567                      continue _continue6;
     2568                    }
     2569                    Expr _v_deref__lsplit__lsplit__vars2 = Expr.empty;
     2570                    _v_deref__lsplit__lsplit__vars2 = (Expr) _v_lsplit__lsplit__vars2.at (0);
     2571                    int _v_len59;
     2572                    _v_len59 = _v_deref__lsplit__lsplit__vars2.getLen ();
     2573                    int _v_len60;
     2574                    _v_len60 = 1;
     2575                    if (_v_len59 < _v_len60)
     2576                    {
     2577                      continue _continue6;
     2578                    }
     2579                    int _v_len___dollar_tmp_m_256_m_38;
     2580                    _v_len___dollar_tmp_m_256_m_38 = (_v_len59 - _v_len60);
     2581                    if (!_vt_1.termEq (_v_deref__lsplit__lsplit__vars2, (0 + _v_len___dollar_tmp_m_256_m_38)))
     2582                    {
     2583                      continue _continue6;
     2584                    }
     2585                    Expr _ve__dollar_tmp_m_256_m_44 = Expr.empty;
     2586                    _ve__dollar_tmp_m_256_m_44 = new Expr (_v_lsplit__lsplit__vars2, (0 + 1), _v_len___dollar_tmp_m_256_m_44);
     2587                    Expr _ve__dollar_tmp_m_256_m_38 = Expr.empty;
     2588                    _ve__dollar_tmp_m_256_m_38 = new Expr (_v_deref__lsplit__lsplit__vars2, 0, _v_len___dollar_tmp_m_256_m_38);
     2589                    break _exit6;
     2590                  }
     2591                  break _exit5;
     2592                }
     2593                break _block12__branch1;
     2594              }
     2595              Result _ve_pats = new Result ();
     2596              Result _ve_repls = new Result ();
     2597              Build_Subst (_ve_vars.getExpr (), _ve_in__vars.getExpr (), _ve_br__snt, _ve_pats, _ve_repls);
     2598              Result _ge_auxcall5 = new Result ();
     2599              rfp_helper.Subst (_ve_pats.getExpr (), _ve_repls.getExpr (), _ve_br__snt, _ge_auxcall5);
     2600              _ve_br = new Expr (_ve_br, new Expr(new Expr (_c_2, _ge_auxcall5.getExpr ())));
     2601              _ve_branches = _ve_rest;
     2602              break _block12;
     2603            }
     2604            Expr[] _va_46 = { _c_2 , new Expr(new Expr (_vs_dir, _ve_Pe)) , _ve_br__snt };
     2605            _ve_br = new Expr (_ve_br, new Expr(Expr.concat (_va_46)));
    21592606            _ve_branches = _ve_rest;
    21602607          }
     
    21692616  }
    21702617
     2618  @RefalFormat("$func Rename_Vars s (e) (e) e = e;")
    21712619  static  void Rename_Vars (Expr _vs_num, Expr _ve_upper__vars, Expr _ve_res__vars, Expr _ve_Snt, Result _v_res1) throws RefalException
    21722620  {
     
    22152663              _v_len3 = _v_deref__Statement.getLen ();
    22162664              int _v_len4;
    2217               _v_len4 = 2;
     2665              _v_len4 = 1;
    22182666              if (_v_len3 < _v_len4)
    22192667              {
     
    22222670              int _v_len__Pe__6;
    22232671              _v_len__Pe__6 = (_v_len3 - _v_len4);
    2224               if (!_c_8.termEq (_v_deref__Statement, 0))
     2672              if (!_c_9.termEq (_v_deref__Statement, 0))
    22252673              {
    22262674                break _block3__branch1;
    22272675              }
    2228               Expr _vt__dollar_tmp_m_250_m_16 = Expr.empty;
    2229               _vt__dollar_tmp_m_250_m_16 = new Expr (_v_deref__Statement, (0 + 1), 1);
    22302676              Expr _ge_Pe__6 = Expr.empty;
    2231               _ge_Pe__6 = new Expr (_v_deref__Statement, (0 + 1 + 1), _v_len__Pe__6);
     2677              _ge_Pe__6 = new Expr (_v_deref__Statement, (0 + 1), _v_len__Pe__6);
    22322678              _ve_Pe = _ge_Pe__6;
    22332679              break _block3;
     
    22422688            _v_len5 = _v_deref__Statement2.getLen ();
    22432689            int _v_len6;
    2244             _v_len6 = 2;
     2690            _v_len6 = 1;
    22452691            if (_v_len5 < _v_len6)
    22462692            {
     
    22492695            int _v_len__Pe__62;
    22502696            _v_len__Pe__62 = (_v_len5 - _v_len6);
    2251             if (!_c_9.termEq (_v_deref__Statement2, 0))
     2697            if (!_c_10.termEq (_v_deref__Statement2, 0))
    22522698            {
    22532699              break _block2__branch1;
    22542700            }
    2255             Expr _vt__dollar_tmp_m_251_m_17 = Expr.empty;
    2256             _vt__dollar_tmp_m_251_m_17 = new Expr (_v_deref__Statement2, (0 + 1), 1);
    22572701            Expr _ge_Pe__6 = Expr.empty;
    2258             _ge_Pe__6 = new Expr (_v_deref__Statement2, (0 + 1 + 1), _v_len__Pe__62);
     2702            _ge_Pe__6 = new Expr (_v_deref__Statement2, (0 + 1), _v_len__Pe__62);
    22592703            _ve_Pe = _ge_Pe__6;
    22602704          }
     
    22632707          Result _ve_old__vars = new Result ();
    22642708          Result _ve_new__vars = new Result ();
    2265           refal.plus.List.Split (_c_26, _ve_res__vars, _ge_auxcall1.getExpr (), _ve_old__vars, _ve_new__vars);
     2709          refal.plus.List.Split (_c_29, _ve_res__vars, _ge_auxcall1.getExpr (), _ve_old__vars, _ve_new__vars);
    22662710          Result _ve_renames = new Result ();
    2267           if (!refal.plus.List.Map (_c_27, _vs_num, _ve_old__vars.getExpr (), _ve_renames))
     2711          if (!refal.plus.List.Map (_c_30, _vs_num, _ve_old__vars.getExpr (), _ve_renames))
    22682712          {
    22692713            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename_Vars", "Unexpected fail");
     
    22932737          _v_len9 = _v_deref__Subst1.getLen ();
    22942738          int _v_len10;
    2295           _v_len10 = 2;
     2739          _v_len10 = 1;
    22962740          if (_v_len9 < _v_len10)
    22972741          {
     
    23082752          Expr _vs_tag = Expr.empty;
    23092753          _vs_tag = new Expr (_v_deref__Subst1, 0, 1);
    2310           Expr _vt_p = Expr.empty;
    2311           _vt_p = new Expr (_v_deref__Subst1, (0 + 1), 1);
    23122754          Expr _ve_Pe1 = Expr.empty;
    2313           _ve_Pe1 = new Expr (_v_deref__Subst1, (0 + 1 + 1), _v_len__Pe1);
     2755          _ve_Pe1 = new Expr (_v_deref__Subst1, (0 + 1), _v_len__Pe1);
    23142756          Result _ge_auxcall2 = new Result ();
    23152757          rfp_vars.Vars (_ve_Pe1, _ge_auxcall2);
     
    23172759          refal.plus.List.Or (_ve_vars, _ge_auxcall2.getExpr (), _ge_auxcall3);
    23182760          _ve_vars = _ge_auxcall3.getExpr ();
    2319           Expr[] _va_54 = { _vs_tag , _vt_p , _ve_Pe1 };
    2320           _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_54)));
     2761          _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(new Expr (_vs_tag, _ve_Pe1)));
    23212762          _ge_Snt__0 = _ve_rest__Snt;
    23222763          break _block2;
     
    23322773          _v_len11 = _v_deref__Statement3.getLen ();
    23332774          int _v_len12;
    2334           _v_len12 = 2;
     2775          _v_len12 = 1;
    23352776          if (_v_len11 < _v_len12)
    23362777          {
     
    23392780          int _v_len__He;
    23402781          _v_len__He = (_v_len11 - _v_len12);
    2341           if (!_c_28.termEq (_v_deref__Statement3, 0))
     2782          if (!_c_12.termEq (_v_deref__Statement3, 0))
    23422783          {
    23432784            break _block2__branch2;
    23442785          }
    2345           Expr _vt__dollar_tmp_m_262_m_30 = Expr.empty;
    2346           _vt__dollar_tmp_m_262_m_30 = new Expr (_v_deref__Statement3, (0 + 1), 1);
    23472786          Expr _ve_He = Expr.empty;
    2348           _ve_He = new Expr (_v_deref__Statement3, (0 + 1 + 1), _v_len__He);
     2787          _ve_He = new Expr (_v_deref__Statement3, (0 + 1), _v_len__He);
    23492788          Result _ge_auxcall4 = new Result ();
    23502789          rfp_vars.Vars (_ve_He, _ge_auxcall4);
    23512790          Result _ve_old__vars = new Result ();
    23522791          Result _ve_new__vars = new Result ();
    2353           refal.plus.List.Split (_c_26, new Expr (_ve_upper__vars, _ve_res__vars), _ge_auxcall4.getExpr (), _ve_old__vars, _ve_new__vars);
     2792          refal.plus.List.Split (_c_29, new Expr (_ve_upper__vars, _ve_res__vars), _ge_auxcall4.getExpr (), _ve_old__vars, _ve_new__vars);
    23542793          Result _ve_renames = new Result ();
    2355           if (!refal.plus.List.Map (_c_27, _vs_num, _ve_old__vars.getExpr (), _ve_renames))
     2794          if (!refal.plus.List.Map (_c_30, _vs_num, _ve_old__vars.getExpr (), _ve_renames))
    23562795          {
    23572796            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename_Vars", "Unexpected fail");
     
    23812820          _v_len15 = _v_deref__Subst2.getLen ();
    23822821          int _v_len16;
    2383           _v_len16 = 2;
     2822          _v_len16 = 1;
    23842823          if (_v_len15 < _v_len16)
    23852824          {
     
    23882827          int _v_len__He1;
    23892828          _v_len__He1 = (_v_len15 - _v_len16);
    2390           if (!_c_28.termEq (_v_deref__Subst2, 0))
     2829          if (!_c_12.termEq (_v_deref__Subst2, 0))
    23912830          {
    23922831            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename_Vars", "Unexpected fail");
     
    23942833          Expr _ve_rest__Snt = Expr.empty;
    23952834          _ve_rest__Snt = new Expr (_v_Subst2.getExpr (), (0 + 1), _v_len__rest__Snt2);
    2396           Expr _vt_p = Expr.empty;
    2397           _vt_p = new Expr (_v_deref__Subst2, (0 + 1), 1);
    23982835          Expr _ve_He1 = Expr.empty;
    2399           _ve_He1 = new Expr (_v_deref__Subst2, (0 + 1 + 1), _v_len__He1);
     2836          _ve_He1 = new Expr (_v_deref__Subst2, (0 + 1), _v_len__He1);
    24002837          Result _ge_auxcall5 = new Result ();
    24012838          rfp_vars.Vars (_ve_He1, _ge_auxcall5);
     
    24032840          refal.plus.List.Or (_ve_vars, _ge_auxcall5.getExpr (), _ge_auxcall6);
    24042841          _ve_vars = _ge_auxcall6.getExpr ();
    2405           Expr[] _va_55 = { _c_28 , _vt_p , _ve_He1 };
    2406           _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_55)));
     2842          _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(new Expr (_c_12, _ve_He1)));
    24072843          _ge_Snt__0 = _ve_rest__Snt;
    24082844          break _block2;
     
    24182854          _v_len17 = _v_deref__Statement4.getLen ();
    24192855          int _v_len18;
    2420           _v_len18 = 2;
     2856          _v_len18 = 1;
    24212857          if (_v_len17 < _v_len18)
    24222858          {
     
    24312867          Expr _vs_block = Expr.empty;
    24322868          _vs_block = new Expr (_v_deref__Statement4, 0, 1);
    2433           Expr _vt_Pragma = Expr.empty;
    2434           _vt_Pragma = new Expr (_v_deref__Statement4, (0 + 1), 1);
    24352869          Expr _ve_branches = Expr.empty;
    2436           _ve_branches = new Expr (_v_deref__Statement4, (0 + 1 + 1), _v_len__branches);
     2870          _ve_branches = new Expr (_v_deref__Statement4, (0 + 1), _v_len__branches);
    24372871          _block4: {
    24382872            _block4__branch1: {
    2439               if (!_vs_block.termEq (_c_6, 0))
     2873              if (!_vs_block.termEq (_c_7, 0))
    24402874              {
    24412875                break _block4__branch1;
     
    24432877              break _block4;
    24442878            }
    2445             if (!_vs_block.termEq (_c_7, 0))
     2879            if (!_vs_block.termEq (_c_8, 0))
    24462880            {
    24472881              break _block2__branch3;
     
    24592893                break _block5__branch1;
    24602894              }
    2461               int _v_len___dollar_tmp_m_281_m_26;
    2462               _v_len___dollar_tmp_m_281_m_26 = (_v_len19 - _v_len20);
     2895              int _v_len___dollar_tmp_m_320_m_24;
     2896              _v_len___dollar_tmp_m_320_m_24 = (_v_len19 - _v_len20);
    24632897              if (_ve_rest.symbolAt (0))
    24642898              {
     
    24702904              _v_len21 = _v_deref__rest.getLen ();
    24712905              int _v_len22;
    2472               _v_len22 = 2;
     2906              _v_len22 = 1;
    24732907              if (_v_len21 < _v_len22)
    24742908              {
     
    24772911              int _v_len__Pe;
    24782912              _v_len__Pe = (_v_len21 - _v_len22);
    2479               if (!_c_8.termEq (_v_deref__rest, 0))
     2913              if (!_c_9.termEq (_v_deref__rest, 0))
    24802914              {
    24812915                break _block5__branch1;
    24822916              }
    2483               Expr _ve__dollar_tmp_m_281_m_26 = Expr.empty;
    2484               _ve__dollar_tmp_m_281_m_26 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_281_m_26);
    2485               Expr _vt__dollar_tmp_m_281_m_18 = Expr.empty;
    2486               _vt__dollar_tmp_m_281_m_18 = new Expr (_v_deref__rest, (0 + 1), 1);
     2917              Expr _ve__dollar_tmp_m_320_m_24 = Expr.empty;
     2918              _ve__dollar_tmp_m_320_m_24 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_320_m_24);
    24872919              Expr _ve_Pe = Expr.empty;
    2488               _ve_Pe = new Expr (_v_deref__rest, (0 + 1 + 1), _v_len__Pe);
    2489               Result _va_56 = new Result ();
    2490               rfp_vars.Vars (_ve_Pe, _va_56);
    2491               _ve_bl__res__vars = _va_56.getExpr ();
     2920              _ve_Pe = new Expr (_v_deref__rest, (0 + 1), _v_len__Pe);
     2921              Result _va_47 = new Result ();
     2922              rfp_vars.Vars (_ve_Pe, _va_47);
     2923              _ve_bl__res__vars = _va_47.getExpr ();
    24922924              break _block5;
    24932925            }
     
    25012933                break _block5__branch2;
    25022934              }
    2503               int _v_len___dollar_tmp_m_282_m_27;
    2504               _v_len___dollar_tmp_m_282_m_27 = (_v_len23 - _v_len24);
     2935              int _v_len___dollar_tmp_m_321_m_25;
     2936              _v_len___dollar_tmp_m_321_m_25 = (_v_len23 - _v_len24);
    25052937              if (_ve_rest.symbolAt (0))
    25062938              {
     
    25122944              _v_len25 = _v_deref__rest2.getLen ();
    25132945              int _v_len26;
    2514               _v_len26 = 2;
     2946              _v_len26 = 1;
    25152947              if (_v_len25 < _v_len26)
    25162948              {
     
    25192951              int _v_len__Pe2;
    25202952              _v_len__Pe2 = (_v_len25 - _v_len26);
    2521               if (!_c_9.termEq (_v_deref__rest2, 0))
     2953              if (!_c_10.termEq (_v_deref__rest2, 0))
    25222954              {
    25232955                break _block5__branch2;
    25242956              }
    2525               Expr _ve__dollar_tmp_m_282_m_27 = Expr.empty;
    2526               _ve__dollar_tmp_m_282_m_27 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_282_m_27);
    2527               Expr _vt__dollar_tmp_m_282_m_19 = Expr.empty;
    2528               _vt__dollar_tmp_m_282_m_19 = new Expr (_v_deref__rest2, (0 + 1), 1);
     2957              Expr _ve__dollar_tmp_m_321_m_25 = Expr.empty;
     2958              _ve__dollar_tmp_m_321_m_25 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_321_m_25);
    25292959              Expr _ve_Pe = Expr.empty;
    2530               _ve_Pe = new Expr (_v_deref__rest2, (0 + 1 + 1), _v_len__Pe2);
    2531               Result _va_57 = new Result ();
    2532               rfp_vars.Vars (_ve_Pe, _va_57);
    2533               _ve_bl__res__vars = _va_57.getExpr ();
     2960              _ve_Pe = new Expr (_v_deref__rest2, (0 + 1), _v_len__Pe2);
     2961              Result _va_48 = new Result ();
     2962              rfp_vars.Vars (_ve_Pe, _va_48);
     2963              _ve_bl__res__vars = _va_48.getExpr ();
    25342964              break _block5;
    25352965            }
     
    25432973                break _block5__branch3;
    25442974              }
    2545               int _v_len___dollar_tmp_m_283_m_28;
    2546               _v_len___dollar_tmp_m_283_m_28 = (_v_len27 - _v_len28);
     2975              int _v_len___dollar_tmp_m_322_m_26;
     2976              _v_len___dollar_tmp_m_322_m_26 = (_v_len27 - _v_len28);
    25472977              if (_ve_rest.symbolAt (0))
    25482978              {
     
    25542984              _v_len29 = _v_deref__rest3.getLen ();
    25552985              int _v_len30;
    2556               _v_len30 = 2;
     2986              _v_len30 = 1;
    25572987              if (_v_len29 < _v_len30)
    25582988              {
     
    25612991              int _v_len__He2;
    25622992              _v_len__He2 = (_v_len29 - _v_len30);
    2563               if (!_c_28.termEq (_v_deref__rest3, 0))
     2993              if (!_c_12.termEq (_v_deref__rest3, 0))
    25642994              {
    25652995                break _block5__branch3;
    25662996              }
    2567               Expr _ve__dollar_tmp_m_283_m_28 = Expr.empty;
    2568               _ve__dollar_tmp_m_283_m_28 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_283_m_28);
    2569               Expr _vt__dollar_tmp_m_283_m_20 = Expr.empty;
    2570               _vt__dollar_tmp_m_283_m_20 = new Expr (_v_deref__rest3, (0 + 1), 1);
     2997              Expr _ve__dollar_tmp_m_322_m_26 = Expr.empty;
     2998              _ve__dollar_tmp_m_322_m_26 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_322_m_26);
    25712999              Expr _ve_He = Expr.empty;
    2572               _ve_He = new Expr (_v_deref__rest3, (0 + 1 + 1), _v_len__He2);
    2573               Result _va_58 = new Result ();
    2574               rfp_vars.Vars (_ve_He, _va_58);
    2575               _ve_bl__res__vars = _va_58.getExpr ();
     3000              _ve_He = new Expr (_v_deref__rest3, (0 + 1), _v_len__He2);
     3001              Result _va_49 = new Result ();
     3002              rfp_vars.Vars (_ve_He, _va_49);
     3003              _ve_bl__res__vars = _va_49.getExpr ();
    25763004              break _block5;
    25773005            }
     
    25923020              throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename_Vars", "Unexpected fail");
    25933021            }
    2594             int _v_len___dollar_tmp_m_285_m_12;
    2595             _v_len___dollar_tmp_m_285_m_12 = (_v_len31 - _v_len32);
    2596             Expr _ve__dollar_tmp_m_285_m_12 = Expr.empty;
    2597             _ve__dollar_tmp_m_285_m_12 = new Expr (_ve_rest, 0, _v_len___dollar_tmp_m_285_m_12);
     3022            int _v_len___dollar_tmp_m_324_m_12;
     3023            _v_len___dollar_tmp_m_324_m_12 = (_v_len31 - _v_len32);
     3024            Expr _ve__dollar_tmp_m_324_m_12 = Expr.empty;
     3025            _ve__dollar_tmp_m_324_m_12 = new Expr (_ve_rest, 0, _v_len___dollar_tmp_m_324_m_12);
    25983026            _ve_bl__res__vars = Expr.empty;
    25993027          }
     
    26083036              }
    26093037              Result _gs_auxcall7 = new Result ();
    2610               refal.plus.Arithm.Add (_vs_num, _c_29, _gs_auxcall7);
     3038              refal.plus.Arithm.Add (_vs_num, _c_31, _gs_auxcall7);
    26113039              Result _ge_branches__5 = new Result ();
    2612               Expr[] _va_59 = { _gs_auxcall7.getExpr () , new Expr(_ve_vars) , new Expr(_ve_brv) };
    2613               if (!refal.plus.List.Map (_c_30, Expr.concat (_va_59), _ve_branches, _ge_branches__5))
     3040              Expr[] _va_50 = { _gs_auxcall7.getExpr () , new Expr(_ve_vars) , new Expr(_ve_brv) };
     3041              if (!refal.plus.List.Map (_c_32, Expr.concat (_va_50), _ve_branches, _ge_branches__5))
    26143042              {
    26153043                throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename_Vars", "Unexpected fail");
     
    26253053                    break _block6__branch1;
    26263054                  }
    2627                   int _v_len___dollar_tmp_m_306_m_32;
    2628                   _v_len___dollar_tmp_m_306_m_32 = (_v_len33 - _v_len34);
     3055                  int _v_len___dollar_tmp_m_345_m_32;
     3056                  _v_len___dollar_tmp_m_345_m_32 = (_v_len33 - _v_len34);
    26293057                  if (_ve_rest.symbolAt (0))
    26303058                  {
     
    26413069                    break _block6__branch1;
    26423070                  }
    2643                   int _v_len___dollar_tmp_m_306_m_29;
    2644                   _v_len___dollar_tmp_m_306_m_29 = (_v_len35 - _v_len36);
    2645                   if (!_c_28.termEq (_v_deref__rest4, 0))
     3071                  int _v_len___dollar_tmp_m_345_m_29;
     3072                  _v_len___dollar_tmp_m_345_m_29 = (_v_len35 - _v_len36);
     3073                  if (!_c_12.termEq (_v_deref__rest4, 0))
    26463074                  {
    26473075                    break _block6__branch1;
    26483076                  }
    2649                   Expr _ve__dollar_tmp_m_306_m_32 = Expr.empty;
    2650                   _ve__dollar_tmp_m_306_m_32 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_306_m_32);
    2651                   Expr _ve__dollar_tmp_m_306_m_29 = Expr.empty;
    2652                   _ve__dollar_tmp_m_306_m_29 = new Expr (_v_deref__rest4, (0 + 1), _v_len___dollar_tmp_m_306_m_29);
     3077                  Expr _ve__dollar_tmp_m_345_m_32 = Expr.empty;
     3078                  _ve__dollar_tmp_m_345_m_32 = new Expr (_ve_rest, (0 + 1), _v_len___dollar_tmp_m_345_m_32);
     3079                  Expr _ve__dollar_tmp_m_345_m_29 = Expr.empty;
     3080                  _ve__dollar_tmp_m_345_m_29 = new Expr (_v_deref__rest4, (0 + 1), _v_len___dollar_tmp_m_345_m_29);
    26533081                  Result _gs_auxcall8 = new Result ();
    2654                   refal.plus.Arithm.Add (_vs_num, _c_4, _gs_auxcall8);
     3082                  refal.plus.Arithm.Add (_vs_num, _c_5, _gs_auxcall8);
    26553083                  Result _ge_auxcall9 = new Result ();
    26563084                  Rename_Vars (_gs_auxcall8.getExpr (), _ve_vars, _ve_res__vars, _ve_rest, _ge_auxcall9);
    26573085                  _ve_vars = Expr.empty;
    2658                   Expr[] _va_61 = { _vs_block , _vt_Pragma , _ge_branches__5.getExpr () };
    2659                   Expr[] _va_60 = { _ve_new__Snt , new Expr(Expr.concat (_va_61)) , _ge_auxcall9.getExpr () };
    2660                   _ve_new__Snt = Expr.concat (_va_60);
     3086                  Expr[] _va_51 = { _ve_new__Snt , new Expr(new Expr (_vs_block, _ge_branches__5.getExpr ())) , _ge_auxcall9.getExpr () };
     3087                  _ve_new__Snt = Expr.concat (_va_51);
    26613088                  _ge_Snt__0 = Expr.empty;
    26623089                  break _block6;
    26633090                }
    2664                 Expr[] _va_62 = { _vs_block , _vt_Pragma , _ge_branches__5.getExpr () };
    2665                 _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_62)));
     3091                _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(new Expr (_vs_block, _ge_branches__5.getExpr ())));
    26663092                _ge_Snt__0 = _ve_rest;
    26673093              }
     
    26783104                  break _block7__branch1;
    26793105                }
    2680                 Expr.SplitIterator _va_63 = _ve_bl__res__vars.leftSplit(0);
    2681                 _exit1: _continue1: for ( ; ; _va_63.next ())
     3106                Expr.SplitIterator _va_52 = _ve_bl__res__vars.leftSplit(0);
     3107                _exit1: _continue1: for ( ; ; _va_52.next ())
    26823108                {
    2683                   Expr _ve_1 = _va_63.getLeft();
    2684                   Expr _v_lsplit__bl__res__vars = _va_63.getRight();
    2685                   if (!_va_63.isValid ())
     3109                  Expr _ve_1 = _va_52.getLeft();
     3110                  Expr _v_lsplit__bl__res__vars = _va_52.getRight();
     3111                  if (!_va_52.isValid ())
    26863112                  {
    26873113                    break _block7__branch1;
     
    27113137                    continue _continue1;
    27123138                  }
    2713                   int _v_len___dollar_tmp_m_293_m_32;
    2714                   _v_len___dollar_tmp_m_293_m_32 = (_v_len39 - _v_len40);
     3139                  int _v_len___dollar_tmp_m_332_m_32;
     3140                  _v_len___dollar_tmp_m_332_m_32 = (_v_len39 - _v_len40);
    27153141                  Expr _ve_2 = Expr.empty;
    27163142                  _ve_2 = new Expr (_v_lsplit__bl__res__vars, (0 + 1), _v_len__2);
    2717                   Expr _ve__dollar_tmp_m_293_m_32 = Expr.empty;
    2718                   _ve__dollar_tmp_m_293_m_32 = new Expr (_v_deref__lsplit__bl__res__vars, 0, _v_len___dollar_tmp_m_293_m_32);
     3143                  Expr _ve__dollar_tmp_m_332_m_32 = Expr.empty;
     3144                  _ve__dollar_tmp_m_332_m_32 = new Expr (_v_deref__lsplit__bl__res__vars, 0, _v_len___dollar_tmp_m_332_m_32);
    27193145                  Expr _vt_name = Expr.empty;
    2720                   _vt_name = new Expr (_v_deref__lsplit__bl__res__vars, (0 + _v_len___dollar_tmp_m_293_m_32), 1);
    2721                   Expr.SplitIterator _va_64 = _ve_vars.leftSplit(0);
    2722                   _exit2: _continue2: for ( ; ; _va_64.next ())
     3146                  _vt_name = new Expr (_v_deref__lsplit__bl__res__vars, (0 + _v_len___dollar_tmp_m_332_m_32), 1);
     3147                  Expr.SplitIterator _va_53 = _ve_vars.leftSplit(0);
     3148                  _exit2: _continue2: for ( ; ; _va_53.next ())
    27233149                  {
    2724                     Expr _ve__dollar_tmp_m_293_m_55 = _va_64.getLeft();
    2725                     Expr _v_lsplit__vars = _va_64.getRight();
    2726                     if (!_va_64.isValid ())
     3150                    Expr _ve__dollar_tmp_m_332_m_55 = _va_53.getLeft();
     3151                    Expr _v_lsplit__vars = _va_53.getRight();
     3152                    if (!_va_53.isValid ())
    27273153                    {
    27283154                      continue _continue1;
     
    27363162                      continue _continue1;
    27373163                    }
    2738                     int _v_len___dollar_tmp_m_293_m_68;
    2739                     _v_len___dollar_tmp_m_293_m_68 = (_v_len41 - _v_len42);
     3164                    int _v_len___dollar_tmp_m_332_m_68;
     3165                    _v_len___dollar_tmp_m_332_m_68 = (_v_len41 - _v_len42);
    27403166                    if (_v_lsplit__vars.symbolAt (0))
    27413167                    {
     
    27523178                      continue _continue2;
    27533179                    }
    2754                     int _v_len___dollar_tmp_m_293_m_58;
    2755                     _v_len___dollar_tmp_m_293_m_58 = (_v_len43 - _v_len44);
    2756                     if (!_vt_name.termEq (_v_deref__lsplit__vars, (0 + _v_len___dollar_tmp_m_293_m_58)))
     3180                    int _v_len___dollar_tmp_m_332_m_58;
     3181                    _v_len___dollar_tmp_m_332_m_58 = (_v_len43 - _v_len44);
     3182                    if (!_vt_name.termEq (_v_deref__lsplit__vars, (0 + _v_len___dollar_tmp_m_332_m_58)))
    27573183                    {
    27583184                      continue _continue2;
    27593185                    }
    2760                     Expr _ve__dollar_tmp_m_293_m_68 = Expr.empty;
    2761                     _ve__dollar_tmp_m_293_m_68 = new Expr (_v_lsplit__vars, (0 + 1), _v_len___dollar_tmp_m_293_m_68);
    2762                     Expr _ve__dollar_tmp_m_293_m_58 = Expr.empty;
    2763                     _ve__dollar_tmp_m_293_m_58 = new Expr (_v_deref__lsplit__vars, 0, _v_len___dollar_tmp_m_293_m_58);
     3186                    Expr _ve__dollar_tmp_m_332_m_68 = Expr.empty;
     3187                    _ve__dollar_tmp_m_332_m_68 = new Expr (_v_lsplit__vars, (0 + 1), _v_len___dollar_tmp_m_332_m_68);
     3188                    Expr _ve__dollar_tmp_m_332_m_58 = Expr.empty;
     3189                    _ve__dollar_tmp_m_332_m_58 = new Expr (_v_deref__lsplit__vars, 0, _v_len___dollar_tmp_m_332_m_58);
    27643190                    _ve_brv = new Expr (_ve_brv, _ve_1);
    27653191                    _ve_bl__res__vars = _ve_2;
     
    27863212          _v_len45 = _v_deref__Statement5.getLen ();
    27873213          int _v_len46;
    2788           _v_len46 = 2;
     3214          _v_len46 = 1;
    27893215          if (_v_len45 < _v_len46)
    27903216          {
     
    27933219          int _v_len__Sentence;
    27943220          _v_len__Sentence = (_v_len45 - _v_len46);
    2795           if (!_c_1.termEq (_v_deref__Statement5, 0))
     3221          if (!_c_2.termEq (_v_deref__Statement5, 0))
    27963222          {
    27973223            break _block2__branch4;
    27983224          }
    2799           Expr _vt_Pragma = Expr.empty;
    2800           _vt_Pragma = new Expr (_v_deref__Statement5, (0 + 1), 1);
    28013225          Expr _ve_Sentence = Expr.empty;
    2802           _ve_Sentence = new Expr (_v_deref__Statement5, (0 + 1 + 1), _v_len__Sentence);
     3226          _ve_Sentence = new Expr (_v_deref__Statement5, (0 + 1), _v_len__Sentence);
    28033227          Result _ge_auxcall10 = new Result ();
    28043228          Rename_Vars (_vs_num, _ve_vars, _ve_res__vars, _ve_Sentence, _ge_auxcall10);
    28053229          _ve_vars = Expr.empty;
    2806           Expr[] _va_65 = { _c_1 , _vt_Pragma , _ge_auxcall10.getExpr () };
    2807           _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_65)));
     3230          _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(new Expr (_c_2, _ge_auxcall10.getExpr ())));
    28083231          _ge_Snt__0 = Expr.empty;
    28093232          break _block2;
     
    28363259            throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename_Vars", "Unexpected fail");
    28373260          }
    2838           Expr _vt__dollar_tmp_m_317_m_14 = Expr.empty;
    2839           _vt__dollar_tmp_m_317_m_14 = new Expr (_v_Rename__Vars1.getExpr (), 0, 1);
     3261          Expr _vt__dollar_tmp_m_356_m_14 = Expr.empty;
     3262          _vt__dollar_tmp_m_356_m_14 = new Expr (_v_Rename__Vars1.getExpr (), 0, 1);
    28403263          Expr _vt_NewBody = Expr.empty;
    28413264          _vt_NewBody = new Expr (_v_Rename__Vars1.getExpr (), (0 + 1), 1);
     
    28433266          Rename_Vars (_vs_num, _ve_upper__vars, _ve_res__vars, new Expr (_vt_IterVars, _vt_IterCondition), _ve_IterCondition);
    28443267          _ve_vars = Expr.empty;
    2845           Expr[] _va_66 = { _c_16 , _vt_NewBody , _ve_IterCondition.getExpr () };
    2846           _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_66)));
     3268          Expr[] _va_54 = { _c_16 , _vt_NewBody , _ve_IterCondition.getExpr () };
     3269          _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_54)));
    28473270          _ge_Snt__0 = Expr.empty;
    28483271          break _block2;
     
    28803303          Rename_Vars (_vs_num, _ve_upper__vars, _ve_res__vars, _vt_Catch, _ve_Catch);
    28813304          _ve_vars = Expr.empty;
    2882           Expr[] _va_67 = { _c_17 , _ve_TryBranch.getExpr () , _ve_NOFAIL , _ve_Catch.getExpr () };
    2883           _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_67)));
     3305          Expr[] _va_55 = { _c_17 , _ve_TryBranch.getExpr () , _ve_NOFAIL , _ve_Catch.getExpr () };
     3306          _ve_new__Snt = new Expr (_ve_new__Snt, new Expr(Expr.concat (_va_55)));
    28843307          _ge_Snt__0 = Expr.empty;
    28853308          break _block2;
     
    29143337  }
    29153338
     3339  @RefalFormat("$func? IsOld_Var e = e;")
    29163340  static  boolean IsOld_Var (Expr _ge_arg1, Result _v_res1) throws RefalException
    29173341  {
     
    29403364      return false;
    29413365    }
    2942     int _v_len___dollar_tmp_m_338_m_20;
    2943     _v_len___dollar_tmp_m_338_m_20 = (_v_len3 - _v_len4);
     3366    int _v_len___dollar_tmp_m_377_m_20;
     3367    _v_len___dollar_tmp_m_377_m_20 = (_v_len3 - _v_len4);
    29443368    Expr _ve_vars = Expr.empty;
    29453369    _ve_vars = new Expr (_ge_arg1, 0, _v_len__vars);
    2946     Expr _ve__dollar_tmp_m_338_m_20 = Expr.empty;
    2947     _ve__dollar_tmp_m_338_m_20 = new Expr (_v_deref__arg1, 0, _v_len___dollar_tmp_m_338_m_20);
     3370    Expr _ve__dollar_tmp_m_377_m_20 = Expr.empty;
     3371    _ve__dollar_tmp_m_377_m_20 = new Expr (_v_deref__arg1, 0, _v_len___dollar_tmp_m_377_m_20);
    29483372    Expr _vt_name = Expr.empty;
    2949     _vt_name = new Expr (_v_deref__arg1, (0 + _v_len___dollar_tmp_m_338_m_20), 1);
     3373    _vt_name = new Expr (_v_deref__arg1, (0 + _v_len___dollar_tmp_m_377_m_20), 1);
    29503374    if (_v_len__vars < 1)
    29513375    {
    29523376      return false;
    29533377    }
    2954     Expr.SplitIterator _va_68 = _ve_vars.leftSplit(0);
    2955     _exit1: _continue1: for ( ; ; _va_68.next ())
     3378    Expr.SplitIterator _va_56 = _ve_vars.leftSplit(0);
     3379    _exit1: _continue1: for ( ; ; _va_56.next ())
    29563380    {
    2957       Expr _ve__dollar_tmp_m_338_m_41 = _va_68.getLeft();
    2958       Expr _v_lsplit__vars = _va_68.getRight();
    2959       if (!_va_68.isValid ())
     3381      Expr _ve__dollar_tmp_m_377_m_41 = _va_56.getLeft();
     3382      Expr _v_lsplit__vars = _va_56.getRight();
     3383      if (!_va_56.isValid ())
    29603384      {
    29613385        return false;
     
    29693393        return false;
    29703394      }
    2971       int _v_len___dollar_tmp_m_338_m_54;
    2972       _v_len___dollar_tmp_m_338_m_54 = (_v_len5 - _v_len6);
     3395      int _v_len___dollar_tmp_m_377_m_54;
     3396      _v_len___dollar_tmp_m_377_m_54 = (_v_len5 - _v_len6);
    29733397      if (_v_lsplit__vars.symbolAt (0))
    29743398      {
     
    29853409        continue _continue1;
    29863410      }
    2987       int _v_len___dollar_tmp_m_338_m_44;
    2988       _v_len___dollar_tmp_m_338_m_44 = (_v_len7 - _v_len8);
    2989       if (!_vt_name.termEq (_v_deref__lsplit__vars, (0 + _v_len___dollar_tmp_m_338_m_44)))
     3411      int _v_len___dollar_tmp_m_377_m_44;
     3412      _v_len___dollar_tmp_m_377_m_44 = (_v_len7 - _v_len8);
     3413      if (!_vt_name.termEq (_v_deref__lsplit__vars, (0 + _v_len___dollar_tmp_m_377_m_44)))
    29903414      {
    29913415        continue _continue1;
    29923416      }
    2993       Expr _ve__dollar_tmp_m_338_m_54 = Expr.empty;
    2994       _ve__dollar_tmp_m_338_m_54 = new Expr (_v_lsplit__vars, (0 + 1), _v_len___dollar_tmp_m_338_m_54);
    2995       Expr _ve__dollar_tmp_m_338_m_44 = Expr.empty;
    2996       _ve__dollar_tmp_m_338_m_44 = new Expr (_v_deref__lsplit__vars, 0, _v_len___dollar_tmp_m_338_m_44);
     3417      Expr _ve__dollar_tmp_m_377_m_54 = Expr.empty;
     3418      _ve__dollar_tmp_m_377_m_54 = new Expr (_v_lsplit__vars, (0 + 1), _v_len___dollar_tmp_m_377_m_54);
     3419      Expr _ve__dollar_tmp_m_377_m_44 = Expr.empty;
     3420      _ve__dollar_tmp_m_377_m_44 = new Expr (_v_deref__lsplit__vars, 0, _v_len___dollar_tmp_m_377_m_44);
    29973421      _v_res1.assign (Expr.empty);
    29983422      break _exit1;
     
    30013425  }
    30023426
    3003   static  void Rename (Expr _ge_arg1, Result _v_res1) throws RefalException
     3427  @RefalFormat("$func Rename s (s (e)) = (s (e \"_\" s));")
     3428  static  void Rename (Expr _vs_num, Expr _vs_tag, Expr _ve_name, Result _v_res1, Result _v_res2, Result _v_res3) throws RefalException
    30043429  {
    3005     if (_ge_arg1.getLen () != 2)
    3006     {
    3007       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3008     }
    3009     if (_ge_arg1.symbolAt ((0 + 1)))
    3010     {
    3011       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3012     }
    3013     Expr _v_deref__arg1 = Expr.empty;
    3014     _v_deref__arg1 = (Expr) _ge_arg1.at ((0 + 1));
    3015     if (_v_deref__arg1.getLen () != 3)
    3016     {
    3017       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3018     }
    3019     if (_v_deref__arg1.symbolAt ((0 + 1 + 1)))
    3020     {
    3021       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3022     }
    3023     Expr _v_deref__deref__arg1 = Expr.empty;
    3024     _v_deref__deref__arg1 = (Expr) _v_deref__arg1.at ((0 + 1 + 1));
    3025     int _v_len1;
    3026     _v_len1 = _v_deref__deref__arg1.getLen ();
    3027     int _v_len2;
    3028     _v_len2 = 0;
    3029     if (_v_len1 < _v_len2)
    3030     {
    3031       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3032     }
    3033     int _v_len__QualifiedName;
    3034     _v_len__QualifiedName = (_v_len1 - _v_len2);
    3035     if (!_ge_arg1.symbolAt (0))
    3036     {
    3037       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3038     }
    3039     if (!_v_deref__arg1.symbolAt (0))
    3040     {
    3041       throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Rename", "Unexpected fail");
    3042     }
    3043     Expr _vs_num = Expr.empty;
    3044     _vs_num = new Expr (_ge_arg1, 0, 1);
    3045     Expr _vs_tag = Expr.empty;
    3046     _vs_tag = new Expr (_v_deref__arg1, 0, 1);
    3047     Expr _vt_p = Expr.empty;
    3048     _vt_p = new Expr (_v_deref__arg1, (0 + 1), 1);
    3049     Expr _ve_QualifiedName = Expr.empty;
    3050     _ve_QualifiedName = new Expr (_v_deref__deref__arg1, 0, _v_len__QualifiedName);
    3051     Expr[] _va_70 = { _ve_QualifiedName , _c_31 , _vs_num };
    3052     Expr[] _va_69 = { _vs_tag , _vt_p , new Expr(Expr.concat (_va_70)) };
    3053     _v_res1.assign (new Expr(Expr.concat (_va_69)));
     3430    _v_res1.assign (_vs_tag);
     3431    _v_res2.assign (_ve_name);
     3432    _v_res3.assign (_vs_num);
    30543433  }
    30553434
     3435  @RefalFormat("$func Build_Subst (e) (e) e = (e) (e);")
    30563436  static  void Build_Subst (Expr _ge_arg1, Expr _ge_arg2, Expr _ge_arg3, Result _v_res1, Result _v_res2) throws RefalException
    30573437  {
     
    30693449        _v_len__Snt = (_v_len1 - _v_len2);
    30703450        Expr _v_compose1 = Expr.empty;
    3071         Expr[] _va_71 = { new Expr(_ge_arg1) , new Expr(_ge_arg2) , _ge_arg3 };
    3072         _v_compose1 = Expr.concat (_va_71);
     3451        Expr[] _va_57 = { new Expr(_ge_arg1) , new Expr(_ge_arg2) , _ge_arg3 };
     3452        _v_compose1 = Expr.concat (_va_57);
    30733453        if (_v_compose1.symbolAt (0))
    30743454        {
     
    31153495        Expr _v_deref__deref__compose12 = Expr.empty;
    31163496        _v_deref__deref__compose12 = (Expr) _v_deref__compose12.at (0);
    3117         if (_v_deref__deref__compose12.getLen () != 3)
     3497        int _v_len7;
     3498        _v_len7 = _v_deref__deref__compose12.getLen ();
     3499        int _v_len8;
     3500        _v_len8 = 2;
     3501        if (_v_len7 < _v_len8)
    31183502        {
    31193503          break _block1__branch1;
    31203504        }
    3121         if (_v_deref__deref__compose1.getLen () != 3)
     3505        int _v_len___dollar_tmp_m_385_m_34;
     3506        _v_len___dollar_tmp_m_385_m_34 = (_v_len7 - _v_len8);
     3507        int _v_len9;
     3508        _v_len9 = _v_deref__deref__compose1.getLen ();
     3509        int _v_len10;
     3510        _v_len10 = 2;
     3511        if (_v_len9 < _v_len10)
    31223512        {
    31233513          break _block1__branch1;
    31243514        }
     3515        int _v_len___dollar_tmp_m_385_m_12;
     3516        _v_len___dollar_tmp_m_385_m_12 = (_v_len9 - _v_len10);
    31253517        if (!_v_deref__deref__compose1.symbolAt (0))
    31263518        {
     
    31393531        Expr _vs_tag = Expr.empty;
    31403532        _vs_tag = new Expr (_v_deref__deref__compose1, 0, 1);
    3141         Expr _vt__dollar_tmp_m_347_m_12 = Expr.empty;
    3142         _vt__dollar_tmp_m_347_m_12 = new Expr (_v_deref__deref__compose1, (0 + 1), 1);
     3533        Expr _ve__dollar_tmp_m_385_m_12 = Expr.empty;
     3534        _ve__dollar_tmp_m_385_m_12 = new Expr (_v_deref__deref__compose1, (0 + 1), _v_len___dollar_tmp_m_385_m_12);
    31433535        Expr _vt_name = Expr.empty;
    3144         _vt_name = new Expr (_v_deref__deref__compose1, (0 + 1 + 1), 1);
    3145         Expr _vs__dollar_tmp_m_347_m_32 = Expr.empty;
    3146         _vs__dollar_tmp_m_347_m_32 = new Expr (_v_deref__deref__compose12, 0, 1);
    3147         Expr _vt__dollar_tmp_m_347_m_34 = Expr.empty;
    3148         _vt__dollar_tmp_m_347_m_34 = new Expr (_v_deref__deref__compose12, (0 + 1), 1);
     3536        _vt_name = new Expr (_v_deref__deref__compose1, (0 + 1 + _v_len___dollar_tmp_m_385_m_12), 1);
     3537        Expr _vs__dollar_tmp_m_385_m_32 = Expr.empty;
     3538        _vs__dollar_tmp_m_385_m_32 = new Expr (_v_deref__deref__compose12, 0, 1);
     3539        Expr _ve__dollar_tmp_m_385_m_34 = Expr.empty;
     3540        _ve__dollar_tmp_m_385_m_34 = new Expr (_v_deref__deref__compose12, (0 + 1), _v_len___dollar_tmp_m_385_m_34);
    31493541        Expr _vt_s = Expr.empty;
    3150         _vt_s = new Expr (_v_deref__deref__compose12, (0 + 1 + 1), 1);
     3542        _vt_s = new Expr (_v_deref__deref__compose12, (0 + 1 + _v_len___dollar_tmp_m_385_m_34), 1);
    31513543        Result _ve_var__pats = new Result ();
    31523544        Result _ve_var__repls = new Result ();
     
    31593551        break _block1;
    31603552      }
    3161       int _v_len7;
    3162       _v_len7 = (_ge_arg3.getLen () + 2);
    3163       int _v_len8;
    3164       _v_len8 = 2;
    3165       if (_v_len7 < _v_len8)
     3553      int _v_len11;
     3554      _v_len11 = (_ge_arg3.getLen () + 2);
     3555      int _v_len12;
     3556      _v_len12 = 2;
     3557      if (_v_len11 < _v_len12)
    31663558      {
    31673559        throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Build_Subst", "Unexpected fail");
    31683560      }
    3169       int _v_len___dollar_tmp_m_351_m_10;
    3170       _v_len___dollar_tmp_m_351_m_10 = (_v_len7 - _v_len8);
     3561      int _v_len___dollar_tmp_m_389_m_10;
     3562      _v_len___dollar_tmp_m_389_m_10 = (_v_len11 - _v_len12);
    31713563      Expr _v_compose2 = Expr.empty;
    3172       Expr[] _va_72 = { new Expr(_ge_arg1) , new Expr(_ge_arg2) , _ge_arg3 };
    3173       _v_compose2 = Expr.concat (_va_72);
    3174       if (!_c_32.eq (_v_compose2, 0))
     3564      Expr[] _va_58 = { new Expr(_ge_arg1) , new Expr(_ge_arg2) , _ge_arg3 };
     3565      _v_compose2 = Expr.concat (_va_58);
     3566      if (!_c_33.eq (_v_compose2, 0))
    31753567      {
    31763568        throw new RefalException ("org.refal.plus.compiler.rfp_as2as", "Build_Subst", "Unexpected fail");
    31773569      }
    3178       Expr _ve__dollar_tmp_m_351_m_10 = Expr.empty;
    3179       _ve__dollar_tmp_m_351_m_10 = new Expr (_v_compose2, (0 + 1 + 1), _v_len___dollar_tmp_m_351_m_10);
     3570      Expr _ve__dollar_tmp_m_389_m_10 = Expr.empty;
     3571      _ve__dollar_tmp_m_389_m_10 = new Expr (_v_compose2, (0 + 1 + 1), _v_len___dollar_tmp_m_389_m_10);
    31803572      _v_res1.assign (Expr.empty);
    31813573      _v_res2.assign (Expr.empty);
     
    31833575  }
    31843576
     3577  @RefalFormat("$func Var_Subst s t t e = (e) (e);")
    31853578  static  void Var_Subst (Expr _vs_tag, Expr _vt_n, Expr _vt_s, Expr _ve_Snt, Result _v_res1, Result _v_res2) throws RefalException
    31863579  {
     
    32053598        _block2: {
    32063599          _block2__branch1: {
    3207             if (_vt_Statement.symbolAt (0))
    3208             {
    3209               break _block2__branch1;
    3210             }
    3211             Expr _v_deref__Statement = Expr.empty;
    3212             _v_deref__Statement = (Expr) _vt_Statement.at (0);
    3213             if (_v_deref__Statement.getLen () != 3)
    3214             {
    3215               break _block2__branch1;
    3216             }
    3217             if (!_vs_tag.termEq (_v_deref__Statement, 0))
    3218             {
    3219               break _block2__branch1;
    3220             }
    3221             Expr _vt_p = Expr.empty;
    3222             _vt_p = new Expr (_v_deref__Statement, (0 + 1), 1);
     3600            Expr _ve_p = Expr.empty;
    32233601            Expr _vt_name = Expr.empty;
    3224             _vt_name = new Expr (_v_deref__Statement, (0 + 1 + 1), 1);
    32253602            _block3: {
    32263603              _block3__branch1: {
    3227                 if (!_vt_n.termEq (_vt_name, 0))
     3604                if (_vt_Statement.symbolAt (0))
    32283605                {
    32293606                  break _block3__branch1;
    32303607                }
    3231                 Expr[] _va_73 = { _vs_tag , _vt_p , _vt_name };
    3232                 _ve_st__pats = new Expr(Expr.concat (_va_73));
    3233                 Expr[] _va_74 = { _vs_tag , _vt_p , _vt_s };
    3234                 _ve_st__repls = new Expr(new Expr(Expr.concat (_va_74)));
     3608                Expr _v_deref__Statement = Expr.empty;
     3609                _v_deref__Statement = (Expr) _vt_Statement.at (0);
     3610                if (_v_deref__Statement.getLen () != 3)
     3611                {
     3612                  break _block3__branch1;
     3613                }
     3614                if (!_vs_tag.termEq (_v_deref__Statement, 0))
     3615                {
     3616                  break _block3__branch1;
     3617                }
     3618                Expr _gt_p__6 = Expr.empty;
     3619                _gt_p__6 = new Expr (_v_deref__Statement, (0 + 1), 1);
     3620                Expr _gt_name__6 = Expr.empty;
     3621                _gt_name__6 = new Expr (_v_deref__Statement, (0 + 1 + 1), 1);
     3622                _ve_p = _gt_p__6;
     3623                _vt_name = _gt_name__6;
    32353624                break _block3;
     3625              }
     3626              if (_vt_Statement.symbolAt (0))
     3627              {
     3628                break _block2__branch1;
     3629              }
     3630              Expr _v_deref__Statement2 = Expr.empty;
     3631              _v_deref__Statement2 = (Expr) _vt_Statement.at (0);
     3632              if (_v_deref__Statement2.getLen () != 2)
     3633              {
     3634                break _block2__branch1;
     3635              }
     3636              if (!_vs_tag.termEq (_v_deref__Statement2, 0))
     3637              {
     3638                break _block2__branch1;
     3639              }
     3640              Expr _gt_name__6 = Expr.empty;
     3641              _gt_name__6 = new Expr (_v_deref__Statement2, (0 + 1), 1);
     3642              _ve_p = Expr.empty;
     3643              _vt_name = _gt_name__6;
     3644            }
     3645            _block4: {
     3646              _block4__branch1: {
     3647                if (!_vt_n.termEq (_vt_name, 0))
     3648                {
     3649                  break _block4__branch1;
     3650                }
     3651                _ve_st__pats = _vt_Statement;
     3652                Expr[] _va_59 = { _vs_tag , _ve_p , _vt_s };
     3653                _ve_st__repls = new Expr(new Expr(Expr.concat (_va_59)));
     3654                break _block4;
    32363655              }
    32373656              _ve_st__pats = Expr.empty;
     
    32453664              break _block2__branch2;
    32463665            }
    3247             Expr _v_deref__Statement2 = Expr.empty;
    3248             _v_deref__Statement2 = (Expr) _vt_Statement.at (0);
     3666            Expr _v_deref__Statement3 = Expr.empty;
     3667            _v_deref__Statement3 = (Expr) _vt_Statement.at (0);
    32493668            int _v_len3;
    3250             _v_len3 = _v_deref__Statement2.getLen ();
     3669            _v_len3 = _v_deref__Statement3.getLen ();
    32513670            int _v_len4;
    32523671            _v_len4 = 0;
     
    32583677            _v_len__xpr = (_v_len3 - _v_len4);
    32593678            Expr _ve_xpr = Expr.empty;
    3260             _ve_xpr = new Expr (_v_deref__Statement2, 0, _v_len__xpr);
    3261             Result _va_75 = new Result ();
    3262             Result _va_76 = new Result ();
    3263             Var_Subst (_vs_tag, _vt_n, _vt_s, _ve_xpr, _va_75, _va_76);
    3264             _ve_st__pats = _va_75.getExpr ();
    3265             _ve_st__repls = _va_76.getExpr ();
     3679            _ve_xpr = new Expr (_v_deref__Statement3, 0, _v_len__xpr);
     3680            Result _va_60 = new Result ();
     3681            Result _va_61 = new Result ();
     3682            Var_Subst (_vs_tag, _vt_n, _vt_s, _ve_xpr, _va_60, _va_61);
     3683            _ve_st__pats = _va_60.getExpr ();
     3684            _ve_st__repls = _va_61.getExpr ();
    32663685            break _block2;
    32673686          }
     
    32813700  }
    32823701
     3702  @RefalFormat("$func Del_Pragmas e = e;")
     3703  static  void Del_Pragmas (Expr _ge_arg1, Result _v_res1) throws RefalException
     3704  {
     3705    _block1: {
     3706      _block1__branch1: {
     3707        if (_ge_arg1.getLen () < 1)
     3708        {
     3709          break _block1__branch1;
     3710        }
     3711        Expr.SplitIterator _va_62 = _ge_arg1.leftSplit(0);
     3712        _exit1: _continue1: for ( ; ; _va_62.next ())
     3713        {
     3714          Expr _ve_L = _va_62.getLeft();
     3715          Expr _v_lsplit__arg1 = _va_62.getRight();
     3716          if (!_va_62.isValid ())
     3717          {
     3718            break _block1__branch1;
     3719          }
     3720          int _v_len1;
     3721          _v_len1 = _v_lsplit__arg1.getLen ();
     3722          int _v_len2;
     3723          _v_len2 = 1;
     3724          if (_v_len1 < _v_len2)
     3725          {
     3726            break _block1__branch1;
     3727          }
     3728          int _v_len__R;
     3729          _v_len__R = (_v_len1 - _v_len2);
     3730          Expr _vt_Item = Expr.empty;
     3731          _vt_Item = new Expr (_v_lsplit__arg1, 0, 1);
     3732          Expr _ve_R = Expr.empty;
     3733          _ve_R = new Expr (_v_lsplit__arg1, (0 + 1), _v_len__R);
     3734          _block2: {
     3735            _block2__branch1: {
     3736              if (_vt_Item.symbolAt (0))
     3737              {
     3738                break _block2__branch1;
     3739              }
     3740              Expr _v_deref__Item = Expr.empty;
     3741              _v_deref__Item = (Expr) _vt_Item.at (0);
     3742              int _v_len3;
     3743              _v_len3 = _v_deref__Item.getLen ();
     3744              int _v_len4;
     3745              _v_len4 = 1;
     3746              if (_v_len3 < _v_len4)
     3747              {
     3748                break _block2__branch1;
     3749              }
     3750              int _v_len___dollar_tmp_m_415_m_14;
     3751              _v_len___dollar_tmp_m_415_m_14 = (_v_len3 - _v_len4);
     3752              if (!_c_1.termEq (_v_deref__Item, 0))
     3753              {
     3754                break _block2__branch1;
     3755              }
     3756              Expr _ve__dollar_tmp_m_415_m_14 = Expr.empty;
     3757              _ve__dollar_tmp_m_415_m_14 = new Expr (_v_deref__Item, (0 + 1), _v_len___dollar_tmp_m_415_m_14);
     3758              Result _v_Del__Pragmas1 = new Result ();
     3759              Del_Pragmas (_ve_R, _v_Del__Pragmas1);
     3760              _v_res1.assign (new Expr (_ve_L, _v_Del__Pragmas1.getExpr ()));
     3761              break _block2;
     3762            }
     3763            if (_vt_Item.symbolAt (0))
     3764            {
     3765              continue _continue1;
     3766            }
     3767            Expr _v_deref__Item2 = Expr.empty;
     3768            _v_deref__Item2 = (Expr) _vt_Item.at (0);
     3769            int _v_len5;
     3770            _v_len5 = _v_deref__Item2.getLen ();
     3771            int _v_len6;
     3772            _v_len6 = 0;
     3773            if (_v_len5 < _v_len6)
     3774            {
     3775              continue _continue1;
     3776            }
     3777            int _v_len__xpr;
     3778            _v_len__xpr = (_v_len5 - _v_len6);
     3779            Expr _ve_xpr = Expr.empty;
     3780            _ve_xpr = new Expr (_v_deref__Item2, 0, _v_len__xpr);
     3781            Result _ge_auxcall1 = new Result ();
     3782            Del_Pragmas (_ve_xpr, _ge_auxcall1);
     3783            Result _v_Del__Pragmas2 = new Result ();
     3784            Del_Pragmas (_ve_R, _v_Del__Pragmas2);
     3785            Expr[] _va_63 = { _ve_L , new Expr(_ge_auxcall1.getExpr ()) , _v_Del__Pragmas2.getExpr () };
     3786            _v_res1.assign (Expr.concat (_va_63));
     3787          }
     3788          break _exit1;
     3789        }
     3790        break _block1;
     3791      }
     3792      _v_res1.assign (_ge_arg1);
     3793    }
     3794  }
     3795
    32833796  static  boolean Rename_Vars_0 (Expr _ge_arg1, Result _v_res1) throws RefalException
    32843797  {
     
    32893802    if (_v_len1 < _v_len2)
    32903803    {
    3291       throw new RefalException (_c_33);
     3804      throw new RefalException (_c_34);
    32923805    }
    32933806    int _v_len__stub1;
     
    32953808    if (_ge_arg1.symbolAt ((0 + 1)))
    32963809    {
    3297       throw new RefalException (_c_33);
     3810      throw new RefalException (_c_34);
    32983811    }
    32993812    if (_ge_arg1.symbolAt ((0 + 1 + 1)))
    33003813    {
    3301       throw new RefalException (_c_33);
     3814      throw new RefalException (_c_34);
    33023815    }
    33033816    Expr _v_deref__arg1 = Expr.empty;
     
    33113824    if (_v_len3 < _v_len4)
    33123825    {
    3313       throw new RefalException (_c_33);
     3826      throw new RefalException (_c_34);
    33143827    }
    33153828    int _v_len__stub2;
     
    33213834    if (_v_len5 < _v_len6)
    33223835    {
    3323       throw new RefalException (_c_33);
     3836      throw new RefalException (_c_34);
    33243837    }
    33253838    int _v_len__stub3;
     
    33273840    if (!_ge_arg1.symbolAt (0))
    33283841    {
    3329       throw new RefalException (_c_33);
     3842      throw new RefalException (_c_34);
    33303843    }
    33313844    Expr _v_stub4 = Expr.empty;
     
    33403853    return true;
    33413854  }
     3855
     3856  static  boolean Rename_0 (Expr _ge_arg1, Result _v_res1) throws RefalException
     3857  {
     3858    if (_ge_arg1.getLen () != 2)
     3859    {
     3860      throw new RefalException (_c_34);
     3861    }
     3862    if (_ge_arg1.symbolAt ((0 + 1)))
     3863    {
     3864      throw new RefalException (_c_34);
     3865    }
     3866    Expr _v_deref__arg1 = Expr.empty;
     3867    _v_deref__arg1 = (Expr) _ge_arg1.at ((0 + 1));
     3868    if (_v_deref__arg1.getLen () != 2)
     3869    {
     3870      throw new RefalException (_c_34);
     3871    }
     3872    if (_v_deref__arg1.symbolAt ((0 + 1)))
     3873    {
     3874      throw new RefalException (_c_34);
     3875    }
     3876    Expr _v_deref__deref__arg1 = Expr.empty;
     3877    _v_deref__deref__arg1 = (Expr) _v_deref__arg1.at ((0 + 1));
     3878    int _v_len1;
     3879    _v_len1 = _v_deref__deref__arg1.getLen ();
     3880    int _v_len2;
     3881    _v_len2 = 0;
     3882    if (_v_len1 < _v_len2)
     3883    {
     3884      throw new RefalException (_c_34);
     3885    }
     3886    int _v_len__stub1;
     3887    _v_len__stub1 = (_v_len1 - _v_len2);
     3888    if (!_ge_arg1.symbolAt (0))
     3889    {
     3890      throw new RefalException (_c_34);
     3891    }
     3892    if (!_v_deref__arg1.symbolAt (0))
     3893    {
     3894      throw new RefalException (_c_34);
     3895    }
     3896    Expr _v_stub2 = Expr.empty;
     3897    _v_stub2 = new Expr (_ge_arg1, 0, 1);
     3898    Expr _v_stub3 = Expr.empty;
     3899    _v_stub3 = new Expr (_v_deref__arg1, 0, 1);
     3900    Expr _v_stub1 = Expr.empty;
     3901    _v_stub1 = new Expr (_v_deref__deref__arg1, 0, _v_len__stub1);
     3902    Result _v_Rename1 = new Result ();
     3903    Result _v_Rename2 = new Result ();
     3904    Result _v_Rename3 = new Result ();
     3905    Rename (_v_stub2, _v_stub3, _v_stub1, _v_Rename1, _v_Rename2, _v_Rename3);
     3906    Expr[] _va_64 = { _v_Rename2.getExpr () , _c_35 , _v_Rename3.getExpr () };
     3907    _v_res1.assign (new Expr(new Expr (_v_Rename1.getExpr (), new Expr(Expr.concat (_va_64)))));
     3908    return true;
     3909  }
    33423910}
  • to-imperative/trunk/java/org/refal/plus/compiler/rfp_asail2asail.java

    r2669 r2735  
    55
    66public class rfp_asail2asail {
     7  @RefalFormat("$box Idx;")
    78  static  final Expr Idx = new Expr (new org.refal.plus.Box.Named ("Idx"));
     9  @RefalFormat("$box Blocks;")
    810  static  final Expr Blocks = new Expr (new org.refal.plus.Box.Named ("Blocks"));
     11  @RefalFormat("$table Breaks;")
    912  static  final Expr Breaks = new Expr (new org.refal.plus.Table.Named ("Breaks"));
     13  @RefalFormat("$box Last_Breaks;")
    1014  static  final Expr Last_Breaks = new Expr (new org.refal.plus.Box.Named ("Last_Breaks"));
    1115  static  final Expr _c_0 = new Expr (new Word ("MODULE"));
     
    116120  static  final Expr _c_50 = Expr.concat (_va_1);
    117121
     122  @RefalFormat("$func Simplify_ASAIL t = t;")
    118123  static public void Simplify_ASAIL (Expr _gt_arg1, Result _v_res1) throws RefalException
    119124  {
     
    153158  }
    154159
     160  @RefalFormat("$func Simplify e = e;")
    155161  static  void Simplify (Expr _ge_arg1, Result _v_res1) throws RefalException
    156162  {
     
    432438  }
    433439
     440  @RefalFormat("$func? GetR s = t;")
    434441  static  boolean GetR (Expr _vs_box, Result _v_res1) throws RefalException
    435442  {
     
    455462  }
    456463
     464  @RefalFormat("$func Remove_Unreachable e = e;")
    457465  static  void Remove_Unreachable (Expr _ge_arg1, Result _v_res1) throws RefalException
    458466  {
     
    15011509  }
    15021510
     1511  @RefalFormat("$func Remove_Dupl_Decl (e) (e) e = e;")
    15031512  static  void Remove_Dupl_Decl (Expr _ve_decls, Expr _ve_subst, Expr _ve_items, Result _v_res1) throws RefalException
    15041513  {
     
    17841793  }
    17851794
     1795  @RefalFormat("$func Process_Var (e) (e) s t = e (e) (e);")
    17861796  static  void Process_Var (Expr _ve_decls, Expr _ve_subst, Expr _vs_type, Expr _vt_var, Result _v_res1, Result _v_res2, Result _v_res3) throws RefalException
    17871797  {
     
    19141924  }
    19151925
     1926  @RefalFormat("$func Simplify_Infix t = t;")
    19161927  static  void Simplify_Infix (Expr _gt_arg1, Result _v_res1) throws RefalException
    19171928  {
     
    21032114  }
    21042115
     2116  @RefalFormat("$func Simplify_Arithm e = e;")
    21052117  static  void Simplify_Arithm (Expr _ge_arg1, Result _v_res1) throws RefalException
    21062118  {
     
    21632175  }
    21642176
     2177  @RefalFormat("$func Eval_Mult e = e;")
    21652178  static  void Eval_Mult (Expr _ge_arg1, Result _v_res1) throws RefalException
    21662179  {
     
    23022315  }
    23032316
     2317  @RefalFormat("$func Eval_Add e = e;")
    23042318  static  void Eval_Add (Expr _ge_arg1, Result _v_res1) throws RefalException
    23052319  {
     
    24012415  }
    24022416
     2417  @RefalFormat("$func Eval_Div e = e;")
    24032418  static  void Eval_Div (Expr _ge_arg1, Result _v_res1) throws RefalException
    24042419  {
     
    24282443  }
    24292444
     2445  @RefalFormat("$func Eval_Rem e = e;")
    24302446  static  void Eval_Rem (Expr _ge_arg1, Result _v_res1) throws RefalException
    24312447  {
     
    24552471  }
    24562472
     2473  @RefalFormat("$func Eval__ e = e;")
    24572474  static  void Eval__ (Expr _ge_arg1, Result _v_res1) throws RefalException
    24582475  {
     
    24822499  }
    24832500
     2501  @RefalFormat("$func? Simplify_Cmp s (e) (e) = e;")
    24842502  static  boolean Simplify_Cmp (Expr _vs_op, Expr _ve_xpr1, Expr _ve_xpr2, Result _v_res1) throws RefalException
    24852503  {
     
    25142532  }
    25152533
     2534  @RefalFormat("$func? Cmp s (e) (e) = e;")
    25162535  static  boolean Cmp (Expr _gs_arg1, Expr _ge_arg2, Expr _ge_arg3, Result _v_res1) throws RefalException
    25172536  {
     
    26272646  }
    26282647
     2648  @RefalFormat("$func Free_Idx = s;")
    26292649  static  void Free_Idx (Result _v_res1) throws RefalException
    26302650  {
  • to-imperative/trunk/java/org/refal/plus/compiler/rfp_asail_cpp.java

    r2669 r2735  
    55
    66public class rfp_asail_cpp {
     7  @RefalFormat("$box Int;")
    78  static  final Expr Int = new Expr (new org.refal.plus.Box.Named ("Int"));
     9  @RefalFormat("$box Module_Name;")
    810  static  final Expr Module_Name = new Expr (new org.refal.plus.Box.Named ("Module_Name"));
     11  @RefalFormat("$box Current_Namespace;")
    912  static  final Expr Current_Namespace = new Expr (new org.refal.plus.Box.Named ("Current_Namespace"));
     13  @RefalFormat("$box Current_Func;")
    1014  static  final Expr Current_Func = new Expr (new org.refal.plus.Box.Named ("Current_Func"));
     15  @RefalFormat("$box Current_Trace;")
    1116  static  final Expr Current_Trace = new Expr (new org.refal.plus.Box.Named ("Current_Trace"));
     17  @RefalFormat("$box Entry;")
    1218  static  final Expr Entry = new Expr (new org.refal.plus.Box.Named ("Entry"));
     19  @RefalFormat("$box Entry_Name;")
    1320  static  final Expr Entry_Name = new Expr (new org.refal.plus.Box.Named ("Entry_Name"));
     21  @RefalFormat("$box Const_Exprs;")
    1422  static  final Expr Const_Exprs = new Expr (new org.refal.plus.Box.Named ("Const_Exprs"));
     23  @RefalFormat("$table Externs;")
    1524  static  final Expr Externs = new Expr (new org.refal.plus.Table.Named ("Externs"));
     25  @RefalFormat("$table Unavailable_Imports;")
    1626  static  final Expr Unavailable_Imports = new Expr (new org.refal.plus.Table.Named ("Unavailable_Imports"));
     27  @RefalFormat("$table Used_Unavailable_Imports;")
    1728  static  final Expr Used_Unavailable_Imports = new Expr (new org.refal.plus.Table.Named ("Used_Unavailable_Imports"));
     29  @RefalFormat("$table Decls;")
    1830  static  final Expr Decls = new Expr (new org.refal.plus.Table.Named ("Decls"));
     31  @RefalFormat("$table Locals;")
    1932  static  final Expr Locals = new Expr (new org.refal.plus.Table.Named ("Locals"));
    2033  static  final Expr _c_0 = new Expr (new Word ("MODULE"));
     
    234247  static  final Expr _c_179 = Expr.concat (_va_2);
    235248
     249  @RefalFormat("$func RFP_ASAIL_To_CPP t = e;")
    236250  static public void RFP_ASAIL_To_CPP (Expr _gt_arg1, Result _v_res1) throws RefalException
    237251  {
     
    523537  }
    524538
     539  @RefalFormat("$func ASAIL_To_CPP e = e;")
    525540  static  void ASAIL_To_CPP (Expr _ve_asail, Result _v_res1) throws RefalException
    526541  {
     
    21692184  }
    21702185
     2186  @RefalFormat("$func Expr_Ref_To_CPP e = e;")
    21712187  static  void Expr_Ref_To_CPP (Expr _ge_arg1, Result _v_res1) throws RefalException
    21722188  {
     
    21992215  }
    22002216
     2217  @RefalFormat("$func Term_Ref_To_CPP e = e;")
    22012218  static  void Term_Ref_To_CPP (Expr _ge_arg1, Result _v_res1) throws RefalException
    22022219  {
     
    25132530  }
    25142531
     2532  @RefalFormat("$func Expr_Int_To_CPP e = e;")
    25152533  static  void Expr_Int_To_CPP (Expr _ge_arg1, Result _v_res1) throws RefalException
    25162534  {
     
    27442762  }
    27452763
     2764  @RefalFormat("$func Cond_To_CPP t = e;")
    27462765  static  void Cond_To_CPP (Expr _gt_arg1, Result _v_res1) throws RefalException
    27472766  {
     
    31313150  }
    31323151
     3152  @RefalFormat("$func Infix_To_CPP s s e = e;")
    31333153  static  void Infix_To_CPP (Expr _vs_arg2cpp, Expr _vs_op, Expr _ve_args, Result _v_res1) throws RefalException
    31343154  {
     
    32123232  }
    32133233
     3234  @RefalFormat("$func Step_To_CPP e = e;")
    32143235  static  void Step_To_CPP (Expr _ge_arg1, Result _v_res1) throws RefalException
    32153236  {
     
    32893310  }
    32903311
     3312  @RefalFormat("$func Const_Expr_To_CPP e = e;")
    32913313  static  void Const_Expr_To_CPP (Expr _ge_arg1, Result _v_res1) throws RefalException
    32923314  {
     
    33793401  }
    33803402
     3403  @RefalFormat("$func Const_Expr_Aux e = e;")
    33813404  static  void Const_Expr_Aux (Expr _ge_arg1, Result _v_res1) throws RefalException
    33823405  {
     
    36783701  }
    36793702
     3703  @RefalFormat("$func Symbol_To_CPP s = e;")
    36803704  static  void Symbol_To_CPP (Expr _vs_ObjectSymbol, Result _v_res1) throws RefalException
    36813705  {
     
    37693793  }
    37703794
     3795  @RefalFormat("$func Args_To_CPP (e) s e = e;")
    37713796  static  void Args_To_CPP (Expr _ge_arg1, Expr _gs_arg2, Expr _ge_arg3, Result _v_res1) throws RefalException
    37723797  {
     
    41094134  }
    41104135
     4136  @RefalFormat("$func Name_To_CPP s t = e;")
    41114137  static  void Name_To_CPP (Expr _gs_arg1, Expr _gt_arg2, Result _v_res1) throws RefalException
    41124138  {
     
    42204246  }
    42214247
     4248  @RefalFormat("$func QName_To_Cpp e = e;")
    42224249  static  void QName_To_Cpp (Expr _ve_name, Result _v_res1) throws RefalException
    42234250  {
     
    42254252  }
    42264253
     4254  @RefalFormat("$func Open_Namespace e = e;")
    42274255  static  void Open_Namespace (Expr _ve_name, Result _v_res1) throws RefalException
    42284256  {
     
    42314259  }
    42324260
     4261  @RefalFormat("$func Close_Namespace e = e;")
    42334262  static  void Close_Namespace (Expr _ve_name, Result _v_res1) throws RefalException
    42344263  {
     
    42364265  }
    42374266
     4267  @RefalFormat("$func Namespace_Control e = e;")
    42384268  static  void Namespace_Control (Expr _ve_qualifiers, Result _v_res1) throws RefalException
    42394269  {
     
    42964326  }
    42974327
     4328  @RefalFormat("$func Trace_Enter e (e) = e;")
    42984329  static  void Trace_Enter (Expr _ve_name, Expr _ve_args, Result _v_res1) throws RefalException
    42994330  {
     
    43704401  }
    43714402
     4403  @RefalFormat("$func Trace_Exit e (e) = e;")
    43724404  static  void Trace_Exit (Expr _ve_name, Expr _ve_args, Result _v_res1) throws RefalException
    43734405  {
     
    44444476  }
    44454477
     4478  @RefalFormat("$func Trace_Fail e = e;")
    44464479  static  void Trace_Fail (Expr _ve_name, Result _v_res1) throws RefalException
    44474480  {
     
    44504483  }
    44514484
     4485  @RefalFormat("$func Extract_Qualifiers t = (e) e;")
    44524486  static  void Extract_Qualifiers (Expr _vt_name, Result _v_res1, Result _v_res2) throws RefalException
    44534487  {
  • to-imperative/trunk/java/org/refal/plus/compiler/rfp_asail_java.java

    r2669 r2735  
    55
    66public class rfp_asail_java {
     7  @RefalFormat("$box Int;")
    78  static  final Expr Int = new Expr (new org.refal.plus.Box.Named ("Int"));
     9  @RefalFormat("$box Module_Name;")
    810  static  final Expr Module_Name = new Expr (new org.refal.plus.Box.Named ("Module_Name"));
     11  @RefalFormat("$box Entry;")
    912  static  final Expr Entry = new Expr (new org.refal.plus.Box.Named ("Entry"));
     13  @RefalFormat("$box Entry_Name;")
    1014  static  final Expr Entry_Name = new Expr (new org.refal.plus.Box.Named ("Entry_Name"));
     15  @RefalFormat("$box Current_Namespace;")
    1116  static  final Expr Current_Namespace = new Expr (new org.refal.plus.Box.Named ("Current_Namespace"));
     17  @RefalFormat("$box Func_Name;")
    1218  static  final Expr Func_Name = new Expr (new org.refal.plus.Box.Named ("Func_Name"));
     19  @RefalFormat("$box Ress;")
    1320  static  final Expr Ress = new Expr (new org.refal.plus.Box.Named ("Ress"));
     21  @RefalFormat("$table Result;")
    1422  static  final Expr Result = new Expr (new org.refal.plus.Table.Named ("Result"));
     23  @RefalFormat("$box Res_Assigns;")
    1524  static  final Expr Res_Assigns = new Expr (new org.refal.plus.Box.Named ("Res_Assigns"));
     25  @RefalFormat("$table Iter_Vars;")
    1626  static  final Expr Iter_Vars = new Expr (new org.refal.plus.Table.Named ("Iter_Vars"));
     27  @RefalFormat("$box Free_Idx;")
    1728  static  final Expr Free_Idx = new Expr (new org.refal.plus.Box.Named ("Free_Idx"));
    1829  static  final Expr _c_0 = new Expr (new Word ("MODULE"));
     
    2738  static  final Expr _c_7 = Expr.fromSequence ("package ");
    2839  static  final Expr _c_10 = Expr.fromSequence (" (new Result ());");
    29   static  final Expr _c_169 = Expr.fromSequence ("java.lang.System.out.println (\"$error: \" + e);");
    30   static private final Expr[] _va_1 = { Expr.fromSequence ("catch (RefalException e) {"), new Expr (new Expr (new Expr (_c_169), new Expr (Expr.fromSequence ("java.lang.System.exit (100);")))), Expr.fromSequence ("}") };
    31   static  final Expr _c_170 = Expr.concat (_va_1);
    32   static  final Expr _c_11 = new Expr (_c_170, 27, 1);
     40  static  final Expr _c_172 = Expr.fromSequence ("java.lang.System.out.println (\"$error: \" + e);");
     41  static private final Expr[] _va_1 = { Expr.fromSequence ("catch (RefalException e) {"), new Expr (new Expr (new Expr (_c_172), new Expr (Expr.fromSequence ("java.lang.System.exit (100);")))), Expr.fromSequence ("}") };
     42  static  final Expr _c_173 = Expr.concat (_va_1);
     43  static  final Expr _c_11 = new Expr (_c_173, 27, 1);
    3344  static  final Expr _c_12 = Expr.fromSequence ("try {");
    34   static  final Expr _c_13 = new Expr (_c_170);
     45  static  final Expr _c_13 = new Expr (_c_173);
    3546  static  final Expr _c_14 = Expr.fromSequence ("public static void main (java.lang.String[] args) {");
    3647  static  final Expr _c_15 = new Expr (Expr.empty);
     
    3849  static  final Expr _c_17 = Expr.fromSequence ("public class ");
    3950  static  final Expr _c_18 = new Expr (Expr.fromSequence ("import org.refal.plus.*;"));
    40   static  final Expr _c_19 = new Expr (new Word ("IMPORT"));
    41   static  final Expr _c_20 = new Expr (new Word ("FUNC"));
    42   static  final Expr _c_21 = new Expr (_c_14, 14, 4);
    43   static  final Expr _c_22 = new Expr (new Word ("FUNC?"));
    44   static  final Expr _c_146 = Expr.fromSequence ("public boolean eval (Expr arg, Result res) throws RefalException {");
    45   static  final Expr _c_23 = new Expr (_c_146, 7, 7);
    46   static  final Expr _c_171 = Expr.fromSequence ("return true;");
    47   static  final Expr _c_24 = new Expr (_c_171);
    48   static  final Expr _c_25 = new Expr (new Word ("Result"));
    49   static  final Expr _c_26 = new Expr (new Word ("Expr"));
    50   static  final Expr _c_27 = new Expr (_c_146, 41, 23);
    51   static  final Expr _c_28 = new Expr (_c_10, 0, 2);
    52   static  final Expr _c_29 = new Expr (_c_28, 0, 1);
    53   static  final Expr _c_30 = new Expr (_c_14, 7, 7);
    54   static  final Expr _c_31 = new Expr (_c_16, 1, 1);
    55   static  final Expr _c_32 = new Expr (new Word ("TRACE"));
    56   static  final Expr _c_33 = new Expr (new Word ("IF-INT-CMP"));
    57   static  final Expr _c_34 = new Expr (_c_27, 0, 1);
    58   static  final Expr _c_53 = Expr.fromSequence ("if (false)");
    59   static  final Expr _c_35 = new Expr (_c_53, 0, 4);
    60   static  final Expr _c_36 = new Expr (new Word ("IF"));
    61   static  final Expr _c_37 = new Expr (new Word ("CALL-FAILS"));
    62   static  final Expr _c_38 = new Expr (new Word ("FOR"));
    63   static  final Expr _c_39 = new Expr (new Word ("LABEL"));
    64   static  final Expr _c_40 = new Expr (_c_169, 37, 2);
    65   static  final Expr _c_41 = new Expr (new Word ("INC-ITER"));
    66   static  final Expr _c_42 = new Expr (new Word ("DEC-ITER"));
    67   static  final Expr _c_43 = Expr.fromSequence (".getLeft();");
    68   static  final Expr _c_172 = Expr.fromSequence ("Expr err = error.getExpr ();");
    69   static  final Expr _c_44 = new Expr (_c_172, 8, 3);
    70   static  final Expr _c_45 = new Expr (_c_172, 0, 5);
    71   static  final Expr _c_46 = Expr.fromSequence (".getRight();");
    72   static  final Expr _c_47 = Expr.fromSequence ("for ( ; ; ");
    73   static  final Expr _c_48 = Expr.fromSequence (": {");
    74   static  final Expr _c_49 = new Expr (new Word ("TRY"));
    75   static  final Expr _c_50 = Expr.fromSequence ("\", \"This is for avoiding 'Unreachable code' errors\");");
    76   static  final Expr _c_51 = new Expr (_c_50, 0, 4);
    77   static  final Expr _c_52 = Expr.fromSequence ("throw new RefalException (\"");
    78   static  final Expr _c_54 = new Expr (new Expr (_c_12, 0, 3));
    79   static  final Expr _c_55 = new Expr (new Word ("CATCH-ERROR"));
    80   static  final Expr _c_56 = new Expr (_c_172);
    81   static  final Expr _c_57 = Expr.fromSequence ("catch (RefalException error) {");
    82   static  final Expr _c_58 = new Expr (new Word ("RETFAIL"));
    83   static  final Expr _c_173 = Expr.fromSequence ("return false;");
    84   static private final Expr[] _va_2 = { Expr.fromSequence (") {"), new Expr (_c_173), Expr.fromSequence ("}") };
    85   static  final Expr _c_94 = Expr.concat (_va_2);
    86   static  final Expr _c_59 = new Expr (_c_94, 3, 1);
    87   static  final Expr _c_60 = new Expr (new Word ("FATAL"));
    88   static  final Expr _c_61 = Expr.fromSequence ("\", \"Unexpected fail\");");
    89   static  final Expr _c_62 = new Expr (new Word ("LSPLIT"));
    90   static  final Expr _c_63 = Expr.fromSequence ("_va_");
    91   static  final Expr _c_64 = new Expr (_c_43, 9, 2);
    92   static  final Expr _c_65 = Expr.fromSequence (".leftSplit(");
    93   static  final Expr _c_66 = Expr.fromSequence ("Expr.SplitIterator ");
    94   static  final Expr _c_67 = new Expr (new Word ("RSPLIT"));
    95   static  final Expr _c_68 = Expr.fromSequence (".rightSplit(");
    96   static  final Expr _c_69 = new Expr (new Word ("DECL"));
    97   static  final Expr _c_70 = Expr.fromSequence ("int ");
    98   static  final Expr _c_71 = new Expr (new Word ("ASSIGN"));
    99   static  final Expr _c_72 = Expr.fromSequence (".assign (");
    100   static  final Expr _c_73 = Expr.fromSequence (" = new Result ();");
    101   static  final Expr _c_74 = new Expr (_c_73, 7, 7);
    102   static  final Expr _c_75 = Expr.fromSequence (" = Expr.empty;");
    103   static  final Expr _c_76 = new Expr (new Word ("DROP"));
    104   static  final Expr _c_77 = Expr.fromSequence (".drop ();");
    105   static  final Expr _c_78 = new Expr (new Word ("CONTINUE"));
    106   static  final Expr _c_79 = Expr.fromSequence ("continue ");
    107   static  final Expr _c_80 = new Expr (new Word ("BREAK"));
    108   static  final Expr _c_81 = Expr.fromSequence ("break ");
    109   static  final Expr _c_82 = new Expr (new Word ("ERROR"));
    110   static  final Expr _c_83 = new Expr (_c_52, 0, 26);
    111   static  final Expr _c_84 = new Expr (new Word ("CONSTEXPR"));
    112   static  final Expr _c_85 = new Expr (new Word ("STATIC"));
    113   static  final Expr _c_86 = Expr.fromSequence (" final Expr ");
    114   static  final Expr _c_87 = new Expr (new Word ("OBJ"));
    115   static  final Expr _c_88 = Expr.fromSequence ("\"));");
    116   static  final Expr _c_89 = Expr.fromSequence (".Named (\"");
    117   static  final Expr _c_90 = Expr.fromSequence (" = new Expr (new org.refal.plus.");
    118   static  final Expr _c_91 = new Expr (new Word ("DECL-OBJ"));
    119   static  final Expr _c_92 = new Expr (new Word ("DECL-FUNC"));
    120   static  final Expr _c_93 = new Expr (new Word ("TAILCALL?"));
    121   static  final Expr _c_95 = Expr.fromSequence ("if (!");
    122   static  final Expr _c_96 = new Expr (_c_172, 16, 12);
    123   static  final Expr _c_97 = new Expr (_c_75, 3, 10);
    124   static  final Expr _c_98 = new Expr (_c_51, 1, 2);
    125   static  final Expr _c_99 = new Expr (_c_90, 3, 10);
    126   static  final Expr _c_100 = new Expr (new Func () {
     51  static  final Expr _c_19 = new Expr (_c_172, 30, 1);
     52  static  final Expr _c_20 = Expr.fromSequence ("\\\"");
     53  static  final Expr _c_22 = Expr.fromSequence ("\\'");
     54  static  final Expr _c_21 = new Expr (_c_22, 1, 1);
     55  static  final Expr _c_23 = new Expr (new Word ("IMPORT"));
     56  static  final Expr _c_24 = new Expr (new Word ("FUNC"));
     57  static  final Expr _c_25 = new Expr (_c_14, 14, 4);
     58  static  final Expr _c_26 = new Expr (new Word ("FUNC?"));
     59  static  final Expr _c_151 = Expr.fromSequence ("public boolean eval (Expr arg, Result res) throws RefalException {");
     60  static  final Expr _c_27 = new Expr (_c_151, 7, 7);
     61  static  final Expr _c_174 = Expr.fromSequence ("return true;");
     62  static  final Expr _c_28 = new Expr (_c_174);
     63  static  final Expr _c_56 = Expr.fromSequence ("\", \"This is for avoiding 'Unreachable code' errors\");");
     64  static  final Expr _c_29 = new Expr (_c_56, 50, 2);
     65  static  final Expr _c_30 = Expr.fromSequence ("@RefalFormat(\"");
     66  static  final Expr _c_31 = new Expr (new Word ("Result"));
     67  static  final Expr _c_32 = new Expr (new Word ("Expr"));
     68  static  final Expr _c_33 = new Expr (_c_151, 41, 23);
     69  static  final Expr _c_34 = new Expr (_c_10, 0, 2);
     70  static  final Expr _c_35 = new Expr (_c_34, 0, 1);
     71  static  final Expr _c_36 = new Expr (_c_14, 7, 7);
     72  static  final Expr _c_37 = new Expr (_c_16, 1, 1);
     73  static  final Expr _c_38 = new Expr (new Word ("TRACE"));
     74  static  final Expr _c_39 = new Expr (new Word ("IF-INT-CMP"));
     75  static  final Expr _c_40 = new Expr (_c_29, 1, 1);
     76  static  final Expr _c_59 = Expr.fromSequence ("if (false)");
     77  static  final Expr _c_41 = new Expr (_c_59, 0, 4);
     78  static  final Expr _c_42 = new Expr (new Word ("IF"));
     79  static  final Expr _c_43 = new Expr (new Word ("CALL-FAILS"));
     80  static  final Expr _c_44 = new Expr (new Word ("FOR"));
     81  static  final Expr _c_45 = new Expr (new Word ("LABEL"));
     82  static  final Expr _c_46 = new Expr (_c_172, 37, 2);
     83  static  final Expr _c_47 = new Expr (new Word ("INC-ITER"));
     84  static  final Expr _c_48 = new Expr (new Word ("DEC-ITER"));
     85  static  final Expr _c_49 = Expr.fromSequence (".getLeft();");
     86  static  final Expr _c_175 = Expr.fromSequence ("Expr err = error.getExpr ();");
     87  static  final Expr _c_50 = new Expr (_c_175, 8, 3);
     88  static  final Expr _c_51 = new Expr (_c_175, 0, 5);
     89  static  final Expr _c_52 = Expr.fromSequence (".getRight();");
     90  static  final Expr _c_53 = Expr.fromSequence ("for ( ; ; ");
     91  static  final Expr _c_54 = Expr.fromSequence (": {");
     92  static  final Expr _c_55 = new Expr (new Word ("TRY"));
     93  static  final Expr _c_57 = new Expr (_c_56, 0, 4);
     94  static  final Expr _c_58 = Expr.fromSequence ("throw new RefalException (\"");
     95  static  final Expr _c_60 = new Expr (new Expr (_c_12, 0, 3));
     96  static  final Expr _c_61 = new Expr (new Word ("CATCH-ERROR"));
     97  static  final Expr _c_62 = new Expr (_c_175);
     98  static  final Expr _c_63 = Expr.fromSequence ("catch (RefalException error) {");
     99  static  final Expr _c_64 = new Expr (new Word ("RETFAIL"));
     100  static  final Expr _c_176 = Expr.fromSequence ("return false;");
     101  static private final Expr[] _va_2 = { Expr.fromSequence (") {"), new Expr (_c_176), Expr.fromSequence ("}") };
     102  static  final Expr _c_100 = Expr.concat (_va_2);
     103  static  final Expr _c_65 = new Expr (_c_100, 3, 1);
     104  static  final Expr _c_66 = new Expr (new Word ("FATAL"));
     105  static  final Expr _c_67 = Expr.fromSequence ("\", \"Unexpected fail\");");
     106  static  final Expr _c_68 = new Expr (new Word ("LSPLIT"));
     107  static  final Expr _c_69 = Expr.fromSequence ("_va_");
     108  static  final Expr _c_70 = new Expr (_c_49, 9, 2);
     109  static  final Expr _c_71 = Expr.fromSequence (".leftSplit(");
     110  static  final Expr _c_72 = Expr.fromSequence ("Expr.SplitIterator ");
     111  static  final Expr _c_73 = new Expr (new Word ("RSPLIT"));
     112  static  final Expr _c_74 = Expr.fromSequence (".rightSplit(");
     113  static  final Expr _c_75 = new Expr (new Word ("DECL"));
     114  static  final Expr _c_76 = Expr.fromSequence ("int ");
     115  static  final Expr _c_77 = new Expr (new Word ("ASSIGN"));
     116  static  final Expr _c_78 = Expr.fromSequence (".assign (");
     117  static  final Expr _c_79 = Expr.fromSequence (" = new Result ();");
     118  static  final Expr _c_80 = new Expr (_c_79, 7, 7);
     119  static  final Expr _c_81 = Expr.fromSequence (" = Expr.empty;");
     120  static  final Expr _c_82 = new Expr (new Word ("DROP"));
     121  static  final Expr _c_83 = Expr.fromSequence (".drop ();");
     122  static  final Expr _c_84 = new Expr (new Word ("CONTINUE"));
     123  static  final Expr _c_85 = Expr.fromSequence ("continue ");
     124  static  final Expr _c_86 = new Expr (new Word ("BREAK"));
     125  static  final Expr _c_87 = Expr.fromSequence ("break ");
     126  static  final Expr _c_88 = new Expr (new Word ("ERROR"));
     127  static  final Expr _c_89 = new Expr (_c_58, 0, 26);
     128  static  final Expr _c_90 = new Expr (new Word ("CONSTEXPR"));
     129  static  final Expr _c_91 = new Expr (new Word ("STATIC"));
     130  static  final Expr _c_92 = Expr.fromSequence (" final Expr ");
     131  static  final Expr _c_93 = new Expr (new Word ("OBJ"));
     132  static  final Expr _c_94 = Expr.fromSequence ("\"));");
     133  static  final Expr _c_95 = Expr.fromSequence (".Named (\"");
     134  static  final Expr _c_96 = Expr.fromSequence (" = new Expr (new org.refal.plus.");
     135  static  final Expr _c_97 = new Expr (new Word ("DECL-OBJ"));
     136  static  final Expr _c_98 = new Expr (new Word ("DECL-FUNC"));
     137  static  final Expr _c_99 = new Expr (new Word ("TAILCALL?"));
     138  static  final Expr _c_101 = Expr.fromSequence ("if (!");
     139  static  final Expr _c_102 = new Expr (_c_175, 16, 12);
     140  static  final Expr _c_103 = new Expr (_c_81, 3, 10);
     141  static  final Expr _c_104 = new Expr (_c_57, 1, 2);
     142  static  final Expr _c_105 = new Expr (_c_96, 3, 10);
     143  static  final Expr _c_106 = new Expr (new Func () {
    127144    public boolean eval (Expr arg, Result res) throws RefalException {
    128145      return Term_Ref_To_Java_0 (arg, res);
    129146    }
    130147  });
    131   static  final Expr _c_101 = new Expr (new Word (","));
    132   static  final Expr _c_102 = Expr.fromSequence (" };");
    133   static  final Expr _c_103 = Expr.fromSequence (" = { ");
    134   static  final Expr _c_141 = Expr.fromSequence ("static private final Expr[] ");
    135   static  final Expr _c_104 = new Expr (_c_141, 21, 7);
    136   static  final Expr _c_105 = Expr.fromSequence ("Expr.concat (");
    137   static  final Expr _c_106 = new Expr (new Word ("PAREN"));
    138   static  final Expr _c_107 = Expr.fromSequence ("new Expr(");
    139   static  final Expr _c_108 = new Expr (new Word ("DEREF"));
    140   static  final Expr _c_109 = Expr.fromSequence (".at (");
    141   static  final Expr _c_110 = Expr.fromSequence ("(Expr) ");
    142   static  final Expr _c_111 = new Expr (new Word ("SUBEXPR"));
    143   static  final Expr _c_112 = new Expr (new Word ("REF"));
    144   static  final Expr _c_113 = new Expr (new Word ("ERROR-EXPR"));
    145   static  final Expr _c_114 = new Expr (_c_172, 5, 3);
    146   static  final Expr _c_115 = new Expr (new Word ("Illegal int-symbol: "));
    147   static  final Expr _c_116 = new Expr (new Word ("LENGTH"));
    148   static  final Expr _c_117 = Expr.fromSequence (".getLen ()");
    149   static  final Expr _c_118 = new Expr (new Word ("MAX"));
    150   static  final Expr _c_119 = Expr.fromSequence ("java.lang.Math.max (");
    151   static  final Expr _c_120 = new Expr (new Word ("MIN"));
    152   static  final Expr _c_121 = Expr.fromSequence ("java.lang.Math.min (");
    153   static  final Expr _c_122 = new Expr (new Word ("INFIX"));
    154   static  final Expr _c_123 = new Expr (new Func () {
     148  static  final Expr _c_107 = new Expr (new Word (","));
     149  static  final Expr _c_108 = Expr.fromSequence (" };");
     150  static  final Expr _c_109 = Expr.fromSequence (" = { ");
     151  static  final Expr _c_147 = Expr.fromSequence ("static private final Expr[] ");
     152  static  final Expr _c_110 = new Expr (_c_147, 21, 7);
     153  static  final Expr _c_111 = Expr.fromSequence ("Expr.concat (");
     154  static  final Expr _c_112 = new Expr (new Word ("PAREN"));
     155  static  final Expr _c_113 = Expr.fromSequence ("new Expr(");
     156  static  final Expr _c_114 = new Expr (new Word ("DEREF"));
     157  static  final Expr _c_115 = Expr.fromSequence (".at (");
     158  static  final Expr _c_116 = Expr.fromSequence ("(Expr) ");
     159  static  final Expr _c_117 = new Expr (new Word ("SUBEXPR"));
     160  static  final Expr _c_118 = new Expr (new Word ("REF"));
     161  static  final Expr _c_119 = new Expr (new Word ("ERROR-EXPR"));
     162  static  final Expr _c_120 = new Expr (_c_175, 5, 3);
     163  static  final Expr _c_121 = new Expr (new Word ("Illegal int-symbol: "));
     164  static  final Expr _c_122 = new Expr (new Word ("LENGTH"));
     165  static  final Expr _c_123 = Expr.fromSequence (".getLen ()");
     166  static  final Expr _c_124 = new Expr (new Word ("MAX"));
     167  static  final Expr _c_125 = Expr.fromSequence ("java.lang.Math.max (");
     168  static  final Expr _c_126 = new Expr (new Word ("MIN"));
     169  static  final Expr _c_127 = Expr.fromSequence ("java.lang.Math.min (");
     170  static  final Expr _c_128 = new Expr (new Word ("INFIX"));
     171  static  final Expr _c_129 = new Expr (new Func () {
    155172    public boolean eval (Expr arg, Result res) throws RefalException {
    156173      return Expr_Int_To_Java_0 (arg, res);
    157174    }
    158175  });
    159   static  final Expr _c_124 = new Expr (_c_28, 1, 1);
    160   static  final Expr _c_125 = new Expr (new Word ("+"));
    161   static  final Expr _c_126 = new Expr (new Word ("CALL"));
    162   static  final Expr _c_127 = new Expr (_c_95, 4, 1);
    163   static  final Expr _c_128 = new Expr (new Word ("ITER-FAILS"));
    164   static  final Expr _c_129 = new Expr (new java.math.BigInteger ("0"));
    165   static  final Expr _c_130 = new Expr (new java.math.BigInteger ("2"));
    166   static  final Expr _c_131 = Expr.fromSequence (".isValid ()");
    167   static  final Expr _c_132 = new Expr (new Word ("SYMBOL?"));
    168   static  final Expr _c_133 = Expr.fromSequence (".symbolAt (");
    169   static  final Expr _c_134 = new Expr (new Word ("EQ"));
    170   static  final Expr _c_135 = Expr.fromSequence (".eq (");
    171   static  final Expr _c_136 = new Expr (new Word ("TERM-EQ"));
    172   static  final Expr _c_137 = Expr.fromSequence (".termEq (");
    173   static  final Expr _c_138 = new Expr (new Word ("NOT"));
    174   static  final Expr _c_139 = Expr.fromSequence (".next ()");
    175   static  final Expr _c_140 = Expr.fromSequence (".prev ()");
    176   static  final Expr _c_142 = new Expr (_c_88, 0, 2);
    177   static  final Expr _c_143 = Expr.fromSequence ("Expr.fromSequence (\"");
    178   static  final Expr _c_144 = Expr.fromSequence (" (arg, res);");
    179   static  final Expr _c_145 = new Expr (_c_171, 0, 7);
    180   static  final Expr _c_147 = Expr.fromSequence ("})");
    181   static  final Expr _c_148 = Expr.fromSequence ("new Expr (new Func () {");
    182   static  final Expr _c_149 = Expr.fromSequence ("java.math.BigInteger");
    183   static  final Expr _c_150 = new Expr (_c_88, 0, 3);
    184   static  final Expr _c_151 = new Expr (_c_89, 6, 3);
    185   static  final Expr _c_152 = new Expr (_c_148, 0, 14);
    186   static  final Expr _c_153 = Expr.fromSequence ("new Expr (new Word (\"");
    187   static  final Expr _c_155 = Expr.fromSequence ("\\\\");
    188   static  final Expr _c_154 = new Expr (_c_155, 0, 1);
    189   static  final Expr _c_156 = Expr.fromSequence ("\n");
    190   static  final Expr _c_157 = Expr.fromSequence ("\\n");
    191   static  final Expr _c_158 = Expr.fromSequence ("\t");
    192   static  final Expr _c_159 = Expr.fromSequence ("\\t");
    193   static  final Expr _c_160 = Expr.fromSequence ("\r");
    194   static  final Expr _c_161 = Expr.fromSequence ("\\r");
    195   static  final Expr _c_162 = new Expr (_c_142, 0, 1);
    196   static  final Expr _c_163 = Expr.fromSequence ("\\\"");
    197   static  final Expr _c_164 = new Expr (_c_96, 0, 11);
    198   static  final Expr _c_165 = new Expr (new Word ("EXPORT"));
    199   static  final Expr _c_166 = new Expr (_c_146, 0, 6);
    200   static  final Expr _c_167 = new Expr (new java.math.BigInteger ("1"));
     176  static  final Expr _c_130 = new Expr (_c_34, 1, 1);
     177  static  final Expr _c_131 = new Expr (new Word ("+"));
     178  static  final Expr _c_132 = new Expr (new Word ("CALL"));
     179  static  final Expr _c_133 = new Expr (_c_101, 4, 1);
     180  static  final Expr _c_134 = new Expr (new Word ("ITER-FAILS"));
     181  static  final Expr _c_135 = new Expr (new java.math.BigInteger ("0"));
     182  static  final Expr _c_136 = new Expr (new java.math.BigInteger ("2"));
     183  static  final Expr _c_137 = Expr.fromSequence (".isValid ()");
     184  static  final Expr _c_138 = new Expr (new Word ("SYMBOL?"));
     185  static  final Expr _c_139 = Expr.fromSequence (".symbolAt (");
     186  static  final Expr _c_140 = new Expr (new Word ("EQ"));
     187  static  final Expr _c_141 = Expr.fromSequence (".eq (");
     188  static  final Expr _c_142 = new Expr (new Word ("TERM-EQ"));
     189  static  final Expr _c_143 = Expr.fromSequence (".termEq (");
     190  static  final Expr _c_144 = new Expr (new Word ("NOT"));
     191  static  final Expr _c_145 = Expr.fromSequence (".next ()");
     192  static  final Expr _c_146 = Expr.fromSequence (".prev ()");
     193  static  final Expr _c_148 = Expr.fromSequence ("Expr.fromSequence (\"");
     194  static  final Expr _c_149 = Expr.fromSequence (" (arg, res);");
     195  static  final Expr _c_150 = new Expr (_c_174, 0, 7);
     196  static  final Expr _c_152 = Expr.fromSequence ("})");
     197  static  final Expr _c_153 = Expr.fromSequence ("new Expr (new Func () {");
     198  static  final Expr _c_154 = Expr.fromSequence ("java.math.BigInteger");
     199  static  final Expr _c_155 = new Expr (_c_94, 0, 3);
     200  static  final Expr _c_156 = new Expr (_c_95, 6, 3);
     201  static  final Expr _c_157 = new Expr (_c_153, 0, 14);
     202  static  final Expr _c_158 = Expr.fromSequence ("new Expr (new Word (\"");
     203  static  final Expr _c_159 = new Expr (_c_20, 0, 1);
     204  static  final Expr _c_160 = Expr.fromSequence ("\\\\");
     205  static  final Expr _c_161 = Expr.fromSequence ("\n");
     206  static  final Expr _c_162 = Expr.fromSequence ("\\n");
     207  static  final Expr _c_163 = Expr.fromSequence ("\t");
     208  static  final Expr _c_164 = Expr.fromSequence ("\\t");
     209  static  final Expr _c_165 = Expr.fromSequence ("\r");
     210  static  final Expr _c_166 = Expr.fromSequence ("\\r");
     211  static  final Expr _c_167 = new Expr (_c_102, 0, 11);
     212  static  final Expr _c_168 = new Expr (new Word ("EXPORT"));
     213  static  final Expr _c_169 = new Expr (_c_151, 0, 6);
     214  static  final Expr _c_170 = new Expr (new java.math.BigInteger ("1"));
    201215  static private final Expr[] _va_3 = { new Expr (new Word ("Apply")), new Expr (new Word ("Apply")), new Expr (new Word ("Unexpected fail")) };
    202   static  final Expr _c_168 = Expr.concat (_va_3);
     216  static  final Expr _c_171 = Expr.concat (_va_3);
    203217
     218  @RefalFormat("$func RFP_ASAIL_To_Java t = (e) (e);")
    204219  static public void RFP_ASAIL_To_Java (Expr _gt_arg1, Result _v_res1, Result _v_res2) throws RefalException
    205220  {
     
    388403  }
    389404
     405  @RefalFormat("$func ReplaceQuotes s = s;")
     406  static  void ReplaceQuotes (Expr _vs_expr, Result _v_res1) throws RefalException
     407  {
     408    Result _ge_auxcall1 = new Result ();
     409    refal.plus.Convert.ToChars (_vs_expr, _ge_auxcall1);
     410    Expr _ve_items = Expr.empty;
     411    _ve_items = Expr.empty;
     412    Expr _ge_expr__0 = Expr.empty;
     413    _ge_expr__0 = _ge_auxcall1.getExpr ();
     414    _exit__iter1: for ( ; ; )
     415    {
     416      _iter1: {
     417        if (_ge_expr__0.getLen () != 0)
     418        {
     419          break _iter1;
     420        }
     421        Expr _ge_items__0 = Expr.empty;
     422        _ge_items__0 = Expr.empty;
     423        Expr _ge_expr__0__0 = Expr.empty;
     424        _ge_expr__0__0 = _ve_items;
     425        _exit__iter2: for ( ; ; )
     426        {
     427          _iter2: {
     428            if (_ge_expr__0__0.getLen () != 0)
     429            {
     430              break _iter2;
     431            }
     432            refal.plus.Convert.ToWord (_ge_items__0, _v_res1);
     433            break _exit__iter2;
     434          }
     435          _block1: {
     436            _block1__branch1: {
     437              if (_ge_expr__0__0.getLen () < 1)
     438              {
     439                break _block1__branch1;
     440              }
     441              Expr.SplitIterator _va_11 = _ge_expr__0__0.leftSplit(0);
     442              _exit1: _continue1: for ( ; ; _va_11.next ())
     443              {
     444                Expr _ve_head = _va_11.getLeft();
     445                Expr _v_lsplit__expr__0__0 = _va_11.getRight();
     446                if (!_va_11.isValid ())
     447                {
     448                  break _block1__branch1;
     449                }
     450                int _v_len1;
     451                _v_len1 = _v_lsplit__expr__0__0.getLen ();
     452                int _v_len2;
     453                _v_len2 = 1;
     454                if (_v_len1 < _v_len2)
     455                {
     456                  break _block1__branch1;
     457                }
     458                int _v_len__tail;
     459                _v_len__tail = (_v_len1 - _v_len2);
     460                if (!_c_19.termEq (_v_lsplit__expr__0__0, 0))
     461                {
     462                  continue _continue1;
     463                }
     464                Expr _ve_tail = Expr.empty;
     465                _ve_tail = new Expr (_v_lsplit__expr__0__0, (0 + 1), _v_len__tail);
     466                Expr[] _va_12 = { _ge_items__0 , _ve_head , _c_20 };
     467                _ge_items__0 = Expr.concat (_va_12);
     468                _ge_expr__0__0 = _ve_tail;
     469                break _exit1;
     470              }
     471              break _block1;
     472            }
     473            _ge_items__0 = new Expr (_ge_items__0, _ge_expr__0__0);
     474            _ge_expr__0__0 = Expr.empty;
     475          }
     476        }
     477        break _exit__iter1;
     478      }
     479      _block2: {
     480        _block2__branch1: {
     481          if (_ge_expr__0.getLen () < 1)
     482          {
     483            break _block2__branch1;
     484          }
     485          Expr.SplitIterator _va_13 = _ge_expr__0.leftSplit(0);
     486          _exit2: _continue2: for ( ; ; _va_13.next ())
     487          {
     488            Expr _ve_head = _va_13.getLeft();
     489            Expr _v_lsplit__expr__0 = _va_13.getRight();
     490            if (!_va_13.isValid ())
     491            {
     492              break _block2__branch1;
     493            }
     494            int _v_len3;
     495            _v_len3 = _v_lsplit__expr__0.getLen ();
     496            int _v_len4;
     497            _v_len4 = 1;
     498            if (_v_len3 < _v_len4)
     499            {
     500              break _block2__branch1;
     501            }
     502            int _v_len__tail2;
     503            _v_len__tail2 = (_v_len3 - _v_len4);
     504            if (!_c_21.termEq (_v_lsplit__expr__0, 0))
     505            {
     506              continue _continue2;
     507            }
     508            Expr _ve_tail = Expr.empty;
     509            _ve_tail = new Expr (_v_lsplit__expr__0, (0 + 1), _v_len__tail2);
     510            Expr[] _va_14 = { _ve_items , _ve_head , _c_22 };
     511            _ve_items = Expr.concat (_va_14);
     512            _ge_expr__0 = _ve_tail;
     513            break _exit2;
     514          }
     515          break _block2;
     516        }
     517        _ve_items = new Expr (_ve_items, _ge_expr__0);
     518        _ge_expr__0 = Expr.empty;
     519      }
     520    }
     521  }
     522
     523  @RefalFormat("$func ASAIL_To_Java e = e;")
    390524  static  void ASAIL_To_Java (Expr _ve_asail, Result _v_res1) throws RefalException
    391525  {
     
    423557              break _block2__branch1;
    424558            }
    425             int _v_len___dollar_tmp_m_100_m_20;
    426             _v_len___dollar_tmp_m_100_m_20 = (_v_len3 - _v_len4);
     559            int _v_len___dollar_tmp_m_113_m_20;
     560            _v_len___dollar_tmp_m_113_m_20 = (_v_len3 - _v_len4);
    427561            if (!_v_deref__item.symbolAt (0))
    428562            {
    429563              break _block2__branch1;
    430564            }
    431             if (!_c_19.termEq (_v_deref__item, (0 + 1)))
     565            if (!_c_23.termEq (_v_deref__item, (0 + 1)))
    432566            {
    433567              break _block2__branch1;
     
    435569            Expr _vs_tag = Expr.empty;
    436570            _vs_tag = new Expr (_v_deref__item, 0, 1);
    437             Expr _ve__dollar_tmp_m_100_m_20 = Expr.empty;
    438             _ve__dollar_tmp_m_100_m_20 = new Expr (_v_deref__item, (0 + 1 + 1), _v_len___dollar_tmp_m_100_m_20);
     571            Expr _ve__dollar_tmp_m_113_m_20 = Expr.empty;
     572            _ve__dollar_tmp_m_113_m_20 = new Expr (_v_deref__item, (0 + 1 + 1), _v_len___dollar_tmp_m_113_m_20);
    439573            _ve_java__item = Expr.empty;
    440574            break _block2;
     
    513647            _block3: {
    514648              _block3__branch1: {
    515                 if (!_vs_tag.termEq (_c_20, 0))
     649                if (!_vs_tag.termEq (_c_24, 0))
    516650                {
    517651                  break _block3__branch1;
    518652                }
    519                 _ve_return__type = _c_21;
     653                _ve_return__type = _c_25;
    520654                _ve_return = Expr.empty;
    521655                break _block3;
    522656              }
    523               if (!_vs_tag.termEq (_c_22, 0))
     657              if (!_vs_tag.termEq (_c_26, 0))
    524658              {
    525659                break _block2__branch2;
    526660              }
    527               _ve_return__type = _c_23;
    528               _ve_return = _c_24;
     661              _ve_return__type = _c_27;
     662              _ve_return = _c_28;
    529663            }
    530664            refal.plus.Box.Store (Ress, _ve_ress);
     
    538672                  break _block4__branch1;
    539673                }
    540                 Expr.SplitIterator _va_11 = _v_Get1.getExpr ().leftSplit(0);
    541                 _exit1: _continue1: for ( ; ; _va_11.next ())
     674                Expr.SplitIterator _va_15 = _v_Get1.getExpr ().leftSplit(0);
     675                _exit1: _continue1: for ( ; ; _va_15.next ())
    542676                {
    543                   Expr _ve__dollar_tmp_m_108_m_25 = _va_11.getLeft();
    544                   Expr _v_lsplit__Get1 = _va_11.getRight();
    545                   if (!_va_11.isValid ())
     677                  Expr _ve__dollar_tmp_m_121_m_25 = _va_15.getLeft();
     678                  Expr _v_lsplit__Get1 = _va_15.getRight();
     679                  if (!_va_15.isValid ())
    546680                  {
    547681                    break _block4__branch1;
     
    555689                    break _block4__branch1;
    556690                  }
    557                   int _v_len___dollar_tmp_m_108_m_34;
    558                   _v_len___dollar_tmp_m_108_m_34 = (_v_len11 - _v_len12);
     691                  int _v_len___dollar_tmp_m_121_m_34;
     692                  _v_len___dollar_tmp_m_121_m_34 = (_v_len11 - _v_len12);
    559693                  if (!_vt_name.termEq (_v_lsplit__Get1, 0))
    560694                  {
    561695                    continue _continue1;
    562696                  }
    563                   Expr _ve__dollar_tmp_m_108_m_34 = Expr.empty;
    564                   _ve__dollar_tmp_m_108_m_34 = new Expr (_v_lsplit__Get1, (0 + 1), _v_len___dollar_tmp_m_108_m_34);
     697                  Expr _ve__dollar_tmp_m_121_m_34 = Expr.empty;
     698                  _ve__dollar_tmp_m_121_m_34 = new Expr (_v_lsplit__Get1, (0 + 1), _v_len___dollar_tmp_m_121_m_34);
    565699                  refal.plus.Box.Store (Entry_Name, _vt_name);
    566700                  break _exit1;
     
    572706            Name_To_Java (_vt_name, _ge_auxcall1);
    573707            refal.plus.Box.Store (Func_Name, _ge_auxcall1.getExpr ());
    574             Result _ge_auxcall2 = new Result ();
    575             Access_Mode (_vs_linkage, _ge_auxcall2);
    576             Result _ge_auxcall3 = new Result ();
    577             refal.plus.Box.Get (Func_Name, _ge_auxcall3);
     708            Expr _ve_refalFormat = Expr.empty;
     709            _block5: {
     710              _block5__branch1: {
     711                Result _gs_auxcall2 = new Result ();
     712                if (!rfp_helper.PrintFunctionFormat (_vt_name, _gs_auxcall2))
     713                {
     714                  break _block5__branch1;
     715                }
     716                Result _gs_auxcall3 = new Result ();
     717                ReplaceQuotes (_gs_auxcall2.getExpr (), _gs_auxcall3);
     718                Expr[] _va_16 = { _c_30 , _gs_auxcall3.getExpr () , _c_29 };
     719                _ve_refalFormat = new Expr(Expr.concat (_va_16));
     720                break _block5;
     721              }
     722              _ve_refalFormat = Expr.empty;
     723            }
    578724            Result _ge_auxcall4 = new Result ();
    579             Expr[] _va_12 = { _c_26 , _ve_args , _c_25 , _ve_ress };
    580             Var_Args_To_Java (Expr.concat (_va_12), _ge_auxcall4);
     725            Access_Mode (_vs_linkage, _ge_auxcall4);
    581726            Result _ge_auxcall5 = new Result ();
    582             ASAIL_To_Java (_ve_body, _ge_auxcall5);
    583             Expr[] _va_14 = { _c_30 , _ge_auxcall2.getExpr () , _c_29 , _ve_return__type , _c_29 , _ge_auxcall3.getExpr () , _c_28 , _ge_auxcall4.getExpr () , _c_27 };
    584             Expr[] _va_15 = { _c_31 , new Expr(new Expr (_ge_auxcall5.getExpr (), _ve_return)) , _c_11 };
    585             Expr[] _va_13 = { _c_15 , new Expr(Expr.concat (_va_14)) , new Expr(Expr.concat (_va_15)) };
    586             _ve_java__item = Expr.concat (_va_13);
     727            refal.plus.Box.Get (Func_Name, _ge_auxcall5);
     728            Result _ge_auxcall6 = new Result ();
     729            Expr[] _va_17 = { _c_32 , _ve_args , _c_31 , _ve_ress };
     730            Var_Args_To_Java (Expr.concat (_va_17), _ge_auxcall6);
     731            Result _ge_auxcall7 = new Result ();
     732            ASAIL_To_Java (_ve_body, _ge_auxcall7);
     733            Expr[] _va_19 = { _c_36 , _ge_auxcall4.getExpr () , _c_35 , _ve_return__type , _c_35 , _ge_auxcall5.getExpr () , _c_34 , _ge_auxcall6.getExpr () , _c_33 };
     734            Expr[] _va_20 = { _c_37 , new Expr(new Expr (_ge_auxcall7.getExpr (), _ve_return)) , _c_11 };
     735            Expr[] _va_18 = { _c_15 , _ve_refalFormat , new Expr(Expr.concat (_va_19)) , new Expr(Expr.concat (_va_20)) };
     736            _ve_java__item = Expr.concat (_va_18);
    587737            break _block2;
    588738          }
     
    598748              break _block2__branch3;
    599749            }
    600             if (!_c_32.termEq (_v_deref__item3, 0))
     750            if (!_c_38.termEq (_v_deref__item3, 0))
    601751            {
    602752              break _block2__branch3;
     
    657807            int _v_len__arg1;
    658808            _v_len__arg1 = (_v_len17 - _v_len18);
    659             if (!_c_33.termEq (_v_deref__item4, 0))
     809            if (!_c_39.termEq (_v_deref__item4, 0))
    660810            {
    661811              break _block2__branch4;
     
    675825            Result _vs_acc = new Result ();
    676826            refal.plus.Box.Box (Expr.empty, _vs_acc);
    677             Result _ge_auxcall6 = new Result ();
    678             Expr_Int_To_Java (_vs_acc.getExpr (), _ve_arg1, _ge_auxcall6);
     827            Result _ge_auxcall8 = new Result ();
     828            Expr_Int_To_Java (_vs_acc.getExpr (), _ve_arg1, _ge_auxcall8);
    679829            Result _v_Expr__Int__To__Java1 = new Result ();
    680830            Expr_Int_To_Java (_vs_acc.getExpr (), _ve_arg2, _v_Expr__Int__To__Java1);
    681831            Expr _ve_cond = Expr.empty;
    682             Expr[] _va_16 = { _ge_auxcall6.getExpr () , _c_29 , _vs_op , _c_29 , _v_Expr__Int__To__Java1.getExpr () };
    683             _ve_cond = Expr.concat (_va_16);
    684             Result _ge_auxcall7 = new Result ();
    685             refal.plus.Box.Get (_vs_acc.getExpr (), _ge_auxcall7);
    686             Result _ge_auxcall8 = new Result ();
    687             ASAIL_To_Java (_ve_body, _ge_auxcall8);
    688             Expr[] _va_18 = { _c_35 , _ve_cond , _c_34 };
    689             Expr[] _va_19 = { _c_31 , new Expr(_ge_auxcall8.getExpr ()) , _c_11 };
    690             Expr[] _va_17 = { _ge_auxcall7.getExpr () , new Expr(Expr.concat (_va_18)) , new Expr(Expr.concat (_va_19)) };
    691             _ve_java__item = Expr.concat (_va_17);
     832            Expr[] _va_21 = { _ge_auxcall8.getExpr () , _c_35 , _vs_op , _c_35 , _v_Expr__Int__To__Java1.getExpr () };
     833            _ve_cond = Expr.concat (_va_21);
     834            Result _ge_auxcall9 = new Result ();
     835            refal.plus.Box.Get (_vs_acc.getExpr (), _ge_auxcall9);
     836            Result _ge_auxcall10 = new Result ();
     837            ASAIL_To_Java (_ve_body, _ge_auxcall10);
     838            Expr[] _va_23 = { _c_41 , _ve_cond , _c_40 };
     839            Expr[] _va_24 = { _c_37 , new Expr(_ge_auxcall10.getExpr ()) , _c_11 };
     840            Expr[] _va_22 = { _ge_auxcall9.getExpr () , new Expr(Expr.concat (_va_23)) , new Expr(Expr.concat (_va_24)) };
     841            _ve_java__item = Expr.concat (_va_22);
    692842            break _block2;
    693843          }
     
    709859            int _v_len__body3;
    710860            _v_len__body3 = (_v_len19 - _v_len20);
    711             if (!_c_36.termEq (_v_deref__item5, 0))
     861            if (!_c_42.termEq (_v_deref__item5, 0))
    712862            {
    713863              break _block2__branch5;
     
    723873            Expr _ve_if__yes__assigns = Expr.empty;
    724874            Expr _ve_if__not__assigns = Expr.empty;
    725             _block5: {
    726               _block5__branch1: {
     875            _block6: {
     876              _block6__branch1: {
    727877                if (_vt_cond.symbolAt (0))
    728878                {
    729                   break _block5__branch1;
     879                  break _block6__branch1;
    730880                }
    731881                Expr _v_deref__cond = Expr.empty;
     
    737887                if (_v_len21 < _v_len22)
    738888                {
    739                   break _block5__branch1;
     889                  break _block6__branch1;
    740890                }
    741                 int _v_len___dollar_tmp_m_126_m_33;
    742                 _v_len___dollar_tmp_m_126_m_33 = (_v_len21 - _v_len22);
    743                 if (!_c_37.termEq (_v_deref__cond, 0))
     891                int _v_len___dollar_tmp_m_141_m_33;
     892                _v_len___dollar_tmp_m_141_m_33 = (_v_len21 - _v_len22);
     893                if (!_c_43.termEq (_v_deref__cond, 0))
    744894                {
    745                   break _block5__branch1;
     895                  break _block6__branch1;
    746896                }
    747                 Expr _ve__dollar_tmp_m_126_m_33 = Expr.empty;
    748                 _ve__dollar_tmp_m_126_m_33 = new Expr (_v_deref__cond, (0 + 1), _v_len___dollar_tmp_m_126_m_33);
    749                 Result _ge_auxcall9 = new Result ();
    750                 refal.plus.Box.Get (Res_Assigns, _ge_auxcall9);
     897                Expr _ve__dollar_tmp_m_141_m_33 = Expr.empty;
     898                _ve__dollar_tmp_m_141_m_33 = new Expr (_v_deref__cond, (0 + 1), _v_len___dollar_tmp_m_141_m_33);
     899                Result _ge_auxcall11 = new Result ();
     900                refal.plus.Box.Get (Res_Assigns, _ge_auxcall11);
    751901                refal.plus.Box.Store (Res_Assigns, Expr.empty);
    752902                _ve_if__yes__assigns = Expr.empty;
    753                 _ve_if__not__assigns = _ge_auxcall9.getExpr ();
    754                 break _block5;
     903                _ve_if__not__assigns = _ge_auxcall11.getExpr ();
     904                break _block6;
    755905              }
    756               Result _ge_auxcall10 = new Result ();
    757               refal.plus.Box.Get (Res_Assigns, _ge_auxcall10);
     906              Result _ge_auxcall12 = new Result ();
     907              refal.plus.Box.Get (Res_Assigns, _ge_auxcall12);
    758908              refal.plus.Box.Store (Res_Assigns, Expr.empty);
    759               _ve_if__yes__assigns = _ge_auxcall10.getExpr ();
     909              _ve_if__yes__assigns = _ge_auxcall12.getExpr ();
    760910              _ve_if__not__assigns = Expr.empty;
    761911            }
    762             Result _ge_auxcall11 = new Result ();
    763             refal.plus.Box.Get (_vs_acc.getExpr (), _ge_auxcall11);
    764             Result _ge_auxcall12 = new Result ();
    765             ASAIL_To_Java (_ve_body, _ge_auxcall12);
    766             Expr[] _va_21 = { _c_35 , _ve_j__cond.getExpr () , _c_34 };
    767             Expr[] _va_22 = { _c_31 , new Expr(new Expr (_ve_if__yes__assigns, _ge_auxcall12.getExpr ())) , _c_11 };
    768             Expr[] _va_20 = { _ge_auxcall11.getExpr () , new Expr(Expr.concat (_va_21)) , new Expr(Expr.concat (_va_22)) , _ve_if__not__assigns };
    769             _ve_java__item = Expr.concat (_va_20);
     912            Result _ge_auxcall13 = new Result ();
     913            refal.plus.Box.Get (_vs_acc.getExpr (), _ge_auxcall13);
     914            Result _ge_auxcall14 = new Result ();
     915            ASAIL_To_Java (_ve_body, _ge_auxcall14);
     916            Expr[] _va_26 = { _c_41 , _ve_j__cond.getExpr () , _c_40 };
     917            Expr[] _va_27 = { _c_37 , new Expr(new Expr (_ve_if__yes__assigns, _ge_auxcall14.getExpr ())) , _c_11 };
     918            Expr[] _va_25 = { _ge_auxcall13.getExpr () , new Expr(Expr.concat (_va_26)) , new Expr(Expr.concat (_va_27)) , _ve_if__not__assigns };
     919            _ve_java__item = Expr.concat (_va_25);
    770920            break _block2;
    771921          }
     
    835985            int _v_len__break__label;
    836986            _v_len__break__label = (_v_len29 - _v_len30);
    837             if (!_c_38.termEq (_v_deref__item6, 0))
     987            if (!_c_44.termEq (_v_deref__item6, 0))
    838988            {
    839989              break _block2__branch6;
     
    8521002            _ve_step = new Expr (_v_deref__deref__item63, 0, _v_len__step);
    8531003            Expr _ve_cont = Expr.empty;
    854             _block6: {
    855               _block6__branch1: {
    856                 if (_v_len__cont__label != 1)
    857                 {
    858                   break _block6__branch1;
    859                 }
    860                 Expr _vt__dollar_tmp_m_139_m_25 = Expr.empty;
    861                 _vt__dollar_tmp_m_139_m_25 = new Expr (_ve_cont__label, 0, 1);
    862                 Result _ge_auxcall13 = new Result ();
    863                 refal.plus.JavaMangle.Rfp2Java (new Expr(new Expr (_c_39, _ve_cont__label)), _ge_auxcall13);
    864                 _ve_cont = new Expr (_ge_auxcall13.getExpr (), _c_40);
    865                 break _block6;
    866               }
    867               _ve_cont = Expr.empty;
    868             }
    869             Expr _ve_break = Expr.empty;
    870