1# -*- tcl -*-
2# Parsing Expression Grammar 'TEMPLATE'.
3# Generated for unknown, from file 'TEST'
4
5#
6# Grammar Start Expression
7#
8
9<<def>> <<ns>><<main>> {} {
10    <<self>> sym_eos
11    return
12}
13
14#
15# value Symbol 'eos'
16#
17
18<<def>> <<ns>>sym_eos {} {
19    # x
20    #     (ex)
21    #     *
22    #         x
23    #             +
24    #                 <space>
25    #             (ex)
26
27    <<runtime>> si:value_symbol_start eos
28    <<self>> sequence_11
29    <<runtime>> si:reduce_symbol_end eos
30    return
31}
32
33<<def>> <<ns>>sequence_11 {} {
34    # x
35    #     (ex)
36    #     *
37    #         x
38    #             +
39    #                 <space>
40    #             (ex)
41
42    <<runtime>> si:value_state_push
43    <<self>> sym_ex
44    <<runtime>> si:valuevalue_part
45    <<self>> kleene_9
46    <<runtime>> si:value_state_merge
47    return
48}
49
50<<def>> <<ns>>kleene_9 {} {
51    # *
52    #     x
53    #         +
54    #             <space>
55    #         (ex)
56
57    while {1} {
58        <<runtime>> si:void2_state_push
59    <<self>> sequence_7
60        <<runtime>> si:kleene_close
61    }
62    return
63}
64
65<<def>> <<ns>>sequence_7 {} {
66    # x
67    #     +
68    #         <space>
69    #     (ex)
70
71    <<runtime>> si:void_state_push
72    <<self>> poskleene_4
73    <<runtime>> si:voidvalue_part
74    <<self>> sym_ex
75    <<runtime>> si:value_state_merge
76    return
77}
78
79<<def>> <<ns>>poskleene_4 {} {
80    # +
81    #     <space>
82
83    <<runtime>> i_loc_push
84    <<runtime>> si:next_space
85    <<runtime>> si:kleene_abort
86    while {1} {
87        <<runtime>> si:void2_state_push
88    <<runtime>> si:next_space
89        <<runtime>> si:kleene_close
90    }
91    return
92}
93
94#
95# value Symbol 'ex'
96#
97
98<<def>> <<ns>>sym_ex {} {
99    # x
100    #     +
101    #         x
102    #             !
103    #                 (X)
104    #             [xz]
105    #     ?
106    #         (X)
107
108    <<runtime>> si:value_symbol_start ex
109    <<self>> sequence_25
110    <<runtime>> si:reduce_symbol_end ex
111    return
112}
113
114<<def>> <<ns>>sequence_25 {} {
115    # x
116    #     +
117    #         x
118    #             !
119    #                 (X)
120    #             [xz]
121    #     ?
122    #         (X)
123
124    <<runtime>> si:void_state_push
125    <<self>> poskleene_20
126    <<runtime>> si:voidvalue_part
127    <<self>> optional_23
128    <<runtime>> si:value_state_merge
129    return
130}
131
132<<def>> <<ns>>poskleene_20 {} {
133    # +
134    #     x
135    #         !
136    #             (X)
137    #         [xz]
138
139    <<runtime>> i_loc_push
140    <<self>> sequence_18
141    <<runtime>> si:kleene_abort
142    while {1} {
143        <<runtime>> si:void2_state_push
144    <<self>> sequence_18
145        <<runtime>> si:kleene_close
146    }
147    return
148}
149
150<<def>> <<ns>>sequence_18 {} {
151    # x
152    #     !
153    #         (X)
154    #     [xz]
155
156    <<runtime>> si:void_state_push
157    <<self>> notahead_15
158    <<runtime>> si:voidvoid_part
159    <<runtime>> si:next_class xz
160    <<runtime>> si:void_state_merge
161    return
162}
163
164<<def>> <<ns>>notahead_15 {} {
165    # !
166    #     (X)
167
168    <<runtime>> si:value_notahead_start
169    <<self>> sym_X
170    <<runtime>> si:value_notahead_exit
171    return
172}
173
174<<def>> <<ns>>optional_23 {} {
175    # ?
176    #     (X)
177
178    <<runtime>> si:void2_state_push
179    <<self>> sym_X
180    <<runtime>> si:void_state_merge_ok
181    return
182}
183
184#
185# value Symbol 'X'
186#
187
188<<def>> <<ns>>sym_X {} {
189    # 'x'
190
191    <<runtime>> si:void_symbol_start X
192    <<runtime>> si:next_char x
193    <<runtime>> si:void_leaf_symbol_end X
194    return
195}
196
197#
198#
199