source: to-imperative/trunk/bootstrap/compiler/rfp_asail2asail.cc @ 2012

Last change on this file since 2012 was 2012, checked in by orlov, 15 years ago
  • Fresh-generated compiler sources.
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 45.5 KB
Line 
1#include <rf_core.hh>
2#include <refal/Arithm.hh>
3#include <refal/List.hh>
4#include <refal/Box.hh>
5#include <refal/Table.hh>
6#include "rfp_helper.hh"
7#include <refal/StdIO.hh>
8
9namespace refal
10{
11
12using namespace rfrt;
13
14namespace rfp__asail2asail
15{
16
17RF_DECL (Simplify_m_ASAIL);
18
19RF_DECL (Simplify);
20
21static Expr Blocks;
22
23static Expr Breaks;
24
25static Expr Last_m_Breaks;
26
27RF_DECL (GetR);
28
29RF_DECL (Remove_m_Unreachable);
30
31RF_DECL (Simplify_m_Infix);
32
33RF_DECL (Simplify_m_Arithm);
34
35RF_DECL (Eval_sp__a_);
36
37RF_DECL (Eval_sp__p_);
38
39RF_DECL (Eval_sp__s_);
40
41RF_DECL (Eval_sp__percnt_);
42
43RF_DECL (Eval_sp__m_);
44
45RF_DECL (Simplify_m_Infix__0);
46
47static Expr _c_0;
48
49static Expr _c_1;
50
51static Expr _c_2;
52
53static Expr _c_3;
54
55static Expr _c_4;
56
57static Expr _c_5;
58
59static Expr _c_6;
60
61static Expr _c_7;
62
63static Expr _c_8;
64
65static Expr _c_9;
66
67static Expr _c_10;
68
69static Expr _c_11;
70
71static Expr _c_12;
72
73static Expr _c_13;
74
75static Expr _c_14;
76
77static Expr _c_15;
78
79static Expr _c_16;
80
81static Expr _c_17;
82
83static Expr _c_18;
84
85static Expr _c_19;
86
87static Expr _c_32;
88
89static Expr _c_20;
90
91static Expr _c_21;
92
93static Expr _c_22;
94
95static Expr _c_23;
96
97static Expr _c_24;
98
99static Expr _c_25;
100
101static Expr _c_26;
102
103static Expr _c_27;
104
105static Expr _c_28;
106
107static Expr _c_29;
108
109static Expr _c_30;
110
111static Expr _c_31;
112
113static Expr _c_33;
114
115RF_FUNC (Simplify_m_ASAIL, (RF_ARG _ve_asail;;), (RF_RES _v_res1;;))
116  Expr _v_Simplify1;
117  RF_CALL (Simplify, _ve_asail, _v_Simplify1);
118  RF_TAILCALL (Remove_m_Unreachable, _v_Simplify1, _v_res1);
119RF_END
120
121RF_FUNC (Simplify, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
122  {
123    {
124      uintptr_t _v_len1 = _v_arg1.get_len ();
125      uintptr_t _v_len2 = 1;
126      if ((_v_len1 < _v_len2))
127      {
128        goto _block1__branch1;
129      }
130      uintptr_t _v_len__rest = (_v_len1 - _v_len2);
131      Expr _vt_first (_v_arg1, 0, 1);
132      Expr _ve_rest (_v_arg1, 1, _v_len__rest);
133      Expr _ve_first;
134      {
135        {
136          if (_vt_first.symbol_at (0))
137          {
138            goto _block2__branch1;
139          }
140          Expr _v_deref__first (_vt_first, 0);
141          uintptr_t _v_len3 = _v_deref__first.get_len ();
142          uintptr_t _v_len4 = 2;
143          if ((_v_len3 < _v_len4))
144          {
145            goto _block2__branch1;
146          }
147          uintptr_t _v_len__body = (_v_len3 - _v_len4);
148          if (_v_deref__first.symbol_at (1))
149          {
150            goto _block2__branch1;
151          }
152          Expr _v_deref__deref__first (_v_deref__first, 1);
153          uintptr_t _v_len5 = _v_deref__deref__first.get_len ();
154          uintptr_t _v_len6 = 0;
155          if ((_v_len5 < _v_len6))
156          {
157            goto _block2__branch1;
158          }
159          uintptr_t _v_len__cond = (_v_len5 - _v_len6);
160          if (!_c_0.term_eq (_v_deref__first, 0))
161          {
162            goto _block2__branch1;
163          }
164          Expr _ve_body (_v_deref__first, 2, _v_len__body);
165          Expr _ve_cond (_v_deref__deref__first, 0, _v_len__cond);
166          Expr _v_Map1;
167          RF_CALL (List::Map, (_c_1, empty, _ve_cond), _v_Map1);
168          {
169            {
170              if ((_v_Map1.get_len () != 1))
171              {
172                goto _block3__branch1;
173              }
174              if (!_c_2.term_eq (_v_Map1, 0))
175              {
176                goto _block3__branch1;
177              }
178              _ve_first = empty;
179              goto _block3;
180            }
181          _block3__branch1: {}
182            {
183              if ((_v_Map1.get_len () != 1))
184              {
185                goto _block3__branch2;
186              }
187              if (!_c_3.term_eq (_v_Map1, 0))
188              {
189                goto _block3__branch2;
190              }
191              RF_CALL (Simplify, _ve_body, _ve_first);
192              goto _block3;
193            }
194          _block3__branch2: {}
195            uintptr_t _v_len7 = _v_Map1.get_len ();
196            uintptr_t _v_len8 = 0;
197            if ((_v_len7 < _v_len8))
198            {
199              RF_FUNC_ERROR (unexpected_fail);
200            }
201            uintptr_t _v_len__c = (_v_len7 - _v_len8);
202            Expr _ve_c (_v_Map1, 0, _v_len__c);
203            Expr _v_Simplify1;
204            RF_CALL (Simplify, _ve_body, _v_Simplify1);
205            _ve_first = (_c_0 + _ve_c () + _v_Simplify1) ();
206          }
207        _block3: {}
208          goto _block2;
209        }
210      _block2__branch1: {}
211        {
212          if (_vt_first.symbol_at (0))
213          {
214            goto _block2__branch2;
215          }
216          Expr _v_deref__first2 (_vt_first, 0);
217          uintptr_t _v_len9 = _v_deref__first2.get_len ();
218          uintptr_t _v_len10 = 2;
219          if ((_v_len9 < _v_len10))
220          {
221            goto _block2__branch2;
222          }
223          uintptr_t _v_len__expr = (_v_len9 - _v_len10);
224          if (!_c_4.term_eq (_v_deref__first2, 0))
225          {
226            goto _block2__branch2;
227          }
228          Expr _vt_var (_v_deref__first2, 1, 1);
229          Expr _ve_expr (_v_deref__first2, 2, _v_len__expr);
230          Expr _v_Simplify_m_Arithm1;
231          RF_CALL (Simplify_m_Arithm, _ve_expr (), _v_Simplify_m_Arithm1);
232          _ve_first = (_c_4 + _vt_var + _v_Simplify_m_Arithm1) ();
233          goto _block2;
234        }
235      _block2__branch2: {}
236        {
237          if (_vt_first.symbol_at (0))
238          {
239            goto _block2__branch3;
240          }
241          Expr _v_deref__first3 (_vt_first, 0);
242          uintptr_t _v_len11 = _v_deref__first3.get_len ();
243          uintptr_t _v_len12 = 0;
244          if ((_v_len11 < _v_len12))
245          {
246            goto _block2__branch3;
247          }
248          uintptr_t _v_len__1 = (_v_len11 - _v_len12);
249          Expr _ve_1 (_v_deref__first3, 0, _v_len__1);
250          Expr _v_Simplify2;
251          RF_CALL (Simplify, _ve_1, _v_Simplify2);
252          _ve_first = _v_Simplify2 ();
253          goto _block2;
254        }
255      _block2__branch3: {}
256        if (!_vt_first.symbol_at (0))
257        {
258          RF_FUNC_ERROR (unexpected_fail);
259        }
260        Expr _vs_1 (_vt_first, 0, 1);
261        _ve_first = _vs_1;
262      }
263    _block2: {}
264      Expr _v_Simplify3;
265      RF_CALL (Simplify, _ve_rest, _v_Simplify3);
266      _v_res1 = (_ve_first + _v_Simplify3);
267      goto _block1;
268    }
269  _block1__branch1: {}
270    if ((_v_arg1.get_len () != 0))
271    {
272      RF_FUNC_ERROR (unexpected_fail);
273    }
274    _v_res1 = empty;
275  }
276_block1: {}
277RF_END
278
279RF_FUNC (GetR, (RF_ARG _vs_box;;), (RF_RES _v_res1;;))
280  Expr _v__q_1;
281  RF_CALL (Box::_q_, _vs_box, _v__q_1);
282  uintptr_t _v_len1 = _v__q_1.get_len ();
283  uintptr_t _v_len2 = 1;
284  if ((_v_len1 < _v_len2))
285  {
286    RF_FUNC_ERROR (unexpected_fail);
287  }
288  uintptr_t _v_len__1 = (_v_len1 - _v_len2);
289  Expr _ve_1 (_v__q_1, 0, _v_len__1);
290  Expr _vt_2 (_v__q_1, _v_len__1, 1);
291  RF_CALL (Box::Store, (_vs_box, _ve_1), /*void*/);
292  _v_res1 = _vt_2;
293RF_END
294
295RF_FUNC (Remove_m_Unreachable, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
296  {
297    {
298      uintptr_t _v_len1 = _v_arg1.get_len ();
299      uintptr_t _v_len2 = 1;
300      if ((_v_len1 < _v_len2))
301      {
302        goto _block1__branch1;
303      }
304      uintptr_t _v_len__2 = (_v_len1 - _v_len2);
305      Expr _vt_1 (_v_arg1, 0, 1);
306      Expr _ve_2 (_v_arg1, 1, _v_len__2);
307      Expr _ve_body;
308      {
309        {
310          if (_vt_1.symbol_at (0))
311          {
312            goto _block2__branch1;
313          }
314          Expr _v_deref__1 (_vt_1, 0);
315          uintptr_t _v_len3 = _v_deref__1.get_len ();
316          uintptr_t _v_len4 = 4;
317          if ((_v_len3 < _v_len4))
318          {
319            goto _block2__branch1;
320          }
321          uintptr_t _v_len__body__1 = (_v_len3 - _v_len4);
322          if (!_c_5.term_eq (_v_deref__1, 0))
323          {
324            goto _block2__branch1;
325          }
326          Expr _vt_name (_v_deref__1, 1, 1);
327          Expr _vt_in (_v_deref__1, 2, 1);
328          Expr _vt_out (_v_deref__1, 3, 1);
329          Expr _v_body__1 (_v_deref__1, 4, _v_len__body__1);
330          RF_CALL (Box::Put, (Blocks, (_c_5 + _vt_name + _vt_in + _vt_out) ()), /*void*/);
331          RF_CALL (rfp__helper::RFP_m_Clear_m_Table, Breaks, /*void*/);
332          _ve_body = _v_body__1;
333          goto _block2;
334        }
335      _block2__branch1: {}
336        {
337          if (_vt_1.symbol_at (0))
338          {
339            goto _block2__branch2;
340          }
341          Expr _v_deref__12 (_vt_1, 0);
342          uintptr_t _v_len5 = _v_deref__12.get_len ();
343          uintptr_t _v_len6 = 4;
344          if ((_v_len5 < _v_len6))
345          {
346            goto _block2__branch2;
347          }
348          uintptr_t _v_len__body__12 = (_v_len5 - _v_len6);
349          if (!_c_6.term_eq (_v_deref__12, 0))
350          {
351            goto _block2__branch2;
352          }
353          Expr _vt_name (_v_deref__12, 1, 1);
354          Expr _vt_in (_v_deref__12, 2, 1);
355          Expr _vt_out (_v_deref__12, 3, 1);
356          Expr _v_body__1 (_v_deref__12, 4, _v_len__body__12);
357          RF_CALL (Box::Put, (Blocks, (_c_6 + _vt_name + _vt_in + _vt_out) ()), /*void*/);
358          RF_CALL (rfp__helper::RFP_m_Clear_m_Table, Breaks, /*void*/);
359          _ve_body = _v_body__1;
360          goto _block2;
361        }
362      _block2__branch2: {}
363        {
364          if (_vt_1.symbol_at (0))
365          {
366            goto _block2__branch3;
367          }
368          Expr _v_deref__13 (_vt_1, 0);
369          uintptr_t _v_len7 = _v_deref__13.get_len ();
370          uintptr_t _v_len8 = 5;
371          if ((_v_len7 < _v_len8))
372          {
373            goto _block2__branch3;
374          }
375          uintptr_t _v_len__body__13 = (_v_len7 - _v_len8);
376          if (_v_deref__13.symbol_at (1))
377          {
378            goto _block2__branch3;
379          }
380          if (_v_deref__13.symbol_at (2))
381          {
382            goto _block2__branch3;
383          }
384          if (_v_deref__13.symbol_at (3))
385          {
386            goto _block2__branch3;
387          }
388          if (_v_deref__13.symbol_at (4))
389          {
390            goto _block2__branch3;
391          }
392          Expr _v_deref__deref__13 (_v_deref__13, 1);
393          Expr _v_deref__deref__132 (_v_deref__13, 2);
394          Expr _v_deref__deref__133 (_v_deref__13, 3);
395          Expr _v_deref__deref__134 (_v_deref__13, 4);
396          uintptr_t _v_len9 = _v_deref__deref__13.get_len ();
397          uintptr_t _v_len10 = 0;
398          if ((_v_len9 < _v_len10))
399          {
400            goto _block2__branch3;
401          }
402          uintptr_t _v_len__cont = (_v_len9 - _v_len10);
403          uintptr_t _v_len11 = _v_deref__deref__132.get_len ();
404          uintptr_t _v_len12 = 0;
405          if ((_v_len11 < _v_len12))
406          {
407            goto _block2__branch3;
408          }
409          uintptr_t _v_len__break = (_v_len11 - _v_len12);
410          uintptr_t _v_len13 = _v_deref__deref__134.get_len ();
411          uintptr_t _v_len14 = 0;
412          if ((_v_len13 < _v_len14))
413          {
414            goto _block2__branch3;
415          }
416          uintptr_t _v_len__step = (_v_len13 - _v_len14);
417          uintptr_t _v_len15 = _v_deref__deref__133.get_len ();
418          uintptr_t _v_len16 = 0;
419          if ((_v_len15 < _v_len16))
420          {
421            goto _block2__branch3;
422          }
423          uintptr_t _v_len__cond = (_v_len15 - _v_len16);
424          if (!_c_7.term_eq (_v_deref__13, 0))
425          {
426            goto _block2__branch3;
427          }
428          Expr _v_body__1 (_v_deref__13, 5, _v_len__body__13);
429          Expr _ve_cont (_v_deref__deref__13, 0, _v_len__cont);
430          Expr _ve_break (_v_deref__deref__132, 0, _v_len__break);
431          Expr _ve_cond (_v_deref__deref__133, 0, _v_len__cond);
432          Expr _ve_step (_v_deref__deref__134, 0, _v_len__step);
433          RF_CALL (Box::Put, (Blocks, (_c_7 + _ve_cont () + _ve_break () + _ve_cond () + _ve_step ()) ()), /*void*/);
434          _ve_body = _v_body__1;
435          goto _block2;
436        }
437      _block2__branch3: {}
438        {
439          if (_vt_1.symbol_at (0))
440          {
441            goto _block2__branch4;
442          }
443          Expr _v_deref__14 (_vt_1, 0);
444          uintptr_t _v_len17 = _v_deref__14.get_len ();
445          uintptr_t _v_len18 = 2;
446          if ((_v_len17 < _v_len18))
447          {
448            goto _block2__branch4;
449          }
450          uintptr_t _v_len__body__14 = (_v_len17 - _v_len18);
451          if (_v_deref__14.symbol_at (1))
452          {
453            goto _block2__branch4;
454          }
455          Expr _v_deref__deref__14 (_v_deref__14, 1);
456          if ((_v_deref__deref__14.get_len () != 1))
457          {
458            goto _block2__branch4;
459          }
460          if (!_c_8.term_eq (_v_deref__14, 0))
461          {
462            goto _block2__branch4;
463          }
464          Expr _v_body__1 (_v_deref__14, 2, _v_len__body__14);
465          Expr _vt_label (_v_deref__deref__14, 0, 1);
466          RF_CALL (Box::Put, (Blocks, (_c_8 + _vt_label ()) ()), /*void*/);
467          _ve_body = _v_body__1;
468          goto _block2;
469        }
470      _block2__branch4: {}
471        {
472          if (_vt_1.symbol_at (0))
473          {
474            goto _block2__branch5;
475          }
476          Expr _v_deref__15 (_vt_1, 0);
477          uintptr_t _v_len19 = _v_deref__15.get_len ();
478          uintptr_t _v_len20 = 2;
479          if ((_v_len19 < _v_len20))
480          {
481            goto _block2__branch5;
482          }
483          uintptr_t _v_len__body__15 = (_v_len19 - _v_len20);
484          if (_v_deref__15.symbol_at (1))
485          {
486            goto _block2__branch5;
487          }
488          Expr _v_deref__deref__15 (_v_deref__15, 1);
489          uintptr_t _v_len21 = _v_deref__deref__15.get_len ();
490          uintptr_t _v_len22 = 0;
491          if ((_v_len21 < _v_len22))
492          {
493            goto _block2__branch5;
494          }
495          uintptr_t _v_len__cond2 = (_v_len21 - _v_len22);
496          if (!_c_0.term_eq (_v_deref__15, 0))
497          {
498            goto _block2__branch5;
499          }
500          Expr _v_body__1 (_v_deref__15, 2, _v_len__body__15);
501          Expr _ve_cond (_v_deref__deref__15, 0, _v_len__cond2);
502          RF_CALL (Box::Put, (Blocks, (_c_0 + _ve_cond ()) ()), /*void*/);
503          _ve_body = _v_body__1;
504          goto _block2;
505        }
506      _block2__branch5: {}
507        {
508          if (_vt_1.symbol_at (0))
509          {
510            goto _block2__branch6;
511          }
512          Expr _v_deref__16 (_vt_1, 0);
513          uintptr_t _v_len23 = _v_deref__16.get_len ();
514          uintptr_t _v_len24 = 1;
515          if ((_v_len23 < _v_len24))
516          {
517            goto _block2__branch6;
518          }
519          uintptr_t _v_len__body__16 = (_v_len23 - _v_len24);
520          if (!_c_9.term_eq (_v_deref__16, 0))
521          {
522            goto _block2__branch6;
523          }
524          Expr _v_body__1 (_v_deref__16, 1, _v_len__body__16);
525          RF_CALL (Box::Put, (Blocks, _c_10), /*void*/);
526          _ve_body = _v_body__1;
527          goto _block2;
528        }
529      _block2__branch6: {}
530        if (_vt_1.symbol_at (0))
531        {
532          goto _block1__branch1;
533        }
534        Expr _v_deref__17 (_vt_1, 0);
535        uintptr_t _v_len25 = _v_deref__17.get_len ();
536        uintptr_t _v_len26 = 1;
537        if ((_v_len25 < _v_len26))
538        {
539          goto _block1__branch1;
540        }
541        uintptr_t _v_len__body__17 = (_v_len25 - _v_len26);
542        if (!_c_11.term_eq (_v_deref__17, 0))
543        {
544          goto _block1__branch1;
545        }
546        Expr _v_body__1 (_v_deref__17, 1, _v_len__body__17);
547        RF_CALL (Box::Put, (Blocks, _c_12), /*void*/);
548        _ve_body = _v_body__1;
549      }
550    _block2: {}
551      RF_CALL (Box::Put, (Last_m_Breaks, _c_13), /*void*/);
552      RF_CALL (Remove_m_Unreachable, _ve_body, _ve_body);
553      Expr _v_GetR1;
554      RF_CALL (GetR, Blocks, _v_GetR1);
555      Expr _ve_t1;
556      {
557        {
558          if (_v_GetR1.symbol_at (0))
559          {
560            goto _block3__branch1;
561          }
562          Expr _v_deref__GetR1 (_v_GetR1, 0);
563          if ((_v_deref__GetR1.get_len () != 2))
564          {
565            goto _block3__branch1;
566          }
567          if (_v_deref__GetR1.symbol_at (1))
568          {
569            goto _block3__branch1;
570          }
571          Expr _v_deref__deref__GetR1 (_v_deref__GetR1, 1);
572          if ((_v_deref__deref__GetR1.get_len () != 1))
573          {
574            goto _block3__branch1;
575          }
576          if (!_c_8.term_eq (_v_deref__GetR1, 0))
577          {
578            goto _block3__branch1;
579          }
580          Expr _vt_label (_v_deref__deref__GetR1, 0, 1);
581          {
582            {
583              if (!RF_CALL (Table::In_m_Table_q_, (Breaks, _vt_label), /*void*/))
584              {
585                goto _block4__branch1;
586              }
587              _ve_t1 = (_c_8 + _vt_label () + _ve_body) ();
588              goto _block4;
589            }
590          _block4__branch1: {}
591            {
592              {
593                Expr _v__q_1;
594                RF_CALL (Box::_q_, Blocks, _v__q_1);
595                uintptr_t _v_len27 = _v__q_1.get_len ();
596                uintptr_t _v_len28 = 1;
597                if ((_v_len27 < _v_len28))
598                {
599                  goto _block5__branch1;
600                }
601                uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_68_m_26 = (_v_len27 - _v_len28);
602                if (_v__q_1.symbol_at (_v_len___e__e_tmp_m_rfp__asail2asailrf_m_68_m_26))
603                {
604                  goto _block5__branch1;
605                }
606                Expr _v_deref___q_1 (_v__q_1, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_68_m_26);
607                if ((_v_deref___q_1.get_len () != 2))
608                {
609                  goto _block5__branch1;
610                }
611                if (_v_deref___q_1.symbol_at (1))
612                {
613                  goto _block5__branch1;
614                }
615                Expr _v_deref__deref___q_1 (_v_deref___q_1, 1);
616                if ((_v_deref__deref___q_1.get_len () != 1))
617                {
618                  goto _block5__branch1;
619                }
620                if (!_c_8.term_eq (_v_deref___q_1, 0))
621                {
622                  goto _block5__branch1;
623                }
624                Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_68_m_26 (_v__q_1, 0, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_68_m_26);
625                Expr _vt_other_m_label (_v_deref__deref___q_1, 0, 1);
626                Expr _v_Lookup1;
627                if (!RF_CALL (Table::Lookup, (Breaks, _vt_other_m_label), _v_Lookup1))
628                {
629                  goto _block5__branch1;
630                }
631                if ((_v_Lookup1.get_len () != 0))
632                {
633                  goto _block5__branch1;
634                }
635                RF_CALL (Table::Unbind, (Breaks, _vt_other_m_label), /*void*/);
636                goto _block5;
637              }
638            _block5__branch1: {}
639            }
640          _block5: {}
641            _ve_t1 = empty;
642            _ve_2 = (_ve_body + _ve_2);
643          }
644        _block4: {}
645          goto _block3;
646        }
647      _block3__branch1: {}
648        {
649          if (_v_GetR1.symbol_at (0))
650          {
651            goto _block3__branch2;
652          }
653          Expr _v_deref__GetR12 (_v_GetR1, 0);
654          if ((_v_deref__GetR12.get_len () != 5))
655          {
656            goto _block3__branch2;
657          }
658          if (_v_deref__GetR12.symbol_at (1))
659          {
660            goto _block3__branch2;
661          }
662          if (_v_deref__GetR12.symbol_at (2))
663          {
664            goto _block3__branch2;
665          }
666          if (_v_deref__GetR12.symbol_at (4))
667          {
668            goto _block3__branch2;
669          }
670          Expr _v_deref__deref__GetR12 (_v_deref__GetR12, 1);
671          Expr _v_deref__deref__GetR122 (_v_deref__GetR12, 2);
672          Expr _v_deref__deref__GetR123 (_v_deref__GetR12, 4);
673          uintptr_t _v_len29 = _v_deref__deref__GetR12.get_len ();
674          uintptr_t _v_len30 = 0;
675          if ((_v_len29 < _v_len30))
676          {
677            goto _block3__branch2;
678          }
679          uintptr_t _v_len__cont2 = (_v_len29 - _v_len30);
680          uintptr_t _v_len31 = _v_deref__deref__GetR123.get_len ();
681          uintptr_t _v_len32 = 0;
682          if ((_v_len31 < _v_len32))
683          {
684            goto _block3__branch2;
685          }
686          uintptr_t _v_len__step2 = (_v_len31 - _v_len32);
687          uintptr_t _v_len33 = _v_deref__deref__GetR122.get_len ();
688          uintptr_t _v_len34 = 0;
689          if ((_v_len33 < _v_len34))
690          {
691            goto _block3__branch2;
692          }
693          uintptr_t _v_len__break2 = (_v_len33 - _v_len34);
694          if (!_c_7.term_eq (_v_deref__GetR12, 0))
695          {
696            goto _block3__branch2;
697          }
698          if (!_c_13.term_eq (_v_deref__GetR12, 3))
699          {
700            goto _block3__branch2;
701          }
702          Expr _ve_cont (_v_deref__deref__GetR12, 0, _v_len__cont2);
703          Expr _ve_break (_v_deref__deref__GetR122, 0, _v_len__break2);
704          Expr _ve_step (_v_deref__deref__GetR123, 0, _v_len__step2);
705          {
706            {
707              if (!RF_CALL (Table::In_m_Table_q_, (Breaks, _ve_break), /*void*/))
708              {
709                goto _block6__branch1;
710              }
711              _ve_t1 = (_c_7 + _ve_cont () + _ve_break () + _c_13 + _ve_step () + _ve_body) ();
712              goto _block6;
713            }
714          _block6__branch1: {}
715            _ve_t1 = (_c_7 + _ve_cont () + _ve_break () + _c_13 + _ve_step () + _ve_body) ();
716            _ve_2 = empty;
717          }
718        _block6: {}
719          goto _block3;
720        }
721      _block3__branch2: {}
722        {
723          if (!_v_GetR1.term_eq (_c_12, 0))
724          {
725            goto _block3__branch3;
726          }
727          _ve_t1 = (_c_11 + _ve_body) ();
728          _ve_2 = empty;
729          goto _block3;
730        }
731      _block3__branch3: {}
732        if (_v_GetR1.symbol_at (0))
733        {
734          RF_FUNC_ERROR (unexpected_fail);
735        }
736        Expr _v_deref__GetR13 (_v_GetR1, 0);
737        uintptr_t _v_len35 = _v_deref__GetR13.get_len ();
738        uintptr_t _v_len36 = 0;
739        if ((_v_len35 < _v_len36))
740        {
741          RF_FUNC_ERROR (unexpected_fail);
742        }
743        uintptr_t _v_len__item = (_v_len35 - _v_len36);
744        Expr _ve_item (_v_deref__GetR13, 0, _v_len__item);
745        _ve_t1 = (_ve_item + _ve_body) ();
746      }
747    _block3: {}
748      Expr _vt_breaks;
749      RF_CALL (GetR, Last_m_Breaks, _vt_breaks);
750      {
751        uintptr_t _v_len37 = _ve_t1.get_len ();
752        uintptr_t _v_len38 = 0;
753        if ((_v_len37 < (_v_len38 + 1)))
754        {
755          goto _block7__branch1;
756        }
757        uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_84_m_15 = (_v_len37 - _v_len38);
758        if (_vt_breaks.symbol_at (0))
759        {
760          goto _block7__branch1;
761        }
762        Expr _v_deref__breaks (_vt_breaks, 0);
763        if ((_v_deref__breaks.get_len () < 1))
764        {
765          goto _block7__branch1;
766        }
767        Expr _vv__e__e_tmp_m_rfp__asail2asailrf_m_84_m_15 (_ve_t1, 0, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_84_m_15);
768        RF_lsplit (_v_deref__breaks, 0, _ve__e__e_tmp_m_rfp__asail2asailrf_m_85_m_22, _v_lsplit__deref__breaks);
769        for ( ; ; RF_iter(_v_deref__breaks)++)
770        {
771          {
772            if (!RF_iter(_v_deref__breaks))
773            {
774              goto _block7__branch1;
775            }
776            uintptr_t _v_len39 = _v_lsplit__deref__breaks.get_len ();
777            uintptr_t _v_len40 = 1;
778            if ((_v_len39 < _v_len40))
779            {
780              goto _block7__branch1;
781            }
782            uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_85_m_28 = (_v_len39 - _v_len40);
783            Expr _vt_l (_v_lsplit__deref__breaks, 0, 1);
784            Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_85_m_28 (_v_lsplit__deref__breaks, 1, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_85_m_28);
785            RF_CALL (Table::Bind, (Breaks, _vt_l, _c_14), /*void*/);
786            goto _continue1;
787          }
788      _continue1: {}
789        }
790      }
791    _block7__branch1: {}
792      Expr _v_Remove_m_Unreachable1;
793      RF_CALL (Remove_m_Unreachable, _ve_2, _v_Remove_m_Unreachable1);
794      _v_res1 = (_ve_t1 + _v_Remove_m_Unreachable1);
795      goto _block1;
796    }
797  _block1__branch1: {}
798    {
799      uintptr_t _v_len41 = _v_arg1.get_len ();
800      uintptr_t _v_len42 = 1;
801      if ((_v_len41 < _v_len42))
802      {
803        goto _block1__branch2;
804      }
805      uintptr_t _v_len__22 = (_v_len41 - _v_len42);
806      Expr _vt_1 (_v_arg1, 0, 1);
807      Expr _ve_2 (_v_arg1, 1, _v_len__22);
808      {
809        {
810          if (_vt_1.symbol_at (0))
811          {
812            goto _block8__branch1;
813          }
814          Expr _v_deref__18 (_vt_1, 0);
815          if ((_v_deref__18.get_len () != 2))
816          {
817            goto _block8__branch1;
818          }
819          if (!_c_15.term_eq (_v_deref__18, 0))
820          {
821            goto _block8__branch1;
822          }
823          Expr _vt_label (_v_deref__18, 1, 1);
824          Expr _v_GetR2;
825          RF_CALL (GetR, Last_m_Breaks, _v_GetR2);
826          if (_v_GetR2.symbol_at (0))
827          {
828            RF_FUNC_ERROR (unexpected_fail);
829          }
830          Expr _v_deref__GetR2 (_v_GetR2, 0);
831          uintptr_t _v_len43 = _v_deref__GetR2.get_len ();
832          uintptr_t _v_len44 = 0;
833          if ((_v_len43 < _v_len44))
834          {
835            RF_FUNC_ERROR (unexpected_fail);
836          }
837          uintptr_t _v_len__breaks = (_v_len43 - _v_len44);
838          Expr _ve_breaks (_v_deref__GetR2, 0, _v_len__breaks);
839          RF_CALL (Box::Put, (Last_m_Breaks, (_ve_breaks + _vt_label) ()), /*void*/);
840          {
841            {
842              Expr _v__q_2;
843              RF_CALL (Box::_q_, Blocks, _v__q_2);
844              uintptr_t _v_len45 = _v__q_2.get_len ();
845              uintptr_t _v_len46 = 1;
846              if ((_v_len45 < _v_len46))
847              {
848                goto _block9__branch1;
849              }
850              uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_95_m_24 = (_v_len45 - _v_len46);
851              if (_v__q_2.symbol_at (_v_len___e__e_tmp_m_rfp__asail2asailrf_m_95_m_24))
852              {
853                goto _block9__branch1;
854              }
855              Expr _v_deref___q_2 (_v__q_2, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_95_m_24);
856              if ((_v_deref___q_2.get_len () != 2))
857              {
858                goto _block9__branch1;
859              }
860              if (_v_deref___q_2.symbol_at (1))
861              {
862                goto _block9__branch1;
863              }
864              Expr _v_deref__deref___q_2 (_v_deref___q_2, 1);
865              if ((_v_deref__deref___q_2.get_len () != 1))
866              {
867                goto _block9__branch1;
868              }
869              if (!_c_8.term_eq (_v_deref___q_2, 0))
870              {
871                goto _block9__branch1;
872              }
873              if (!_vt_label.term_eq (_v_deref__deref___q_2, 0))
874              {
875                goto _block9__branch1;
876              }
877              Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_95_m_24 (_v__q_2, 0, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_95_m_24);
878              _v_res1 = empty;
879              goto _block9;
880            }
881          _block9__branch1: {}
882            RF_CALL (Table::Bind, (Breaks, _vt_label, empty), /*void*/);
883            _v_res1 = _vt_1;
884          }
885        _block9: {}
886          goto _block8;
887        }
888      _block8__branch1: {}
889        {
890          if (_vt_1.symbol_at (0))
891          {
892            goto _block8__branch2;
893          }
894          Expr _v_deref__19 (_vt_1, 0);
895          if ((_v_deref__19.get_len () != 2))
896          {
897            goto _block8__branch2;
898          }
899          if (!_c_16.term_eq (_v_deref__19, 0))
900          {
901            goto _block8__branch2;
902          }
903          Expr _vt_label (_v_deref__19, 1, 1);
904          {
905            {
906              Expr _v__q_3;
907              RF_CALL (Box::_q_, Blocks, _v__q_3);
908              uintptr_t _v_len47 = _v__q_3.get_len ();
909              uintptr_t _v_len48 = 1;
910              if ((_v_len47 < _v_len48))
911              {
912                goto _block10__branch1;
913              }
914              uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_99_m_22 = (_v_len47 - _v_len48);
915              if (_v__q_3.symbol_at (_v_len___e__e_tmp_m_rfp__asail2asailrf_m_99_m_22))
916              {
917                goto _block10__branch1;
918              }
919              Expr _v_deref___q_3 (_v__q_3, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_99_m_22);
920              if ((_v_deref___q_3.get_len () != 5))
921              {
922                goto _block10__branch1;
923              }
924              if (_v_deref___q_3.symbol_at (1))
925              {
926                goto _block10__branch1;
927              }
928              if (_v_deref___q_3.symbol_at (2))
929              {
930                goto _block10__branch1;
931              }
932              if (_v_deref___q_3.symbol_at (3))
933              {
934                goto _block10__branch1;
935              }
936              if (_v_deref___q_3.symbol_at (4))
937              {
938                goto _block10__branch1;
939              }
940              Expr _v_deref__deref___q_3 (_v_deref___q_3, 1);
941              Expr _v_deref__deref___q_32 (_v_deref___q_3, 2);
942              Expr _v_deref__deref___q_33 (_v_deref___q_3, 3);
943              Expr _v_deref__deref___q_34 (_v_deref___q_3, 4);
944              if ((_v_deref__deref___q_3.get_len () != 1))
945              {
946                goto _block10__branch1;
947              }
948              uintptr_t _v_len49 = _v_deref__deref___q_32.get_len ();
949              uintptr_t _v_len50 = 0;
950              if ((_v_len49 < _v_len50))
951              {
952                goto _block10__branch1;
953              }
954              uintptr_t _v_len__break3 = (_v_len49 - _v_len50);
955              uintptr_t _v_len51 = _v_deref__deref___q_34.get_len ();
956              uintptr_t _v_len52 = 0;
957              if ((_v_len51 < _v_len52))
958              {
959                goto _block10__branch1;
960              }
961              uintptr_t _v_len__step3 = (_v_len51 - _v_len52);
962              uintptr_t _v_len53 = _v_deref__deref___q_33.get_len ();
963              uintptr_t _v_len54 = 0;
964              if ((_v_len53 < _v_len54))
965              {
966                goto _block10__branch1;
967              }
968              uintptr_t _v_len__cond3 = (_v_len53 - _v_len54);
969              if (!_c_7.term_eq (_v_deref___q_3, 0))
970              {
971                goto _block10__branch1;
972              }
973              if (!_vt_label.term_eq (_v_deref__deref___q_3, 0))
974              {
975                goto _block10__branch1;
976              }
977              Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_99_m_22 (_v__q_3, 0, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_99_m_22);
978              Expr _ve_break (_v_deref__deref___q_32, 0, _v_len__break3);
979              Expr _ve_cond (_v_deref__deref___q_33, 0, _v_len__cond3);
980              Expr _ve_step (_v_deref__deref___q_34, 0, _v_len__step3);
981              _v_res1 = empty;
982              goto _block10;
983            }
984          _block10__branch1: {}
985            _v_res1 = _vt_1;
986          }
987        _block10: {}
988          goto _block8;
989        }
990      _block8__branch2: {}
991        {
992          if (!_vt_1.term_eq (_c_17, 0))
993          {
994            goto _block8__branch3;
995          }
996          _v_res1 = _vt_1;
997          goto _block8;
998        }
999      _block8__branch3: {}
1000        {
1001          if (_vt_1.symbol_at (0))
1002          {
1003            goto _block8__branch4;
1004          }
1005          Expr _v_deref__110 (_vt_1, 0);
1006          uintptr_t _v_len55 = _v_deref__110.get_len ();
1007          uintptr_t _v_len56 = 1;
1008          if ((_v_len55 < _v_len56))
1009          {
1010            goto _block8__branch4;
1011          }
1012          uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_103_m_13 = (_v_len55 - _v_len56);
1013          if (!_c_18.term_eq (_v_deref__110, 0))
1014          {
1015            goto _block8__branch4;
1016          }
1017          Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_103_m_13 (_v_deref__110, 1, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_103_m_13);
1018          _v_res1 = _vt_1;
1019          goto _block8;
1020        }
1021      _block8__branch4: {}
1022        if (!_vt_1.term_eq (_c_19, 0))
1023        {
1024          goto _block1__branch2;
1025        }
1026        _v_res1 = _vt_1;
1027      }
1028    _block8: {}
1029      goto _block1;
1030    }
1031  _block1__branch2: {}
1032    {
1033      uintptr_t _v_len57 = _v_arg1.get_len ();
1034      uintptr_t _v_len58 = 1;
1035      if ((_v_len57 < _v_len58))
1036      {
1037        goto _block1__branch3;
1038      }
1039      uintptr_t _v_len__23 = (_v_len57 - _v_len58);
1040      Expr _vt_1 (_v_arg1, 0, 1);
1041      Expr _ve_2 (_v_arg1, 1, _v_len__23);
1042      Expr _v_Remove_m_Unreachable2;
1043      RF_CALL (Remove_m_Unreachable, _ve_2, _v_Remove_m_Unreachable2);
1044      _v_res1 = (_vt_1 + _v_Remove_m_Unreachable2);
1045      goto _block1;
1046    }
1047  _block1__branch3: {}
1048    if ((_v_arg1.get_len () != 0))
1049    {
1050      RF_FUNC_ERROR (unexpected_fail);
1051    }
1052    _v_res1 = empty;
1053  }
1054_block1: {}
1055RF_END
1056
1057RF_FUNC (Simplify_m_Infix, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1058  {
1059    {
1060      if (_v_arg1.symbol_at (0))
1061      {
1062        goto _block1__branch1;
1063      }
1064      Expr _v_deref__arg1 (_v_arg1, 0);
1065      uintptr_t _v_len1 = _v_deref__arg1.get_len ();
1066      uintptr_t _v_len2 = 2;
1067      if ((_v_len1 < _v_len2))
1068      {
1069        goto _block1__branch1;
1070      }
1071      uintptr_t _v_len__args = (_v_len1 - _v_len2);
1072      if (!_c_20.term_eq (_v_deref__arg1, 0))
1073      {
1074        goto _block1__branch1;
1075      }
1076      if (!_v_deref__arg1.symbol_at (1))
1077      {
1078        goto _block1__branch1;
1079      }
1080      Expr _vs_op (_v_deref__arg1, 1, 1);
1081      Expr _ve_args (_v_deref__arg1, 2, _v_len__args);
1082      Expr _v_auxblock1;
1083      {
1084        {
1085          if (!_vs_op.term_eq (_c_21, 0))
1086          {
1087            goto _block2__branch1;
1088          }
1089          Expr _v_Map1;
1090          RF_CALL (List::Map, (_c_22, empty, _ve_args), _v_Map1);
1091          RF_CALL (List::Foldr1, (_c_23, empty, _v_Map1), _v_auxblock1);
1092          goto _block2;
1093        }
1094      _block2__branch1: {}
1095        {
1096          if (!_vs_op.term_eq (_c_24, 0))
1097          {
1098            goto _block2__branch2;
1099          }
1100          Expr _v_Map2;
1101          RF_CALL (List::Map, (_c_22, empty, _ve_args), _v_Map2);
1102          RF_CALL (List::Foldr1, (_c_25, empty, _v_Map2), _v_auxblock1);
1103          goto _block2;
1104        }
1105      _block2__branch2: {}
1106        {
1107          if (!_vs_op.term_eq (_c_26, 0))
1108          {
1109            goto _block2__branch3;
1110          }
1111          Expr _v_Map3;
1112          RF_CALL (List::Map, (_c_22, empty, _ve_args), _v_Map3);
1113          RF_CALL (List::Foldr1, (_c_27, empty, _v_Map3), _v_auxblock1);
1114          goto _block2;
1115        }
1116      _block2__branch3: {}
1117        {
1118          if (!_vs_op.term_eq (_c_28, 0))
1119          {
1120            goto _block2__branch4;
1121          }
1122          Expr _v_Map4;
1123          RF_CALL (List::Map, (_c_22, empty, _ve_args), _v_Map4);
1124          RF_CALL (List::Foldr1, (_c_29, empty, _v_Map4), _v_auxblock1);
1125          goto _block2;
1126        }
1127      _block2__branch4: {}
1128        {
1129          if (!_vs_op.term_eq (_c_30, 0))
1130          {
1131            goto _block2__branch5;
1132          }
1133          Expr _v_Map5;
1134          RF_CALL (List::Map, (_c_22, empty, _ve_args), _v_Map5);
1135          RF_CALL (List::Foldr1, (_c_31, empty, _v_Map5), _v_auxblock1);
1136          goto _block2;
1137        }
1138      _block2__branch5: {}
1139        if (!_vs_op.symbol_at (0))
1140        {
1141          RF_FUNC_ERROR (unexpected_fail);
1142        }
1143        Expr _vs__e__e_tmp_m_rfp__asail2asailrf_m_124_m_6 (_vs_op, 0, 1);
1144        RF_CALL (List::Map, (_c_22, empty, _ve_args), _v_auxblock1);
1145      }
1146    _block2: {}
1147      {
1148        {
1149          if ((_v_auxblock1.get_len () != 1))
1150          {
1151            goto _block3__branch1;
1152          }
1153          Expr _vt_1 (_v_auxblock1, 0, 1);
1154          _v_res1 = _vt_1;
1155          goto _block3;
1156        }
1157      _block3__branch1: {}
1158        uintptr_t _v_len3 = _v_auxblock1.get_len ();
1159        uintptr_t _v_len4 = 0;
1160        if ((_v_len3 < _v_len4))
1161        {
1162          RF_FUNC_ERROR (unexpected_fail);
1163        }
1164        uintptr_t _v_len__1 = (_v_len3 - _v_len4);
1165        Expr _ve_1 (_v_auxblock1, 0, _v_len__1);
1166        Expr _v_Paren1;
1167        RF_CALL (List::Paren, _ve_1, _v_Paren1);
1168        _v_res1 = (_c_20 + _vs_op + _v_Paren1) ();
1169      }
1170    _block3: {}
1171      goto _block1;
1172    }
1173  _block1__branch1: {}
1174    {
1175      if (_v_arg1.symbol_at (0))
1176      {
1177        goto _block1__branch2;
1178      }
1179      Expr _v_deref__arg12 (_v_arg1, 0);
1180      uintptr_t _v_len5 = _v_deref__arg12.get_len ();
1181      uintptr_t _v_len6 = 0;
1182      if ((_v_len5 < _v_len6))
1183      {
1184        goto _block1__branch2;
1185      }
1186      uintptr_t _v_len__12 = (_v_len5 - _v_len6);
1187      Expr _ve_1 (_v_deref__arg12, 0, _v_len__12);
1188      Expr _v_Map6;
1189      RF_CALL (List::Map, (_c_1, empty, _ve_1), _v_Map6);
1190      _v_res1 = _v_Map6 ();
1191      goto _block1;
1192    }
1193  _block1__branch2: {}
1194    if (!_v_arg1.symbol_at (0))
1195    {
1196      RF_FUNC_ERROR (unexpected_fail);
1197    }
1198    Expr _vs_1 (_v_arg1, 0, 1);
1199    _v_res1 = _vs_1;
1200  }
1201_block1: {}
1202RF_END
1203
1204RF_FUNC (Simplify_m_Arithm, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1205  if ((_v_arg1.get_len () != 1))
1206  {
1207    RF_FUNC_ERROR (unexpected_fail);
1208  }
1209  if (_v_arg1.symbol_at (0))
1210  {
1211    RF_FUNC_ERROR (unexpected_fail);
1212  }
1213  Expr _v_deref__arg1 (_v_arg1, 0);
1214  uintptr_t _v_len1 = _v_deref__arg1.get_len ();
1215  uintptr_t _v_len2 = 0;
1216  if ((_v_len1 < _v_len2))
1217  {
1218    RF_FUNC_ERROR (unexpected_fail);
1219  }
1220  uintptr_t _v_len__args = (_v_len1 - _v_len2);
1221  Expr _ve_args (_v_deref__arg1, 0, _v_len__args);
1222  Expr _v_Map1;
1223  RF_CALL (List::Map, (_c_1, empty, _ve_args), _v_Map1);
1224  Expr _v_Foldr11;
1225  RF_CALL (List::Foldr1, (_c_29, empty, _v_Map1), _v_Foldr11);
1226  {
1227    {
1228      if ((_v_Foldr11.get_len () != 1))
1229      {
1230        goto _block1__branch1;
1231      }
1232      Expr _vt_1 (_v_Foldr11, 0, 1);
1233      _v_res1 = _vt_1;
1234      goto _block1;
1235    }
1236  _block1__branch1: {}
1237    uintptr_t _v_len3 = _v_Foldr11.get_len ();
1238    uintptr_t _v_len4 = 0;
1239    if ((_v_len3 < _v_len4))
1240    {
1241      RF_FUNC_ERROR (unexpected_fail);
1242    }
1243    uintptr_t _v_len__1 = (_v_len3 - _v_len4);
1244    Expr _ve_1 (_v_Foldr11, 0, _v_len__1);
1245    Expr _v_Paren1;
1246    RF_CALL (List::Paren, _ve_1, _v_Paren1);
1247    _v_res1 = (_c_32 + _v_Paren1) ();
1248  }
1249_block1: {}
1250RF_END
1251
1252RF_FUNC (Eval_sp__a_, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1253  {
1254    {
1255      uintptr_t _v_len1 = _v_arg1.get_len ();
1256      uintptr_t _v_len2 = 1;
1257      if ((_v_len1 < _v_len2))
1258      {
1259        goto _block1__branch1;
1260      }
1261      uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_140_m_7 = (_v_len1 - _v_len2);
1262      if (!_c_2.term_eq (_v_arg1, 0))
1263      {
1264        goto _block1__branch1;
1265      }
1266      Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_140_m_7 (_v_arg1, 1, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_140_m_7);
1267      _v_res1 = _c_2;
1268      goto _block1;
1269    }
1270  _block1__branch1: {}
1271    {
1272      uintptr_t _v_len3 = _v_arg1.get_len ();
1273      uintptr_t _v_len4 = 1;
1274      if ((_v_len3 < _v_len4))
1275      {
1276        goto _block1__branch2;
1277      }
1278      uintptr_t _v_len___e__e_tmp_m_rfp__asail2asailrf_m_141_m_4 = (_v_len3 - _v_len4);
1279      if (!_c_2.term_eq (_v_arg1, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_141_m_4))
1280      {
1281        goto _block1__branch2;
1282      }
1283      Expr _ve__e__e_tmp_m_rfp__asail2asailrf_m_141_m_4 (_v_arg1, 0, _v_len___e__e_tmp_m_rfp__asail2asailrf_m_141_m_4);
1284      _v_res1 = _c_2;
1285      goto _block1;
1286    }
1287  _block1__branch2: {}
1288    {
1289      uintptr_t _v_len5 = _v_arg1.get_len ();
1290      uintptr_t _v_len6 = 1;
1291      if ((_v_len5 < _v_len6))
1292      {
1293        goto _block1__branch3;
1294      }
1295      uintptr_t _v_len__2 = (_v_len5 - _v_len6);
1296      if (!_c_3.term_eq (_v_arg1, 0))
1297      {
1298        goto _block1__branch3;
1299      }
1300      Expr _ve_2 (_v_arg1, 1, _v_len__2);
1301      _v_res1 = _ve_2;
1302      goto _block1;
1303    }
1304  _block1__branch3: {}
1305    {
1306      uintptr_t _v_len7 = _v_arg1.get_len ();
1307      uintptr_t _v_len8 = 1;
1308      if ((_v_len7 < _v_len8))
1309      {
1310        goto _block1__branch4;
1311      }
1312      uintptr_t _v_len__1 = (_v_len7 - _v_len8);
1313      if (!_c_3.term_eq (_v_arg1, _v_len__1))
1314      {
1315        goto _block1__branch4;
1316      }
1317      Expr _ve_1 (_v_arg1, 0, _v_len__1);
1318      _v_res1 = _ve_1;
1319      goto _block1;
1320    }
1321  _block1__branch4: {}
1322    {
1323      uintptr_t _v_len9 = _v_arg1.get_len ();
1324      uintptr_t _v_len10 = 2;
1325      if ((_v_len9 < _v_len10))
1326      {
1327        goto _block1__branch5;
1328      }
1329      uintptr_t _v_len__22 = (_v_len9 - _v_len10);
1330      if (!_v_arg1.symbol_at (0))
1331      {
1332        goto _block1__branch5;
1333      }
1334      if (!_v_arg1.symbol_at ((_v_len__22 + 1)))
1335      {
1336        goto _block1__branch5;
1337      }
1338      Expr _vs_1 (_v_arg1, 0, 1);
1339      Expr _ve_2 (_v_arg1, 1, _v_len__22);
1340      Expr _vs_3 (_v_arg1, (_v_len__22 + 1), 1);
1341      Expr _v__a_1;
1342      RF_CALL (Arithm::_a_, (_vs_1, _vs_3), _v__a_1);
1343      _v_res1 = (_ve_2 + _v__a_1);
1344      goto _block1;
1345    }
1346  _block1__branch5: {}
1347    {
1348      uintptr_t _v_len11 = _v_arg1.get_len ();
1349      uintptr_t _v_len12 = 1;
1350      if ((_v_len11 < _v_len12))
1351      {
1352        goto _block1__branch6;
1353      }
1354      uintptr_t _v_len__23 = (_v_len11 - _v_len12);
1355      if (!_v_arg1.symbol_at (0))
1356      {
1357        goto _block1__branch6;
1358      }
1359      Expr _vs_1 (_v_arg1, 0, 1);
1360      Expr _ve_2 (_v_arg1, 1, _v_len__23);
1361      _v_res1 = (_ve_2 + _vs_1);
1362      goto _block1;
1363    }
1364  _block1__branch6: {}
1365    _v_res1 = _v_arg1;
1366  }
1367_block1: {}
1368RF_END
1369
1370RF_FUNC (Eval_sp__p_, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1371  {
1372    {
1373      uintptr_t _v_len1 = _v_arg1.get_len ();
1374      uintptr_t _v_len2 = 1;
1375      if ((_v_len1 < _v_len2))
1376      {
1377        goto _block1__branch1;
1378      }
1379      uintptr_t _v_len__2 = (_v_len1 - _v_len2);
1380      if (!_c_2.term_eq (_v_arg1, 0))
1381      {
1382        goto _block1__branch1;
1383      }
1384      Expr _ve_2 (_v_arg1, 1, _v_len__2);
1385      _v_res1 = _ve_2;
1386      goto _block1;
1387    }
1388  _block1__branch1: {}
1389    {
1390      uintptr_t _v_len3 = _v_arg1.get_len ();
1391      uintptr_t _v_len4 = 1;
1392      if ((_v_len3 < _v_len4))
1393      {
1394        goto _block1__branch2;
1395      }
1396      uintptr_t _v_len__1 = (_v_len3 - _v_len4);
1397      if (!_c_2.term_eq (_v_arg1, _v_len__1))
1398      {
1399        goto _block1__branch2;
1400      }
1401      Expr _ve_1 (_v_arg1, 0, _v_len__1);
1402      _v_res1 = _ve_1;
1403      goto _block1;
1404    }
1405  _block1__branch2: {}
1406    {
1407      uintptr_t _v_len5 = _v_arg1.get_len ();
1408      uintptr_t _v_len6 = 2;
1409      if ((_v_len5 < _v_len6))
1410      {
1411        goto _block1__branch3;
1412      }
1413      uintptr_t _v_len__22 = (_v_len5 - _v_len6);
1414      if (!_v_arg1.symbol_at (0))
1415      {
1416        goto _block1__branch3;
1417      }
1418      if (!_v_arg1.symbol_at ((_v_len__22 + 1)))
1419      {
1420        goto _block1__branch3;
1421      }
1422      Expr _vs_1 (_v_arg1, 0, 1);
1423      Expr _ve_2 (_v_arg1, 1, _v_len__22);
1424      Expr _vs_3 (_v_arg1, (_v_len__22 + 1), 1);
1425      Expr _v__p_1;
1426      RF_CALL (Arithm::_p_, (_vs_1, _vs_3), _v__p_1);
1427      _v_res1 = (_ve_2 + _v__p_1);
1428      goto _block1;
1429    }
1430  _block1__branch3: {}
1431    {
1432      uintptr_t _v_len7 = _v_arg1.get_len ();
1433      uintptr_t _v_len8 = 1;
1434      if ((_v_len7 < _v_len8))
1435      {
1436        goto _block1__branch4;
1437      }
1438      uintptr_t _v_len__23 = (_v_len7 - _v_len8);
1439      if (!_v_arg1.symbol_at (0))
1440      {
1441        goto _block1__branch4;
1442      }
1443      Expr _vs_1 (_v_arg1, 0, 1);
1444      Expr _ve_2 (_v_arg1, 1, _v_len__23);
1445      _v_res1 = (_ve_2 + _vs_1);
1446      goto _block1;
1447    }
1448  _block1__branch4: {}
1449    _v_res1 = _v_arg1;
1450  }
1451_block1: {}
1452RF_END
1453
1454RF_FUNC (Eval_sp__s_, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1455  {
1456    {
1457      uintptr_t _v_len1 = _v_arg1.get_len ();
1458      uintptr_t _v_len2 = 1;
1459      if ((_v_len1 < _v_len2))
1460      {
1461        goto _block1__branch1;
1462      }
1463      uintptr_t _v_len__1 = (_v_len1 - _v_len2);
1464      if (!_c_3.term_eq (_v_arg1, _v_len__1))
1465      {
1466        goto _block1__branch1;
1467      }
1468      Expr _ve_1 (_v_arg1, 0, _v_len__1);
1469      _v_res1 = _ve_1;
1470      goto _block1;
1471    }
1472  _block1__branch1: {}
1473    _v_res1 = _v_arg1;
1474  }
1475_block1: {}
1476RF_END
1477
1478RF_FUNC (Eval_sp__percnt_, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1479  {
1480    {
1481      uintptr_t _v_len1 = _v_arg1.get_len ();
1482      uintptr_t _v_len2 = 1;
1483      if ((_v_len1 < _v_len2))
1484      {
1485        goto _block1__branch1;
1486      }
1487      uintptr_t _v_len__1 = (_v_len1 - _v_len2);
1488      if (!_c_3.term_eq (_v_arg1, _v_len__1))
1489      {
1490        goto _block1__branch1;
1491      }
1492      Expr _ve_1 (_v_arg1, 0, _v_len__1);
1493      _v_res1 = _c_2;
1494      goto _block1;
1495    }
1496  _block1__branch1: {}
1497    _v_res1 = _v_arg1;
1498  }
1499_block1: {}
1500RF_END
1501
1502RF_FUNC (Eval_sp__m_, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1503  {
1504    {
1505      uintptr_t _v_len1 = _v_arg1.get_len ();
1506      uintptr_t _v_len2 = 1;
1507      if ((_v_len1 < _v_len2))
1508      {
1509        goto _block1__branch1;
1510      }
1511      uintptr_t _v_len__1 = (_v_len1 - _v_len2);
1512      if (!_c_2.term_eq (_v_arg1, _v_len__1))
1513      {
1514        goto _block1__branch1;
1515      }
1516      Expr _ve_1 (_v_arg1, 0, _v_len__1);
1517      _v_res1 = _ve_1;
1518      goto _block1;
1519    }
1520  _block1__branch1: {}
1521    _v_res1 = _v_arg1;
1522  }
1523_block1: {}
1524RF_END
1525
1526RF_FUNC (Simplify_m_Infix__0, (RF_ARG _v_arg1;;), (RF_RES _v_res1;;))
1527  if ((_v_arg1.get_len () != 1))
1528  {
1529    RF_ERROR (_c_33);
1530  }
1531  Expr _v_stub1 (_v_arg1, 0, 1);
1532  RF_CALL (Simplify_m_Infix, _v_stub1, _v_res1);
1533RF_END
1534
1535}
1536
1537namespace rfp__asail2asail
1538{
1539
1540static void init_ ()
1541{
1542  Blocks = Expr::create_sym< rftype::NamedObject<rftype::BoxContents> >(L"Blocks");
1543  Breaks = new rftype::StaticObject<rftype::Table>(L"Breaks");
1544  Last_m_Breaks = Expr::create_sym< rftype::NamedObject<rftype::BoxContents> >(L"Last-Breaks");
1545  _c_0 = Expr::create<Word>("IF");
1546  _c_1 = Expr::create_sym<Func> (Simplify_m_Infix__0);
1547  _c_2 = Expr::create<Integer>("0");
1548  _c_3 = Expr::create<Integer>("1");
1549  _c_4 = Expr::create<Word>("INT");
1550  _c_5 = Expr::create<Word>("FUNC");
1551  _c_6 = Expr::create<Word>("FUNC?");
1552  _c_7 = Expr::create<Word>("FOR");
1553  _c_8 = Expr::create<Word>("LABEL");
1554  _c_9 = Expr::create<Word>("TRY");
1555  _c_10 = (_c_9) ();
1556  _c_11 = Expr::create<Word>("CATCH-ERROR");
1557  _c_12 = (_c_11) ();
1558  _c_13 = (empty) ();
1559  _c_14 = Expr::create<Word>("Persistent");
1560  _c_15 = Expr::create<Word>("BREAK");
1561  _c_16 = Expr::create<Word>("CONTINUE");
1562  _c_17 = Expr::create<Word>("RETFAIL");
1563  _c_18 = Expr::create<Word>("ERROR");
1564  _c_19 = Expr::create<Word>("FATAL");
1565  _c_32 = Expr::create<Word>("INFIX") + Expr::create<Word>("+");
1566  _c_20 = Expr (_c_32, 0, 1);
1567  _c_21 = Expr::create<Word>("*");
1568  _c_22 = Expr::create_sym<Func> (Simplify_m_Arithm);
1569  _c_23 = Expr::create_sym<Func> (Eval_sp__a_);
1570  _c_24 = Expr::create<Word>("/");
1571  _c_25 = Expr::create_sym<Func> (Eval_sp__s_);
1572  _c_26 = Expr::create<Word>("%");
1573  _c_27 = Expr::create_sym<Func> (Eval_sp__percnt_);
1574  _c_28 = Expr (_c_32, 1, 1);
1575  _c_29 = Expr::create_sym<Func> (Eval_sp__p_);
1576  _c_30 = Expr::create<Word>("-");
1577  _c_31 = Expr::create_sym<Func> (Eval_sp__m_);
1578  _c_33 = Expr::create<Word>("Apply") + Expr::create<Word>("Apply") + Expr::create<Word>("Unexpected fail");
1579}
1580
1581static AtStart init_registrator_ (&init_);
1582
1583}
1584
1585}
Note: See TracBrowser for help on using the repository browser.