1## -*- tcl -*-
2##
3## NX-based Tcl/PARAM implementation of the parsing
4## expression grammar
5##
6##	TEMPLATE
7##
8## Generated from file	TEST
9##            for user  unknown
10##
11# # ## ### ##### ######## ############# #####################
12## Requirements
13
14package require Tcl 8.5
15package require nx
16package require pt::rde::nx ; # NX-based implementation of the
17			      # PARAM virtual machine
18			      # underlying the Tcl/PARAM code
19			      # used below.
20
21# # ## ### ##### ######## ############# #####################
22##
23
24nx::Class create PARSER -superclasses pt::rde::nx {
25    # # ## ### ##### ######## #############
26    ## Public API
27
28    :public method parse {channel} {
29	:reset $channel
30	:MAIN ; # Entrypoint for the generated code.
31	return [:complete]
32    }
33
34    :public method parset {text} {
35	:reset {}
36	:data $text
37	:MAIN ; # Entrypoint for the generated code.
38	return [:complete]
39    }
40
41    # # ## ### ###### ######## #############
42    ## BEGIN of GENERATED CODE. DO NOT EDIT.
43
44    #
45    # Grammar Start Expression
46    #
47
48    :method MAIN {} {
49        : sym_eos
50        return
51    }
52
53    #
54    # value Symbol 'eos'
55    #
56
57    :method sym_eos {} {
58        # x
59        #     (ex)
60        #     *
61        #         x
62        #             +
63        #                 <space>
64        #             (ex)
65
66        : si:value_symbol_start eos
67        : sequence_11
68        : si:reduce_symbol_end eos
69        return
70    }
71
72    :method sequence_11 {} {
73        # x
74        #     (ex)
75        #     *
76        #         x
77        #             +
78        #                 <space>
79        #             (ex)
80
81        : si:value_state_push
82        : sym_ex
83        : si:valuevalue_part
84        : kleene_9
85        : si:value_state_merge
86        return
87    }
88
89    :method kleene_9 {} {
90        # *
91        #     x
92        #         +
93        #             <space>
94        #         (ex)
95
96        while {1} {
97            : si:void2_state_push
98        : sequence_7
99            : si:kleene_close
100        }
101        return
102    }
103
104    :method sequence_7 {} {
105        # x
106        #     +
107        #         <space>
108        #     (ex)
109
110        : si:void_state_push
111        : poskleene_4
112        : si:voidvalue_part
113        : sym_ex
114        : si:value_state_merge
115        return
116    }
117
118    :method poskleene_4 {} {
119        # +
120        #     <space>
121
122        : i_loc_push
123        : si:next_space
124        : si:kleene_abort
125        while {1} {
126            : si:void2_state_push
127        : si:next_space
128            : si:kleene_close
129        }
130        return
131    }
132
133    #
134    # value Symbol 'ex'
135    #
136
137    :method sym_ex {} {
138        # x
139        #     +
140        #         x
141        #             !
142        #                 (X)
143        #             [xz]
144        #     ?
145        #         (X)
146
147        : si:value_symbol_start ex
148        : sequence_25
149        : si:reduce_symbol_end ex
150        return
151    }
152
153    :method sequence_25 {} {
154        # x
155        #     +
156        #         x
157        #             !
158        #                 (X)
159        #             [xz]
160        #     ?
161        #         (X)
162
163        : si:void_state_push
164        : poskleene_20
165        : si:voidvalue_part
166        : optional_23
167        : si:value_state_merge
168        return
169    }
170
171    :method poskleene_20 {} {
172        # +
173        #     x
174        #         !
175        #             (X)
176        #         [xz]
177
178        : i_loc_push
179        : sequence_18
180        : si:kleene_abort
181        while {1} {
182            : si:void2_state_push
183        : sequence_18
184            : si:kleene_close
185        }
186        return
187    }
188
189    :method sequence_18 {} {
190        # x
191        #     !
192        #         (X)
193        #     [xz]
194
195        : si:void_state_push
196        : notahead_15
197        : si:voidvoid_part
198        : si:next_class xz
199        : si:void_state_merge
200        return
201    }
202
203    :method notahead_15 {} {
204        # !
205        #     (X)
206
207        : si:value_notahead_start
208        : sym_X
209        : si:value_notahead_exit
210        return
211    }
212
213    :method optional_23 {} {
214        # ?
215        #     (X)
216
217        : si:void2_state_push
218        : sym_X
219        : si:void_state_merge_ok
220        return
221    }
222
223    #
224    # value Symbol 'X'
225    #
226
227    :method sym_X {} {
228        # 'x'
229
230        : si:void_symbol_start X
231        : si:next_char x
232        : si:void_leaf_symbol_end X
233        return
234    }
235
236    ## END of GENERATED CODE. DO NOT EDIT.
237    # # ## ### ###### ######## #############
238}
239
240# # ## ### ##### ######## ############# #####################
241## Ready
242
243package provide NX_PACKAGE 1
244return
245