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