depager 0.2.3 → 0.3.0.b20160729

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +7 -0
  2. data/README.en +4 -19
  3. data/README.ja +42 -79
  4. data/bin/depager +42 -45
  5. data/examples/action_pl0d/pl0d.action.dr +421 -0
  6. data/examples/action_pl0d/test.pl0ds +49 -0
  7. data/examples/c89/c89.dr +493 -496
  8. data/examples/c89/test.c89 +10 -10
  9. data/examples/extension/astdf.rb +10 -0
  10. data/examples/extension/atree.dr +55 -0
  11. data/examples/{sample_calc → extension}/calc.atree.dr +42 -43
  12. data/examples/extension/calc.simple_action.dr +33 -0
  13. data/examples/extension/paction.dr +16 -15
  14. data/examples/extension/pactiontest.dr +14 -14
  15. data/examples/extension/simple_action.rb +44 -0
  16. data/examples/pl0d/pl0ds.dr +337 -334
  17. data/examples/pl0d/test.pl0ds +33 -33
  18. data/examples/rie_calc/calc.rie.dr +57 -0
  19. data/examples/rie_calc/test.calc +4 -0
  20. data/examples/rie_dcuse/dcuse.rie.dr +71 -0
  21. data/examples/rie_dcuse/test.dcuse +1 -0
  22. data/examples/rie_pl0/orig_ex/exerrdg.pl0 +44 -0
  23. data/examples/rie_pl0/orig_ex/exerrm.pl0 +19 -0
  24. data/examples/rie_pl0/orig_ex/exerrmre.pl0 +20 -0
  25. data/examples/rie_pl0/orig_ex/exerrtok.pl0 +18 -0
  26. data/examples/rie_pl0/orig_ex/exmdg.pl0 +40 -0
  27. data/examples/rie_pl0/orig_ex/exmdgwwl.pl0 +43 -0
  28. data/examples/rie_pl0/orig_ex/exmrw.pl0 +22 -0
  29. data/examples/rie_pl0/orig_ex/exmwwl.pl0 +18 -0
  30. data/examples/rie_pl0/orig_ex/exnorw.pl0 +17 -0
  31. data/examples/rie_pl0/pl0.rie.dr +450 -0
  32. data/examples/rie_pl0/test.pl0 +10 -0
  33. data/examples/sample_calc/calc.action.dr +33 -33
  34. data/examples/sample_calc/calc.ast.action.dr +65 -66
  35. data/examples/sample_calc/calc.ast.dr +55 -55
  36. data/examples/sample_calc/calc.cst.dr +45 -45
  37. data/examples/sample_calc/calc.dr +43 -43
  38. data/examples/sample_calc/calc.lex.dr +29 -29
  39. data/examples/sample_calc/{calc_prec.nvaction.dr → calc_prec.action.dr} +31 -31
  40. data/examples/slex_test/divreg.slex.dr +29 -29
  41. data/examples/slex_test/ljoin.slex.dr +36 -36
  42. data/examples/slex_test/test.divreg +1 -1
  43. data/examples/slex_test/test.ljoin +3 -3
  44. data/lib/depager.rb +582 -670
  45. data/lib/depager/grammar.rb +256 -291
  46. data/lib/depager/lr.rb +574 -579
  47. data/lib/depager/parser.rb +282 -277
  48. data/lib/depager/ruby/plugins/_rie_debug.rb +35 -0
  49. data/lib/depager/ruby/plugins/action.rb +53 -43
  50. data/lib/depager/ruby/plugins/ast.dr +364 -269
  51. data/lib/depager/ruby/plugins/ast.rb +1367 -1308
  52. data/lib/depager/ruby/plugins/cst.dr +172 -180
  53. data/lib/depager/ruby/plugins/cst.rb +587 -626
  54. data/lib/depager/ruby/plugins/lex.dr +85 -89
  55. data/lib/depager/ruby/plugins/lex.rb +310 -336
  56. data/lib/depager/ruby/plugins/rie.dr +723 -0
  57. data/lib/depager/ruby/plugins/rie.rb +1653 -0
  58. data/lib/depager/ruby/plugins/slex.dr +202 -200
  59. data/lib/depager/ruby/plugins/slex.rb +780 -817
  60. data/lib/depager/ruby/plugins/srp.rb +56 -51
  61. data/lib/depager/ruby/templates/extension_lalr_master.erb +46 -51
  62. data/lib/depager/ruby/templates/extension_lalr_slave.erb +99 -107
  63. data/lib/depager/ruby/templates/single_lalr_parser.erb +115 -117
  64. data/lib/depager/utils.rb +148 -318
  65. data/lib/depager/version.rb +4 -3
  66. metadata +52 -60
  67. data/ChangeLog +0 -16
  68. data/data/depager/pre-setup.rb +0 -3
  69. data/examples/c89/c89.tab.rb +0 -7127
  70. data/examples/pl0d/pl0ds.tab.rb +0 -2698
  71. data/examples/sample_calc/calc.action.tab.rb +0 -457
  72. data/examples/sample_calc/calc.ast.action.tab.rb +0 -749
  73. data/examples/sample_calc/calc.ast.tab.rb +0 -665
  74. data/examples/sample_calc/calc.astdf.dr +0 -54
  75. data/examples/sample_calc/calc.astdf.tab.rb +0 -672
  76. data/examples/sample_calc/calc.atree.tab.rb +0 -451
  77. data/examples/sample_calc/calc.cst.tab.rb +0 -644
  78. data/examples/sample_calc/calc.lex.tab.rb +0 -374
  79. data/examples/sample_calc/calc.nvaction.dr +0 -33
  80. data/examples/sample_calc/calc.nvaction.tab.rb +0 -465
  81. data/examples/sample_calc/calc.tab.rb +0 -365
  82. data/examples/sample_calc/calc_prec.nvaction.tab.rb +0 -431
  83. data/examples/slex_test/divreg.slex.tab.rb +0 -303
  84. data/examples/slex_test/ljoin.slex.tab.rb +0 -370
  85. data/lib/depager/ruby/plugins/_ast_tmpl.rb +0 -73
  86. data/lib/depager/ruby/plugins/astdf.rb +0 -6
  87. data/lib/depager/ruby/plugins/atree.dr +0 -55
  88. data/lib/depager/ruby/plugins/atree.rb +0 -347
  89. data/lib/depager/ruby/plugins/nvaction.rb +0 -19
  90. data/lib/depager/ruby/templates/simple.erb +0 -23
  91. data/setup.rb +0 -1585
@@ -1,303 +0,0 @@
1
-
2
- begin; require 'rubygems'; rescue Exception; end
3
- require 'depager/parser.rb'
4
-
5
-
6
- module Depager::DecoratorUtils; end
7
- module D4StatefulLexerTest1; end
8
-
9
- class StatefulLexerTest1 < Depager::LALR::Basis
10
-
11
-
12
- ### Reduce Table
13
- reduce_table = [
14
- [ -1, 1 ], # ( 0) $start : expr
15
- [ 0, 4 ], # ( 1) expr : expr '/' __expr_0_2__ fact
16
- [ 0, 1 ], # ( 2) expr : fact
17
- [ 2, 0 ], # ( 3) __expr_0_2__ :
18
- [ 1, 1 ], # ( 4) fact : REGEXP
19
- ]
20
- ### Extension Params
21
- nparams = {
22
- 'NVAction' => 3,
23
- 'StatefulLexer' => 2,
24
- }
25
- ### Term to Int
26
- t2i = {
27
- nil => 0,
28
- false => 1,
29
- "/" => 2,
30
- :REGEXP => 3,
31
- }
32
- ### Int to Term
33
- i2t = [
34
- nil,
35
- false,
36
- "/",
37
- :REGEXP,
38
- ]
39
- ### Action Table
40
- action_table = [
41
- [ nil, nil, nil, 2, ],
42
- [ ACC, nil, 4, nil, ],
43
- [ nil, nil, nil, nil, ],
44
- [ nil, nil, nil, nil, ],
45
- [ nil, nil, nil, nil, ],
46
- [ nil, nil, nil, 2, ],
47
- [ nil, nil, nil, nil, ],
48
- ]
49
- ### Default Reduce Table
50
- defred_table = [
51
- nil,
52
- nil,
53
- -4,
54
- -2,
55
- -3,
56
- nil,
57
- -1,
58
- ]
59
- defred_after_shift_table = [
60
- nil,
61
- nil,
62
- -4,
63
- -2,
64
- -3,
65
- nil,
66
- -1,
67
- ]
68
- ### Nonterm to Int
69
- nt2i = {
70
- :expr => 0,
71
- :fact => 1,
72
- :__expr_0_2__ => 2,
73
- }
74
- ### Int to Nonterm
75
- i2nt = [
76
- :expr,
77
- :fact,
78
- :__expr_0_2__,
79
- ]
80
- ### Goto Table
81
- goto_table = [
82
- [ 1, 3, nil, ],
83
- [ nil, nil, nil, ],
84
- [ nil, nil, nil, ],
85
- [ nil, nil, nil, ],
86
- [ nil, nil, 5, ],
87
- [ nil, 6, nil, ],
88
- [ nil, nil, nil, ],
89
- ]
90
-
91
-
92
- alias orig_error error
93
- def error
94
- orig_error
95
- warn "current state: #{StateInfo[@stack.last]}"
96
- end
97
-
98
- ### States
99
- StateInfo = [
100
- <<'----------',
101
- I000 =
102
- ( 0) $start : _ expr
103
-
104
- REGEXP shift, and goto to state 2
105
-
106
-
107
- ----------
108
-
109
- <<'----------',
110
- I001 =
111
- ( 0) $start : expr _
112
- ( 1) expr : expr _ '/' __expr_0_2__ fact
113
-
114
- '/' shift, and goto to state 4
115
-
116
-
117
- $end accept
118
-
119
- ----------
120
-
121
- <<'----------',
122
- I002 =
123
- ( 4) fact : REGEXP _
124
-
125
-
126
- $default reduce using rule 4 (fact) [after shift]
127
-
128
- ----------
129
-
130
- <<'----------',
131
- I003 =
132
- ( 2) expr : fact _
133
-
134
-
135
- $default reduce using rule 2 (expr) [after shift]
136
-
137
- ----------
138
-
139
- <<'----------',
140
- I004 =
141
- ( 1) expr : expr '/' _ __expr_0_2__ fact
142
-
143
-
144
- $default reduce using rule 3 (__expr_0_2__) [after shift]
145
-
146
- ----------
147
-
148
- <<'----------',
149
- I005 =
150
- ( 1) expr : expr '/' __expr_0_2__ _ fact
151
-
152
- REGEXP shift, and goto to state 2
153
-
154
-
155
- ----------
156
-
157
- <<'----------',
158
- I006 =
159
- ( 1) expr : expr '/' __expr_0_2__ fact _
160
-
161
-
162
- $default reduce using rule 1 (expr) [after shift]
163
-
164
- ----------
165
- ]
166
-
167
-
168
- Tables = [ reduce_table, nparams, action_table,
169
- defred_table, defred_after_shift_table, goto_table,
170
- t2i, i2t, nt2i, i2nt ]
171
-
172
- def self.createDecoratedParser
173
- D4StatefulLexerTest1::StatefulLexer.new(D4StatefulLexerTest1::NVAction.new(StatefulLexerTest1.new()))
174
- end
175
-
176
- ### Inner Code
177
-
178
- def lex_START(&block)
179
- case @line
180
-
181
- when /\A\s+/
182
- @oldline = @line; @line = $'
183
-
184
-
185
-
186
- when /\A\/(([^\/\\]+|\\.)*)\//
187
- @oldline = @line; @line = $'
188
- yield token(:REGEXP, $&)
189
-
190
-
191
- when /\A./
192
- @oldline = @line; @line = $'
193
- yield token($&, $&)
194
-
195
-
196
- else
197
- raise RuntimeError, "must not happen #{@line}"
198
- end
199
- end
200
-
201
- def lex_OPMODE(&block)
202
- case @line
203
-
204
- when /\A\//
205
- @oldline = @line; @line = $'
206
- yield token($&, $&)
207
-
208
-
209
- else
210
- lex_START(&block)
211
- end
212
- end
213
-
214
- attr_accessor :lex_state, :lex_context
215
- def lex(&block)
216
- @lex_state ||= :START
217
- @lex_context ||= {}
218
- begin
219
- until @line.empty?
220
- self.send "lex_#{@lex_state}", &block
221
- end
222
- end while @line0 = @line = getline
223
- yield nil, nil
224
- end
225
-
226
- end
227
-
228
- ### Outer Code
229
-
230
- class D4StatefulLexerTest1::StatefulLexer < Depager::LALR::Action #:nodoc:all
231
- include Depager::DecoratorUtils
232
-
233
- on_reduce = [
234
- nil,
235
- nil,
236
- nil,
237
- :_lex_expr_0_2,
238
- :_lex_fact_0_1,
239
-
240
- ]
241
- Tables = [on_reduce]
242
- def initialize inside
243
- super inside, 'StatefulLexer'
244
- @on_reduce, = self.class::Tables
245
- init_parser
246
- end
247
-
248
-
249
- def _lex_expr_0_2 val
250
- @basis.lex_state = :START;warn 'MODE:->:START'
251
- end
252
-
253
- def _lex_fact_0_1 val
254
- @basis.lex_state = :OPMODE;warn 'MODE:->:OPMODE'
255
- end
256
-
257
- def afterError
258
- warn "StatefulLex: lex_state==#{@basis.lex_state}" if $MP_DEBUG
259
- end
260
-
261
- end
262
-
263
- class D4StatefulLexerTest1::NVAction < Depager::LALR::Action #:nodoc:all
264
- include Depager::DecoratorUtils
265
-
266
- on_reduce = [
267
- nil,
268
- nil,
269
- nil,
270
- nil,
271
- :_act_3,
272
-
273
- ]
274
- Tables = [on_reduce]
275
- def initialize inside
276
- super inside, 'NVAction'
277
- @on_reduce, = self.class::Tables
278
- init_parser
279
- end
280
-
281
-
282
- module_eval <<-'.,.,122745804061258.,.,', 'slex_test/divreg.slex.dr', 22
283
- def _act_3 val
284
- _REGEXP, = *val
285
- warn "REGEXP: #{_REGEXP.value}"
286
-
287
- end
288
- .,.,122745804061258.,.,
289
-
290
- end
291
-
292
-
293
- def createDecoratedStatefulLexerTest1
294
- D4StatefulLexerTest1::StatefulLexer.new(D4StatefulLexerTest1::NVAction.new(StatefulLexerTest1.new()))
295
- end
296
-
297
- ### main
298
- if __FILE__ == $0
299
- ### Main Code
300
- p = createDecoratedStatefulLexerTest1
301
- p.parse(STDIN)
302
-
303
- end
@@ -1,370 +0,0 @@
1
-
2
- begin; require 'rubygems'; rescue Exception; end
3
- require 'depager/parser.rb'
4
-
5
-
6
- module Depager::DecoratorUtils; end
7
- module D4StatefulLexerTest2; end
8
-
9
- class StatefulLexerTest2 < Depager::LALR::Basis
10
-
11
-
12
- ### Reduce Table
13
- reduce_table = [
14
- [ -1, 1 ], # ( 0) $start : stmts
15
- [ 0, 0 ], # ( 1) stmts :
16
- [ 0, 3 ], # ( 2) stmts : stmts expr EOL
17
- [ 1, 4 ], # ( 3) expr : expr '+' __expr_0_2__ fact
18
- [ 1, 1 ], # ( 4) expr : fact
19
- [ 3, 0 ], # ( 5) __expr_0_2__ :
20
- [ 2, 1 ], # ( 6) fact : ID
21
- ]
22
- ### Extension Params
23
- nparams = {
24
- 'NVAction' => 3,
25
- 'StatefulLexer' => 2,
26
- }
27
- ### Term to Int
28
- t2i = {
29
- nil => 0,
30
- false => 1,
31
- :EOL => 2,
32
- "+" => 3,
33
- :ID => 4,
34
- }
35
- ### Int to Term
36
- i2t = [
37
- nil,
38
- false,
39
- :EOL,
40
- "+",
41
- :ID,
42
- ]
43
- ### Action Table
44
- action_table = [
45
- [ nil, nil, nil, nil, nil, ],
46
- [ ACC, nil, nil, nil, 4, ],
47
- [ nil, nil, 5, 6, nil, ],
48
- [ nil, nil, nil, nil, nil, ],
49
- [ nil, nil, nil, nil, nil, ],
50
- [ nil, nil, nil, nil, nil, ],
51
- [ nil, nil, nil, nil, nil, ],
52
- [ nil, nil, nil, nil, 4, ],
53
- [ nil, nil, nil, nil, nil, ],
54
- ]
55
- ### Default Reduce Table
56
- defred_table = [
57
- -1,
58
- nil,
59
- nil,
60
- -4,
61
- -6,
62
- -2,
63
- -5,
64
- nil,
65
- -3,
66
- ]
67
- defred_after_shift_table = [
68
- -1,
69
- nil,
70
- nil,
71
- -4,
72
- -6,
73
- -2,
74
- -5,
75
- nil,
76
- -3,
77
- ]
78
- ### Nonterm to Int
79
- nt2i = {
80
- :stmts => 0,
81
- :expr => 1,
82
- :fact => 2,
83
- :__expr_0_2__ => 3,
84
- }
85
- ### Int to Nonterm
86
- i2nt = [
87
- :stmts,
88
- :expr,
89
- :fact,
90
- :__expr_0_2__,
91
- ]
92
- ### Goto Table
93
- goto_table = [
94
- [ 1, nil, nil, nil, ],
95
- [ nil, 2, 3, nil, ],
96
- [ nil, nil, nil, nil, ],
97
- [ nil, nil, nil, nil, ],
98
- [ nil, nil, nil, nil, ],
99
- [ nil, nil, nil, nil, ],
100
- [ nil, nil, nil, 7, ],
101
- [ nil, nil, 8, nil, ],
102
- [ nil, nil, nil, nil, ],
103
- ]
104
-
105
-
106
- alias orig_error error
107
- def error
108
- orig_error
109
- warn "current state: #{StateInfo[@stack.last]}"
110
- end
111
-
112
- ### States
113
- StateInfo = [
114
- <<'----------',
115
- I000 =
116
- ( 0) $start : _ stmts
117
-
118
-
119
- $default reduce using rule 1 (stmts) [after shift]
120
-
121
- ----------
122
-
123
- <<'----------',
124
- I001 =
125
- ( 0) $start : stmts _
126
- ( 2) stmts : stmts _ expr EOL
127
-
128
- ID shift, and goto to state 4
129
-
130
-
131
- $end accept
132
-
133
- ----------
134
-
135
- <<'----------',
136
- I002 =
137
- ( 2) stmts : stmts expr _ EOL
138
- ( 3) expr : expr _ '+' __expr_0_2__ fact
139
-
140
- EOL shift, and goto to state 5
141
- '+' shift, and goto to state 6
142
-
143
-
144
- ----------
145
-
146
- <<'----------',
147
- I003 =
148
- ( 4) expr : fact _
149
-
150
-
151
- $default reduce using rule 4 (expr) [after shift]
152
-
153
- ----------
154
-
155
- <<'----------',
156
- I004 =
157
- ( 6) fact : ID _
158
-
159
-
160
- $default reduce using rule 6 (fact) [after shift]
161
-
162
- ----------
163
-
164
- <<'----------',
165
- I005 =
166
- ( 2) stmts : stmts expr EOL _
167
-
168
-
169
- $default reduce using rule 2 (stmts) [after shift]
170
-
171
- ----------
172
-
173
- <<'----------',
174
- I006 =
175
- ( 3) expr : expr '+' _ __expr_0_2__ fact
176
-
177
-
178
- $default reduce using rule 5 (__expr_0_2__) [after shift]
179
-
180
- ----------
181
-
182
- <<'----------',
183
- I007 =
184
- ( 3) expr : expr '+' __expr_0_2__ _ fact
185
-
186
- ID shift, and goto to state 4
187
-
188
-
189
- ----------
190
-
191
- <<'----------',
192
- I008 =
193
- ( 3) expr : expr '+' __expr_0_2__ fact _
194
-
195
-
196
- $default reduce using rule 3 (expr) [after shift]
197
-
198
- ----------
199
- ]
200
-
201
-
202
- Tables = [ reduce_table, nparams, action_table,
203
- defred_table, defred_after_shift_table, goto_table,
204
- t2i, i2t, nt2i, i2nt ]
205
-
206
- def self.createDecoratedParser
207
- D4StatefulLexerTest2::StatefulLexer.new(D4StatefulLexerTest2::NVAction.new(StatefulLexerTest2.new()))
208
- end
209
-
210
- ### Inner Code
211
-
212
- def lex_START(&block)
213
- case @line
214
-
215
- when /\A[ \t]+/
216
- @oldline = @line; @line = $'
217
-
218
-
219
-
220
- when /\A\n/
221
- @oldline = @line; @line = $'
222
- yield token(:EOL, $&)
223
-
224
-
225
- when /\A\w+/
226
- @oldline = @line; @line = $'
227
- yield token(:ID, $&)
228
-
229
-
230
- when /\A./
231
- @oldline = @line; @line = $'
232
- yield token($&, $&)
233
-
234
-
235
- else
236
- raise RuntimeError, "must not happen #{@line}"
237
- end
238
- end
239
-
240
- def lex_LCONT(&block)
241
- case @line
242
-
243
- when /\A\r?\n/
244
- @oldline = @line; @line = $'
245
-
246
-
247
-
248
- else
249
- lex_START(&block)
250
- end
251
- end
252
-
253
- attr_accessor :lex_state, :lex_context
254
- def lex(&block)
255
- @lex_state ||= :START
256
- @lex_context ||= {}
257
- begin
258
- until @line.empty?
259
- self.send "lex_#{@lex_state}", &block
260
- end
261
- end while @line0 = @line = getline
262
- yield nil, nil
263
- end
264
-
265
- end
266
-
267
- ### Outer Code
268
-
269
- class D4StatefulLexerTest2::StatefulLexer < Depager::LALR::Action #:nodoc:all
270
- include Depager::DecoratorUtils
271
-
272
- on_reduce = [
273
- nil,
274
- nil,
275
- nil,
276
- nil,
277
- nil,
278
- :_lex_expr_0_2,
279
- :_lex_fact_0_1,
280
-
281
- ]
282
- Tables = [on_reduce]
283
- def initialize inside
284
- super inside, 'StatefulLexer'
285
- @on_reduce, = self.class::Tables
286
- init_parser
287
- end
288
-
289
-
290
- def _lex_expr_0_2 val
291
- @basis.lex_state = :LCONT
292
- end
293
-
294
- def _lex_fact_0_1 val
295
- @basis.lex_state = :START
296
- end
297
-
298
- def afterError
299
- warn "StatefulLex: lex_state==#{@basis.lex_state}" if $MP_DEBUG
300
- end
301
-
302
- end
303
-
304
- class D4StatefulLexerTest2::NVAction < Depager::LALR::Action #:nodoc:all
305
- include Depager::DecoratorUtils
306
-
307
- on_reduce = [
308
- nil,
309
- nil,
310
- :_act_1,
311
- :_act_2,
312
- :_act_3,
313
- nil,
314
- :_act_5,
315
-
316
- ]
317
- Tables = [on_reduce]
318
- def initialize inside
319
- super inside, 'NVAction'
320
- @on_reduce, = self.class::Tables
321
- init_parser
322
- end
323
-
324
-
325
- module_eval <<-'.,.,12274580401395.,.,', 'slex_test/ljoin.slex.dr', 19
326
- def _act_1 val
327
- _stmts, _expr, _EOL, = *val
328
- warn "#{_expr} <EOL>:#{@lexstate}"
329
-
330
- end
331
- .,.,12274580401395.,.,
332
-
333
- module_eval <<-'.,.,1227458040182.,.,', 'slex_test/ljoin.slex.dr', 23
334
- def _act_2 val
335
- _expr, _, ___expr_0_2__, _fact, = *val
336
- "#{_expr} + #{_fact}"
337
-
338
- end
339
- .,.,1227458040182.,.,
340
-
341
- module_eval <<-'.,.,122745804061311.,.,', 'slex_test/ljoin.slex.dr', 25
342
- def _act_3 val
343
- _fact, = *val
344
- _fact
345
-
346
- end
347
- .,.,122745804061311.,.,
348
-
349
- module_eval <<-'.,.,122745804033944.,.,', 'slex_test/ljoin.slex.dr', 29
350
- def _act_5 val
351
- _ID, = *val
352
- _ID.value
353
-
354
- end
355
- .,.,122745804033944.,.,
356
-
357
- end
358
-
359
-
360
- def createDecoratedStatefulLexerTest2
361
- D4StatefulLexerTest2::StatefulLexer.new(D4StatefulLexerTest2::NVAction.new(StatefulLexerTest2.new()))
362
- end
363
-
364
- ### main
365
- if __FILE__ == $0
366
- ### Main Code
367
- p = createDecoratedStatefulLexerTest2
368
- p.parse(STDIN)
369
-
370
- end