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_eos
11         halt
12
13#
14# value Symbol 'eos'
15#
16
17sym_eos:
18# x
19#     (ex)
20#     *
21#         x
22#             +
23#                 <space>
24#             (ex)
25
26         symbol_restore    eos
27  found! jump              found_19
28         loc_push
29         ast_push
30
31         call              sequence_16
32
33   fail! value_clear
34     ok! value_reduce      eos
35         symbol_save       eos
36         error_nonterminal eos
37         ast_pop_rewind
38         loc_pop_discard
39
40found_19:
41     ok! ast_value_push
42         return
43
44sequence_16:
45# x
46#     (ex)
47#     *
48#         x
49#             +
50#                 <space>
51#             (ex)
52
53         ast_push
54         loc_push
55         error_clear
56
57         error_push
58
59         call              sym_ex
60
61         error_pop_merge
62   fail! jump              failed_17
63         error_push
64
65         call              kleene_13
66
67         error_pop_merge
68   fail! jump              failed_17
69
70         ast_pop_discard
71         loc_pop_discard
72         return
73
74failed_17:
75         ast_pop_rewind
76         loc_pop_rewind
77         return
78
79kleene_13:
80# *
81#     x
82#         +
83#             <space>
84#         (ex)
85
86         loc_push
87         error_push
88
89         call              sequence_9
90
91         error_pop_merge
92   fail! jump              failed_14
93         loc_pop_discard
94         jump              kleene_13
95
96failed_14:
97         loc_pop_rewind
98         status_ok
99         return
100
101sequence_9:
102# x
103#     +
104#         <space>
105#     (ex)
106
107         loc_push
108         error_clear
109
110         error_push
111
112         call              poskleene_4
113
114         error_pop_merge
115   fail! jump              failednoast_11
116         ast_push
117         error_push
118
119         call              sym_ex
120
121         error_pop_merge
122   fail! jump              failed_10
123
124         ast_pop_discard
125         loc_pop_discard
126         return
127
128failed_10:
129         ast_pop_rewind
130
131failednoast_11:
132         loc_pop_rewind
133         return
134
135poskleene_4:
136# +
137#     <space>
138
139         loc_push
140
141         input_next        "space"
142     ok! test_space
143
144   fail! jump              failed_5
145
146loop_6:
147         loc_pop_discard
148         loc_push
149         error_push
150
151         input_next        "space"
152     ok! test_space
153
154         error_pop_merge
155     ok! jump              loop_6
156         status_ok
157
158failed_5:
159         loc_pop_rewind
160         return
161#
162# value Symbol 'ex'
163#
164
165sym_ex:
166# x
167#     +
168#         x
169#             !
170#                 (X)
171#             /
172#                 'x'
173#                 'z'
174#     ?
175#         (X)
176
177         symbol_restore    ex
178  found! jump              found_43
179         loc_push
180         ast_push
181
182         call              sequence_39
183
184   fail! value_clear
185     ok! value_reduce      ex
186         symbol_save       ex
187         error_nonterminal ex
188         ast_pop_rewind
189         loc_pop_discard
190
191found_43:
192     ok! ast_value_push
193         return
194
195sequence_39:
196# x
197#     +
198#         x
199#             !
200#                 (X)
201#             /
202#                 'x'
203#                 'z'
204#     ?
205#         (X)
206
207         loc_push
208         error_clear
209
210         error_push
211
212         call              poskleene_32
213
214         error_pop_merge
215   fail! jump              failednoast_41
216         ast_push
217         error_push
218
219         call              optional_37
220
221         error_pop_merge
222   fail! jump              failed_40
223
224         ast_pop_discard
225         loc_pop_discard
226         return
227
228failed_40:
229         ast_pop_rewind
230
231failednoast_41:
232         loc_pop_rewind
233         return
234
235poskleene_32:
236# +
237#     x
238#         !
239#             (X)
240#         /
241#             'x'
242#             'z'
243
244         loc_push
245
246         call              sequence_29
247
248   fail! jump              failed_33
249
250loop_34:
251         loc_pop_discard
252         loc_push
253         error_push
254
255         call              sequence_29
256
257         error_pop_merge
258     ok! jump              loop_34
259         status_ok
260
261failed_33:
262         loc_pop_rewind
263         return
264
265sequence_29:
266# x
267#     !
268#         (X)
269#     /
270#         'x'
271#         'z'
272
273         loc_push
274         error_clear
275
276         error_push
277
278         call              notahead_22
279
280         error_pop_merge
281   fail! jump              failed_30
282         error_push
283
284         call              choice_27
285
286         error_pop_merge
287   fail! jump              failed_30
288
289         loc_pop_discard
290         return
291
292failed_30:
293         loc_pop_rewind
294         return
295
296notahead_22:
297# !
298#     (X)
299
300         loc_push
301         ast_push
302
303         call              sym_X
304
305   fail! ast_pop_discard
306     ok! ast_pop_rewind
307         loc_pop_rewind
308         status_negate
309         return
310
311choice_27:
312# /
313#     'x'
314#     'z'
315
316         error_clear
317
318         loc_push
319         error_push
320
321         input_next        "t x"
322     ok! test_char         "x"
323
324         error_pop_merge
325     ok! jump              oknoast_26
326
327         loc_pop_rewind
328         loc_push
329         error_push
330
331         input_next        "t z"
332     ok! test_char         "z"
333
334         error_pop_merge
335     ok! jump              oknoast_26
336
337         loc_pop_rewind
338         status_fail
339         return
340
341oknoast_26:
342         loc_pop_discard
343         return
344
345optional_37:
346# ?
347#     (X)
348
349         loc_push
350         error_push
351
352         call              sym_X
353
354         error_pop_merge
355   fail! loc_pop_rewind
356     ok! loc_pop_discard
357         status_ok
358         return
359#
360# value Symbol 'X'
361#
362
363sym_X:
364# 'x'
365
366         symbol_restore    X
367  found! jump              found_46
368         loc_push
369
370         input_next        "t x"
371     ok! test_char         "x"
372
373   fail! value_clear
374     ok! value_leaf        X
375         symbol_save       X
376         error_nonterminal X
377         loc_pop_discard
378
379found_46:
380     ok! ast_value_push
381         return
382
383#
384#
385