• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /macosx-10.10.1/tcl-105/tcl_ext/tcllib/tcllib/modules/pt/tests/data/ok/peg_tclparam-tcloo/
1## -*- tcl -*-
2##
3## OO-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 OO
16package require pt::rde::oo ; # OO-based implementation of the
17			      # PARAM virtual machine
18			      # underlying the Tcl/PARAM code
19			      # used below.
20
21# # ## ### ##### ######## ############# #####################
22##
23
24oo::class create PARSER {
25    # # ## ### ##### ######## #############
26    ## Public API
27
28    superclass pt::rde::oo ; # TODO - Define this class.
29                             # Or can we inherit from a snit
30                             # class too ?
31
32    method parse {channel} {
33	my reset $channel
34	my MAIN ; # Entrypoint for the generated code.
35	return [my complete]
36    }
37
38    method parset {text} {
39	my reset
40	my data $text
41	my MAIN ; # Entrypoint for the generated code.
42	return [my complete]
43    }
44
45    # # ## ### ###### ######## #############
46    ## BEGIN of GENERATED CODE. DO NOT EDIT.
47
48    #
49    # Grammar Start Expression
50    #
51    
52    method MAIN {} {
53        my sym_Expression
54        return
55    }
56    
57    #
58    # value Symbol 'AddOp'
59    #
60    
61    method sym_AddOp {} {
62        # [-+]
63    
64        my si:void_symbol_start AddOp
65        my si:next_class -+
66        my si:void_leaf_symbol_end AddOp
67        return
68    }
69    
70    #
71    # value Symbol 'Digit'
72    #
73    
74    method sym_Digit {} {
75        # [0123456789]
76    
77        my si:void_symbol_start Digit
78        my si:next_class 0123456789
79        my si:void_leaf_symbol_end Digit
80        return
81    }
82    
83    #
84    # value Symbol 'Expression'
85    #
86    
87    method sym_Expression {} {
88        # /
89        #     x
90        #         '\('
91        #         (Expression)
92        #         '\)'
93        #     x
94        #         (Factor)
95        #         *
96        #             x
97        #                 (MulOp)
98        #                 (Factor)
99    
100        my si:value_symbol_start Expression
101        my choice_20
102        my si:reduce_symbol_end Expression
103        return
104    }
105    
106    method choice_20 {} {
107        # /
108        #     x
109        #         '\('
110        #         (Expression)
111        #         '\)'
112        #     x
113        #         (Factor)
114        #         *
115        #             x
116        #                 (MulOp)
117        #                 (Factor)
118    
119        my si:value_state_push
120        my sequence_9
121        my si:valuevalue_branch
122        my sequence_18
123        my si:value_state_merge
124        return
125    }
126    
127    method sequence_9 {} {
128        # x
129        #     '\('
130        #     (Expression)
131        #     '\)'
132    
133        my si:void_state_push
134        my si:next_char \50
135        my si:voidvalue_part
136        my sym_Expression
137        my si:valuevalue_part
138        my si:next_char \51
139        my si:value_state_merge
140        return
141    }
142    
143    method sequence_18 {} {
144        # x
145        #     (Factor)
146        #     *
147        #         x
148        #             (MulOp)
149        #             (Factor)
150    
151        my si:value_state_push
152        my sym_Factor
153        my si:valuevalue_part
154        my kleene_16
155        my si:value_state_merge
156        return
157    }
158    
159    method kleene_16 {} {
160        # *
161        #     x
162        #         (MulOp)
163        #         (Factor)
164    
165        while {1} {
166            my si:void2_state_push
167        my sequence_14
168            my si:kleene_close
169        }
170        return
171    }
172    
173    method sequence_14 {} {
174        # x
175        #     (MulOp)
176        #     (Factor)
177    
178        my si:value_state_push
179        my sym_MulOp
180        my si:valuevalue_part
181        my sym_Factor
182        my si:value_state_merge
183        return
184    }
185    
186    #
187    # value Symbol 'Factor'
188    #
189    
190    method sym_Factor {} {
191        # x
192        #     (Term)
193        #     *
194        #         x
195        #             (AddOp)
196        #             (Term)
197    
198        my si:value_symbol_start Factor
199        my sequence_30
200        my si:reduce_symbol_end Factor
201        return
202    }
203    
204    method sequence_30 {} {
205        # x
206        #     (Term)
207        #     *
208        #         x
209        #             (AddOp)
210        #             (Term)
211    
212        my si:value_state_push
213        my sym_Term
214        my si:valuevalue_part
215        my kleene_28
216        my si:value_state_merge
217        return
218    }
219    
220    method kleene_28 {} {
221        # *
222        #     x
223        #         (AddOp)
224        #         (Term)
225    
226        while {1} {
227            my si:void2_state_push
228        my sequence_26
229            my si:kleene_close
230        }
231        return
232    }
233    
234    method sequence_26 {} {
235        # x
236        #     (AddOp)
237        #     (Term)
238    
239        my si:value_state_push
240        my sym_AddOp
241        my si:valuevalue_part
242        my sym_Term
243        my si:value_state_merge
244        return
245    }
246    
247    #
248    # value Symbol 'MulOp'
249    #
250    
251    method sym_MulOp {} {
252        # [*/]
253    
254        my si:void_symbol_start MulOp
255        my si:next_class */
256        my si:void_leaf_symbol_end MulOp
257        return
258    }
259    
260    #
261    # value Symbol 'Number'
262    #
263    
264    method sym_Number {} {
265        # x
266        #     ?
267        #         (Sign)
268        #     +
269        #         (Digit)
270    
271        my si:value_symbol_start Number
272        my sequence_41
273        my si:reduce_symbol_end Number
274        return
275    }
276    
277    method sequence_41 {} {
278        # x
279        #     ?
280        #         (Sign)
281        #     +
282        #         (Digit)
283    
284        my si:value_state_push
285        my optional_36
286        my si:valuevalue_part
287        my poskleene_39
288        my si:value_state_merge
289        return
290    }
291    
292    method optional_36 {} {
293        # ?
294        #     (Sign)
295    
296        my si:void2_state_push
297        my sym_Sign
298        my si:void_state_merge_ok
299        return
300    }
301    
302    method poskleene_39 {} {
303        # +
304        #     (Digit)
305    
306        my i_loc_push
307        my sym_Digit
308        my si:kleene_abort
309        while {1} {
310            my si:void2_state_push
311        my sym_Digit
312            my si:kleene_close
313        }
314        return
315    }
316    
317    #
318    # value Symbol 'Sign'
319    #
320    
321    method sym_Sign {} {
322        # [-+]
323    
324        my si:void_symbol_start Sign
325        my si:next_class -+
326        my si:void_leaf_symbol_end Sign
327        return
328    }
329    
330    #
331    # value Symbol 'Term'
332    #
333    
334    method sym_Term {} {
335        # (Number)
336    
337        my si:value_symbol_start Term
338        my sym_Number
339        my si:reduce_symbol_end Term
340        return
341    }
342    
343    ## END of GENERATED CODE. DO NOT EDIT.
344    # # ## ### ###### ######## #############
345}
346
347# # ## ### ##### ######## ############# #####################
348## Ready
349
350package provide OO_PACKAGE 1
351return
352