1# -*- text -*-
2# Parsing Expression Grammar 'TEMPLATE'.
3# Generated for unknown, from file 'TEST'
4
5#
6# Grammar Start Expression
7#
8
9<<MAIN>>:
10         call              sym_Expression
11         halt
12
13#
14# value Symbol 'AddOp'
15#
16
17sym_AddOp:
18# /
19#     '-'
20#     '+'
21
22         symbol_restore    AddOp
23  found! jump              found_9
24         loc_push
25
26         call              choice_7
27
28   fail! value_clear
29     ok! value_leaf        AddOp
30         symbol_save       AddOp
31         error_nonterminal AddOp
32         loc_pop_discard
33
34found_9:
35     ok! ast_value_push
36         return
37
38choice_7:
39# /
40#     '-'
41#     '+'
42
43         error_clear
44
45         loc_push
46         error_push
47
48         call              char_2
49
50         error_pop_merge
51     ok! jump              oknoast_6
52
53         loc_pop_rewind
54         loc_push
55         error_push
56
57         call              char_4
58
59         error_pop_merge
60     ok! jump              oknoast_6
61
62         loc_pop_rewind
63         status_fail
64         return
65
66oknoast_6:
67         loc_pop_discard
68         return
69
70char_2:
71# '-'
72
73         input_next        "t -"
74     ok! test_char         "-"
75         return
76
77char_4:
78# '+'
79
80         input_next        "t +"
81     ok! test_char         "+"
82         return
83#
84# value Symbol 'Digit'
85#
86
87sym_Digit:
88# /
89#     '0'
90#     '1'
91#     '2'
92#     '3'
93#     '4'
94#     '5'
95#     '6'
96#     '7'
97#     '8'
98#     '9'
99
100         symbol_restore    Digit
101  found! jump              found_34
102         loc_push
103
104         call              choice_32
105
106   fail! value_clear
107     ok! value_leaf        Digit
108         symbol_save       Digit
109         error_nonterminal Digit
110         loc_pop_discard
111
112found_34:
113     ok! ast_value_push
114         return
115
116choice_32:
117# /
118#     '0'
119#     '1'
120#     '2'
121#     '3'
122#     '4'
123#     '5'
124#     '6'
125#     '7'
126#     '8'
127#     '9'
128
129         error_clear
130
131         loc_push
132         error_push
133
134         call              char_11
135
136         error_pop_merge
137     ok! jump              oknoast_31
138
139         loc_pop_rewind
140         loc_push
141         error_push
142
143         call              char_13
144
145         error_pop_merge
146     ok! jump              oknoast_31
147
148         loc_pop_rewind
149         loc_push
150         error_push
151
152         call              char_15
153
154         error_pop_merge
155     ok! jump              oknoast_31
156
157         loc_pop_rewind
158         loc_push
159         error_push
160
161         call              char_17
162
163         error_pop_merge
164     ok! jump              oknoast_31
165
166         loc_pop_rewind
167         loc_push
168         error_push
169
170         call              char_19
171
172         error_pop_merge
173     ok! jump              oknoast_31
174
175         loc_pop_rewind
176         loc_push
177         error_push
178
179         call              char_21
180
181         error_pop_merge
182     ok! jump              oknoast_31
183
184         loc_pop_rewind
185         loc_push
186         error_push
187
188         call              char_23
189
190         error_pop_merge
191     ok! jump              oknoast_31
192
193         loc_pop_rewind
194         loc_push
195         error_push
196
197         call              char_25
198
199         error_pop_merge
200     ok! jump              oknoast_31
201
202         loc_pop_rewind
203         loc_push
204         error_push
205
206         call              char_27
207
208         error_pop_merge
209     ok! jump              oknoast_31
210
211         loc_pop_rewind
212         loc_push
213         error_push
214
215         call              char_29
216
217         error_pop_merge
218     ok! jump              oknoast_31
219
220         loc_pop_rewind
221         status_fail
222         return
223
224oknoast_31:
225         loc_pop_discard
226         return
227
228char_11:
229# '0'
230
231         input_next        "t 0"
232     ok! test_char         "0"
233         return
234
235char_13:
236# '1'
237
238         input_next        "t 1"
239     ok! test_char         "1"
240         return
241
242char_15:
243# '2'
244
245         input_next        "t 2"
246     ok! test_char         "2"
247         return
248
249char_17:
250# '3'
251
252         input_next        "t 3"
253     ok! test_char         "3"
254         return
255
256char_19:
257# '4'
258
259         input_next        "t 4"
260     ok! test_char         "4"
261         return
262
263char_21:
264# '5'
265
266         input_next        "t 5"
267     ok! test_char         "5"
268         return
269
270char_23:
271# '6'
272
273         input_next        "t 6"
274     ok! test_char         "6"
275         return
276
277char_25:
278# '7'
279
280         input_next        "t 7"
281     ok! test_char         "7"
282         return
283
284char_27:
285# '8'
286
287         input_next        "t 8"
288     ok! test_char         "8"
289         return
290
291char_29:
292# '9'
293
294         input_next        "t 9"
295     ok! test_char         "9"
296         return
297#
298# value Symbol 'Expression'
299#
300
301sym_Expression:
302# /
303#     (Function)
304#     /
305#         x
306#             '\('
307#             (Expression)
308#             '\)'
309#         x
310#             (Factor)
311#             *
312#                 x
313#                     (MulOp)
314#                     (Factor)
315
316         symbol_restore    Expression
317  found! jump              found_64
318         loc_push
319         ast_push
320
321         call              choice_62
322
323   fail! value_clear
324     ok! value_reduce      Expression
325         symbol_save       Expression
326         error_nonterminal Expression
327         ast_pop_rewind
328         loc_pop_discard
329
330found_64:
331     ok! ast_value_push
332         return
333
334choice_62:
335# /
336#     (Function)
337#     /
338#         x
339#             '\('
340#             (Expression)
341#             '\)'
342#         x
343#             (Factor)
344#             *
345#                 x
346#                     (MulOp)
347#                     (Factor)
348
349         error_clear
350
351         ast_push
352         loc_push
353         error_push
354
355         call              sym_Function
356
357         error_pop_merge
358     ok! jump              ok_61
359
360         ast_pop_rewind
361         loc_pop_rewind
362         ast_push
363         loc_push
364         error_push
365
366         call              choice_59
367
368         error_pop_merge
369     ok! jump              ok_61
370
371         ast_pop_rewind
372         loc_pop_rewind
373         status_fail
374         return
375
376ok_61:
377         ast_pop_discard
378         loc_pop_discard
379         return
380
381choice_59:
382# /
383#     x
384#         '\('
385#         (Expression)
386#         '\)'
387#     x
388#         (Factor)
389#         *
390#             x
391#                 (MulOp)
392#                 (Factor)
393
394         error_clear
395
396         ast_push
397         loc_push
398         error_push
399
400         call              sequence_42
401
402         error_pop_merge
403     ok! jump              ok_58
404
405         ast_pop_rewind
406         loc_pop_rewind
407         ast_push
408         loc_push
409         error_push
410
411         call              sequence_55
412
413         error_pop_merge
414     ok! jump              ok_58
415
416         ast_pop_rewind
417         loc_pop_rewind
418         status_fail
419         return
420
421ok_58:
422         ast_pop_discard
423         loc_pop_discard
424         return
425
426sequence_42:
427# x
428#     '\('
429#     (Expression)
430#     '\)'
431
432         loc_push
433         error_clear
434
435         error_push
436
437         call              char_37
438
439         error_pop_merge
440   fail! jump              failednoast_44
441         ast_push
442         error_push
443
444         call              sym_Expression
445
446         error_pop_merge
447   fail! jump              failed_43
448         error_push
449
450         call              char_40
451
452         error_pop_merge
453   fail! jump              failed_43
454
455         ast_pop_discard
456         loc_pop_discard
457         return
458
459failed_43:
460         ast_pop_rewind
461
462failednoast_44:
463         loc_pop_rewind
464         return
465
466char_37:
467# '\('
468
469         input_next        "t ("
470     ok! test_char         "("
471         return
472
473char_40:
474# '\)'
475
476         input_next        "t )"
477     ok! test_char         ")"
478         return
479
480sequence_55:
481# x
482#     (Factor)
483#     *
484#         x
485#             (MulOp)
486#             (Factor)
487
488         ast_push
489         loc_push
490         error_clear
491
492         error_push
493
494         call              sym_Factor
495
496         error_pop_merge
497   fail! jump              failed_56
498         error_push
499
500         call              kleene_52
501
502         error_pop_merge
503   fail! jump              failed_56
504
505         ast_pop_discard
506         loc_pop_discard
507         return
508
509failed_56:
510         ast_pop_rewind
511         loc_pop_rewind
512         return
513
514kleene_52:
515# *
516#     x
517#         (MulOp)
518#         (Factor)
519
520         loc_push
521         error_push
522
523         call              sequence_49
524
525         error_pop_merge
526   fail! jump              failed_53
527         loc_pop_discard
528         jump              kleene_52
529
530failed_53:
531         loc_pop_rewind
532         status_ok
533         return
534
535sequence_49:
536# x
537#     (MulOp)
538#     (Factor)
539
540         ast_push
541         loc_push
542         error_clear
543
544         error_push
545
546         call              sym_MulOp
547
548         error_pop_merge
549   fail! jump              failed_50
550         error_push
551
552         call              sym_Factor
553
554         error_pop_merge
555   fail! jump              failed_50
556
557         ast_pop_discard
558         loc_pop_discard
559         return
560
561failed_50:
562         ast_pop_rewind
563         loc_pop_rewind
564         return
565#
566# value Symbol 'Factor'
567#
568
569sym_Factor:
570# x
571#     (Term)
572#     *
573#         x
574#             (AddOp)
575#             (Term)
576
577         symbol_restore    Factor
578  found! jump              found_78
579         loc_push
580         ast_push
581
582         call              sequence_75
583
584   fail! value_clear
585     ok! value_reduce      Factor
586         symbol_save       Factor
587         error_nonterminal Factor
588         ast_pop_rewind
589         loc_pop_discard
590
591found_78:
592     ok! ast_value_push
593         return
594
595sequence_75:
596# x
597#     (Term)
598#     *
599#         x
600#             (AddOp)
601#             (Term)
602
603         ast_push
604         loc_push
605         error_clear
606
607         error_push
608
609         call              sym_Term
610
611         error_pop_merge
612   fail! jump              failed_76
613         error_push
614
615         call              kleene_72
616
617         error_pop_merge
618   fail! jump              failed_76
619
620         ast_pop_discard
621         loc_pop_discard
622         return
623
624failed_76:
625         ast_pop_rewind
626         loc_pop_rewind
627         return
628
629kleene_72:
630# *
631#     x
632#         (AddOp)
633#         (Term)
634
635         loc_push
636         error_push
637
638         call              sequence_69
639
640         error_pop_merge
641   fail! jump              failed_73
642         loc_pop_discard
643         jump              kleene_72
644
645failed_73:
646         loc_pop_rewind
647         status_ok
648         return
649
650sequence_69:
651# x
652#     (AddOp)
653#     (Term)
654
655         ast_push
656         loc_push
657         error_clear
658
659         error_push
660
661         call              sym_AddOp
662
663         error_pop_merge
664   fail! jump              failed_70
665         error_push
666
667         call              sym_Term
668
669         error_pop_merge
670   fail! jump              failed_70
671
672         ast_pop_discard
673         loc_pop_discard
674         return
675
676failed_70:
677         ast_pop_rewind
678         loc_pop_rewind
679         return
680#
681# value Symbol 'Function'
682#
683
684sym_Function:
685# (Sinus)
686
687         symbol_restore    Function
688  found! jump              found_81
689         loc_push
690         ast_push
691
692         call              sym_Sinus
693
694   fail! value_clear
695     ok! value_reduce      Function
696         symbol_save       Function
697         error_nonterminal Function
698         ast_pop_rewind
699         loc_pop_discard
700
701found_81:
702     ok! ast_value_push
703         return
704#
705# value Symbol 'MulOp'
706#
707
708sym_MulOp:
709# /
710#     '*'
711#     '/'
712
713         symbol_restore    MulOp
714  found! jump              found_90
715         loc_push
716
717         call              choice_88
718
719   fail! value_clear
720     ok! value_leaf        MulOp
721         symbol_save       MulOp
722         error_nonterminal MulOp
723         loc_pop_discard
724
725found_90:
726     ok! ast_value_push
727         return
728
729choice_88:
730# /
731#     '*'
732#     '/'
733
734         error_clear
735
736         loc_push
737         error_push
738
739         call              char_83
740
741         error_pop_merge
742     ok! jump              oknoast_87
743
744         loc_pop_rewind
745         loc_push
746         error_push
747
748         call              char_85
749
750         error_pop_merge
751     ok! jump              oknoast_87
752
753         loc_pop_rewind
754         status_fail
755         return
756
757oknoast_87:
758         loc_pop_discard
759         return
760
761char_83:
762# '*'
763
764         input_next        "t *"
765     ok! test_char         "*"
766         return
767
768char_85:
769# '/'
770
771         input_next        "t /"
772     ok! test_char         "/"
773         return
774#
775# value Symbol 'Number'
776#
777
778sym_Number:
779# x
780#     ?
781#         (Sign)
782#     +
783#         (Digit)
784
785         symbol_restore    Number
786  found! jump              found_103
787         loc_push
788         ast_push
789
790         call              sequence_100
791
792   fail! value_clear
793     ok! value_reduce      Number
794         symbol_save       Number
795         error_nonterminal Number
796         ast_pop_rewind
797         loc_pop_discard
798
799found_103:
800     ok! ast_value_push
801         return
802
803sequence_100:
804# x
805#     ?
806#         (Sign)
807#     +
808#         (Digit)
809
810         ast_push
811         loc_push
812         error_clear
813
814         error_push
815
816         call              optional_93
817
818         error_pop_merge
819   fail! jump              failed_101
820         error_push
821
822         call              poskleene_96
823
824         error_pop_merge
825   fail! jump              failed_101
826
827         ast_pop_discard
828         loc_pop_discard
829         return
830
831failed_101:
832         ast_pop_rewind
833         loc_pop_rewind
834         return
835
836optional_93:
837# ?
838#     (Sign)
839
840         loc_push
841         error_push
842
843         call              sym_Sign
844
845         error_pop_merge
846   fail! loc_pop_rewind
847     ok! loc_pop_discard
848         status_ok
849         return
850
851poskleene_96:
852# +
853#     (Digit)
854
855         loc_push
856
857         call              sym_Digit
858
859   fail! jump              failed_97
860
861loop_98:
862         loc_pop_discard
863         loc_push
864         error_push
865
866         call              sym_Digit
867
868         error_pop_merge
869     ok! jump              loop_98
870         status_ok
871
872failed_97:
873         loc_pop_rewind
874         return
875#
876# value Symbol 'Sign'
877#
878
879sym_Sign:
880# /
881#     '-'
882#     '+'
883
884         symbol_restore    Sign
885  found! jump              found_112
886         loc_push
887
888         call              choice_110
889
890   fail! value_clear
891     ok! value_leaf        Sign
892         symbol_save       Sign
893         error_nonterminal Sign
894         loc_pop_discard
895
896found_112:
897     ok! ast_value_push
898         return
899
900choice_110:
901# /
902#     '-'
903#     '+'
904
905         error_clear
906
907         loc_push
908         error_push
909
910         call              char_105
911
912         error_pop_merge
913     ok! jump              oknoast_109
914
915         loc_pop_rewind
916         loc_push
917         error_push
918
919         call              char_107
920
921         error_pop_merge
922     ok! jump              oknoast_109
923
924         loc_pop_rewind
925         status_fail
926         return
927
928oknoast_109:
929         loc_pop_discard
930         return
931
932char_105:
933# '-'
934
935         input_next        "t -"
936     ok! test_char         "-"
937         return
938
939char_107:
940# '+'
941
942         input_next        "t +"
943     ok! test_char         "+"
944         return
945#
946# value Symbol 'Sinus'
947#
948
949sym_Sinus:
950# x
951#     's'
952#     'i'
953#     'n'
954#     '\('
955#     (Expression)
956#     '\)'
957
958         symbol_restore    Sinus
959  found! jump              found_129
960         loc_push
961         ast_push
962
963         call              sequence_125
964
965   fail! value_clear
966     ok! value_reduce      Sinus
967         symbol_save       Sinus
968         error_nonterminal Sinus
969         ast_pop_rewind
970         loc_pop_discard
971
972found_129:
973     ok! ast_value_push
974         return
975
976sequence_125:
977# x
978#     's'
979#     'i'
980#     'n'
981#     '\('
982#     (Expression)
983#     '\)'
984
985         loc_push
986         error_clear
987
988         error_push
989
990         call              char_114
991
992         error_pop_merge
993   fail! jump              failednoast_127
994         error_push
995
996         call              char_116
997
998         error_pop_merge
999   fail! jump              failednoast_127
1000         error_push
1001
1002         call              char_118
1003
1004         error_pop_merge
1005   fail! jump              failednoast_127
1006         error_push
1007
1008         call              char_120
1009
1010         error_pop_merge
1011   fail! jump              failednoast_127
1012         ast_push
1013         error_push
1014
1015         call              sym_Expression
1016
1017         error_pop_merge
1018   fail! jump              failed_126
1019         error_push
1020
1021         call              char_123
1022
1023         error_pop_merge
1024   fail! jump              failed_126
1025
1026         ast_pop_discard
1027         loc_pop_discard
1028         return
1029
1030failed_126:
1031         ast_pop_rewind
1032
1033failednoast_127:
1034         loc_pop_rewind
1035         return
1036
1037char_114:
1038# 's'
1039
1040         input_next        "t s"
1041     ok! test_char         "s"
1042         return
1043
1044char_116:
1045# 'i'
1046
1047         input_next        "t i"
1048     ok! test_char         "i"
1049         return
1050
1051char_118:
1052# 'n'
1053
1054         input_next        "t n"
1055     ok! test_char         "n"
1056         return
1057
1058char_120:
1059# '\('
1060
1061         input_next        "t ("
1062     ok! test_char         "("
1063         return
1064
1065char_123:
1066# '\)'
1067
1068         input_next        "t )"
1069     ok! test_char         ")"
1070         return
1071#
1072# value Symbol 'Term'
1073#
1074
1075sym_Term:
1076# (Number)
1077
1078         symbol_restore    Term
1079  found! jump              found_132
1080         loc_push
1081         ast_push
1082
1083         call              sym_Number
1084
1085   fail! value_clear
1086     ok! value_reduce      Term
1087         symbol_save       Term
1088         error_nonterminal Term
1089         ast_pop_rewind
1090         loc_pop_discard
1091
1092found_132:
1093     ok! ast_value_push
1094         return
1095
1096#
1097#
1098