depager 0.2.3 → 0.3.0.b20250423

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +44 -0
  3. data/.simplecov +5 -0
  4. data/Gemfile +12 -0
  5. data/LICENSE.gpl +339 -0
  6. data/Manifest.txt +73 -0
  7. data/README.en +7 -21
  8. data/README.ja +19 -99
  9. data/Rakefile +31 -0
  10. data/bin/depager +7 -45
  11. data/examples/action_pl0d/pl0d.action.dr +421 -0
  12. data/examples/action_pl0d/test.pl0ds +48 -0
  13. data/examples/c89/c89.dr +493 -496
  14. data/examples/c89/test.c89 +10 -10
  15. data/examples/extension/astdf.rb +9 -0
  16. data/examples/extension/atree.dr +55 -0
  17. data/examples/{sample_calc → extension}/calc.atree.dr +42 -43
  18. data/examples/{sample_calc/calc.action.dr → extension/calc.simple_action.dr} +33 -33
  19. data/examples/extension/paction.dr +16 -15
  20. data/examples/extension/pactiontest.dr +14 -14
  21. data/examples/extension/simple_action.rb +46 -0
  22. data/examples/pl0d/pl0ds.dr +337 -334
  23. data/examples/pl0d/test.pl0ds +33 -33
  24. data/examples/rie_calc/calc.rie.dr +57 -0
  25. data/examples/rie_calc/test.calc +4 -0
  26. data/examples/rie_dcuse/dcuse.rie.dr +71 -0
  27. data/examples/rie_dcuse/test.dcuse +1 -0
  28. data/examples/rie_pl0/orig_ex/exerrdg.pl0 +44 -0
  29. data/examples/rie_pl0/orig_ex/exerrm.pl0 +19 -0
  30. data/examples/rie_pl0/orig_ex/exerrmre.pl0 +20 -0
  31. data/examples/rie_pl0/orig_ex/exerrtok.pl0 +18 -0
  32. data/examples/rie_pl0/orig_ex/exmdg.pl0 +40 -0
  33. data/examples/rie_pl0/orig_ex/exmdgwwl.pl0 +43 -0
  34. data/examples/rie_pl0/orig_ex/exmrw.pl0 +22 -0
  35. data/examples/rie_pl0/orig_ex/exmwwl.pl0 +18 -0
  36. data/examples/rie_pl0/orig_ex/exnorw.pl0 +17 -0
  37. data/examples/rie_pl0/pl0.rie.dr +450 -0
  38. data/examples/rie_pl0/test.pl0 +10 -0
  39. data/examples/slex_test/divreg.slex.dr +29 -29
  40. data/examples/slex_test/ljoin.slex.dr +36 -36
  41. data/examples/slex_test/test.divreg +1 -1
  42. data/examples/slex_test/test.ljoin +3 -3
  43. data/examples/{sample_calc/calc.nvaction.dr → tiny_calc/calc.action.dr} +33 -33
  44. data/examples/{sample_calc → tiny_calc}/calc.ast.action.dr +76 -66
  45. data/examples/{sample_calc → tiny_calc}/calc.ast.dr +67 -55
  46. data/examples/tiny_calc/calc.cst.dr +50 -0
  47. data/examples/{sample_calc → tiny_calc}/calc.dr +43 -43
  48. data/examples/{sample_calc → tiny_calc}/calc.lex.dr +29 -29
  49. data/examples/{sample_calc/calc_prec.nvaction.dr → tiny_calc/calc_prec.action.dr} +31 -31
  50. data/lib/depager/cli.rb +44 -0
  51. data/lib/depager/grammar.rb +253 -291
  52. data/lib/depager/lr.rb +589 -579
  53. data/lib/depager/parser.rb +269 -277
  54. data/lib/depager/plugins/_rie_debug.rb +63 -0
  55. data/lib/depager/plugins/action.rb +47 -0
  56. data/lib/depager/plugins/ast.dr +367 -0
  57. data/lib/depager/plugins/ast.rb +1329 -0
  58. data/lib/depager/{ruby/plugins → plugins}/cst.dr +174 -180
  59. data/lib/depager/plugins/cst.rb +591 -0
  60. data/lib/depager/{ruby/plugins → plugins}/lex.dr +85 -89
  61. data/lib/depager/plugins/lex.rb +313 -0
  62. data/lib/depager/plugins/rie.dr +725 -0
  63. data/lib/depager/plugins/rie.rb +1614 -0
  64. data/lib/depager/{ruby/plugins → plugins}/slex.dr +201 -200
  65. data/lib/depager/plugins/slex.rb +769 -0
  66. data/lib/depager/plugins/srp.rb +46 -0
  67. data/lib/depager/ruby/templates/extension_lalr_master.erb +40 -51
  68. data/lib/depager/ruby/templates/extension_lalr_slave.erb +113 -107
  69. data/lib/depager/ruby/templates/single_lalr_parser.erb +124 -117
  70. data/lib/depager/utils.rb +158 -318
  71. data/lib/depager/version.rb +3 -3
  72. data/lib/depager.rb +572 -670
  73. metadata +77 -80
  74. data/ChangeLog +0 -16
  75. data/data/depager/pre-setup.rb +0 -3
  76. data/examples/c89/c89.tab.rb +0 -7127
  77. data/examples/pl0d/pl0ds.tab.rb +0 -2698
  78. data/examples/sample_calc/calc.action.tab.rb +0 -457
  79. data/examples/sample_calc/calc.ast.action.tab.rb +0 -749
  80. data/examples/sample_calc/calc.ast.tab.rb +0 -665
  81. data/examples/sample_calc/calc.astdf.dr +0 -54
  82. data/examples/sample_calc/calc.astdf.tab.rb +0 -672
  83. data/examples/sample_calc/calc.atree.tab.rb +0 -451
  84. data/examples/sample_calc/calc.cst.dr +0 -45
  85. data/examples/sample_calc/calc.cst.tab.rb +0 -644
  86. data/examples/sample_calc/calc.lex.tab.rb +0 -374
  87. data/examples/sample_calc/calc.nvaction.tab.rb +0 -465
  88. data/examples/sample_calc/calc.tab.rb +0 -365
  89. data/examples/sample_calc/calc_prec.nvaction.tab.rb +0 -431
  90. data/examples/slex_test/divreg.slex.tab.rb +0 -303
  91. data/examples/slex_test/ljoin.slex.tab.rb +0 -370
  92. data/lib/depager/ruby/plugins/_ast_tmpl.rb +0 -73
  93. data/lib/depager/ruby/plugins/action.rb +0 -43
  94. data/lib/depager/ruby/plugins/ast.dr +0 -269
  95. data/lib/depager/ruby/plugins/ast.rb +0 -1308
  96. data/lib/depager/ruby/plugins/astdf.rb +0 -6
  97. data/lib/depager/ruby/plugins/atree.dr +0 -55
  98. data/lib/depager/ruby/plugins/atree.rb +0 -347
  99. data/lib/depager/ruby/plugins/cst.rb +0 -626
  100. data/lib/depager/ruby/plugins/lex.rb +0 -336
  101. data/lib/depager/ruby/plugins/nvaction.rb +0 -19
  102. data/lib/depager/ruby/plugins/slex.rb +0 -817
  103. data/lib/depager/ruby/plugins/srp.rb +0 -51
  104. data/lib/depager/ruby/templates/simple.erb +0 -23
  105. data/setup.rb +0 -1585
  106. /data/examples/{sample_calc → tiny_calc}/test.calc +0 -0
@@ -1,817 +0,0 @@
1
-
2
- ###
3
- ### StatefulLexerExtension - Depager Extension (master)
4
- ###
5
- require 'pp.rb'
6
- require 'depager/parser.rb'
7
-
8
-
9
- module D4StatefulLexerExtension #:nodoc:all
10
- end
11
-
12
- class StatefulLexerExtension #:nodoc:all
13
- include Depager::ExtensionUtils
14
-
15
- attr_accessor :h2p
16
-
17
- def initialize
18
- @master = self
19
- @hook = []
20
- @h2p = {}
21
- init_parser
22
- end
23
-
24
- def __regext__ p
25
- super p, :default, nil
26
-
27
- @hook[0] = StatefulLexerExtension_pre_rhs__post_symbol.new(p, @nparam, self)
28
- @h2p['pre_rhs__post_symbol'] = @hook[0]
29
- p.hooks[:post_symbol].push [@hook[0], :do_parse]
30
-
31
- @hook[1] = StatefulLexerExtension_pre_rule_list.new(p, @nparam, self)
32
- @h2p['pre_rule_list'] = @hook[1]
33
- p.hooks[:pre_rule_list].push [@hook[1], :do_parse]
34
-
35
- # use @hook[0](StatefulLexerExtension_pre_rhs__post_symbol)
36
- p.hooks[:pre_rhs].push [@hook[0], :do_parse]
37
-
38
- regext p
39
- end
40
-
41
- ### Inner Code
42
- attr_accessor :ins, :code, :optval
43
- def init_parser
44
- super
45
- @ins = []
46
- @optouter = []
47
- @on_reduce = []
48
- @addition = []
49
- end
50
- def post_rule_list
51
- @optouter << %{
52
- def afterError
53
- warn "StatefulLex: lex_state==\#{@basis.lex_state}" if $MP_DEBUG
54
- end
55
- }
56
- g_parser.optouter <<
57
- gen_action_decorator_code(target_name, paramkey,
58
- @on_reduce, @optouter)
59
- end
60
- def post_rhs
61
- j = 0
62
- rhs = g_parser.rhs
63
- @ins.each do |i, option_list, debug|
64
- state_name = "#{lhs_name}_#{nrhs}_#{i}"
65
- m_name = "_lex_#{state_name}"
66
- if i != rhs.size
67
- nt_name = "__#{state_name}__"
68
- isym = g_parser.add_nonterm(nt_name)
69
- g_parser.rhs_insert_sym(i+j, isym, nt_name)
70
- @addition << [ isym, m_name ]
71
- j += 1
72
- else
73
- @on_reduce[nrules] = ':'+m_name
74
- end
75
-
76
- codes = option_list.map do |k, m|
77
- case k
78
- when :GOTO
79
- "@basis.lex_state = #{m}" <<
80
- (debug ? ";warn 'MODE:->#{m}'" : '')
81
- when :ADD
82
- "@basis.lex_context[#{m}] = true" <<
83
- (debug ? ";warn 'CONTEXT:+#{m}/\#{@context.inspect}'" : '')
84
- when :SUB
85
- "@basis.lex_context.delete #{m}" <<
86
- (debug ? ";warn 'CONTEXT:-#{m}'/\#{@context.inspect}" : '')
87
- else
88
- end
89
- end
90
- @optouter.push << %{
91
- def #{m_name} val
92
- #{codes.join("\n ")}
93
- end
94
- }
95
- end
96
- @ins.clear
97
- end
98
- def post_rhs_list
99
- @addition.each do |isym, m_name|
100
- g_parser.add_rule isym, []
101
- @on_reduce[nrules] = ':'+m_name
102
- end
103
- @addition.clear
104
- end
105
-
106
- end
107
-
108
- ### Outer Code
109
-
110
- ###
111
- ### StatefulLexerExtension_pre_rule_list - Part of Depager Extension (slave)
112
- ###
113
- module D4StatefulLexerExtension_pre_rule_list #:nodoc:all
114
- end
115
-
116
- class StatefulLexerExtension_pre_rule_list < Depager::LALR::Basis #:nodoc:all
117
- include Depager::ExtensionUtils
118
-
119
-
120
- ### Reduce Table
121
- reduce_table = [
122
- [ -1, 1 ],
123
- [ 0, 1 ],
124
- [ 1, 0 ],
125
- [ 1, 3 ],
126
- [ 2, 4 ],
127
- [ 4, 0 ],
128
- [ 4, 2 ],
129
- [ 3, 1 ],
130
- [ 3, 2 ],
131
- [ 5, 3 ],
132
- [ 7, 0 ],
133
- [ 7, 1 ],
134
- [ 6, 1 ],
135
- [ 6, 3 ],
136
- ]
137
- ### Extension Params
138
- nparams = {
139
- 'NVAction' => 2,
140
- }
141
- ### Term to Int
142
- t2i = {
143
- nil => 0,
144
- false => 1,
145
- "<" => 2,
146
- :ID => 3,
147
- ">" => 4,
148
- ":" => 5,
149
- :ACTION => 6,
150
- "!" => 7,
151
- :LEX => 8,
152
- "," => 9,
153
- }
154
- ### Int to Term
155
- i2t = [
156
- nil,
157
- false,
158
- "<",
159
- :ID,
160
- ">",
161
- ":",
162
- :ACTION,
163
- "!",
164
- :LEX,
165
- ",",
166
- ]
167
- ### Action Table
168
- action_table = [
169
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
170
- [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
171
- [ nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, ],
172
- [ nil, nil, nil, 5, nil, nil, nil, nil, nil, nil, ],
173
- [ nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, ],
174
- [ nil, nil, nil, nil, nil, 11, nil, nil, nil, nil, ],
175
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
176
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
177
- [ nil, nil, nil, nil, nil, nil, nil, 12, nil, 13, ],
178
- [ nil, nil, nil, nil, nil, nil, nil, nil, 6, nil, ],
179
- [ nil, nil, nil, nil, 16, nil, nil, nil, nil, nil, ],
180
- [ nil, nil, nil, 17, nil, nil, nil, nil, nil, nil, ],
181
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
182
- [ nil, nil, nil, nil, nil, nil, nil, nil, 18, nil, ],
183
- [ nil, nil, nil, nil, nil, nil, 19, nil, nil, nil, ],
184
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
185
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
186
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
187
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
188
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
189
- ]
190
- ### Default Reduce Table
191
- defred_table = [
192
- -2,
193
- nil,
194
- -1,
195
- nil,
196
- nil,
197
- -5,
198
- -12,
199
- -7,
200
- -10,
201
- -3,
202
- nil,
203
- nil,
204
- -11,
205
- nil,
206
- nil,
207
- -8,
208
- -4,
209
- -6,
210
- -13,
211
- -9,
212
- ]
213
- defred_after_shift_table = [
214
- -2,
215
- nil,
216
- nil,
217
- nil,
218
- nil,
219
- nil,
220
- -12,
221
- -7,
222
- nil,
223
- nil,
224
- nil,
225
- nil,
226
- -11,
227
- nil,
228
- nil,
229
- -8,
230
- -4,
231
- -6,
232
- -13,
233
- -9,
234
- ]
235
- ### Nonterm to Int
236
- nt2i = {
237
- :start => 0,
238
- :mode_list => 1,
239
- :mode => 2,
240
- :lexactlist => 3,
241
- :opt_super => 4,
242
- :lexact => 5,
243
- :lexlist => 6,
244
- :opt_noskip => 7,
245
- }
246
- ### Int to Nonterm
247
- i2nt = [
248
- :start,
249
- :mode_list,
250
- :mode,
251
- :lexactlist,
252
- :opt_super,
253
- :lexact,
254
- :lexlist,
255
- :opt_noskip,
256
- ]
257
- ### Goto Table
258
- goto_table = [
259
- [ 1, 2, nil, nil, nil, nil, nil, nil, ],
260
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
261
- [ nil, nil, 4, nil, nil, nil, nil, nil, ],
262
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
263
- [ nil, nil, nil, 9, nil, 7, 8, nil, ],
264
- [ nil, nil, nil, nil, 10, nil, nil, nil, ],
265
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
266
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
267
- [ nil, nil, nil, nil, nil, nil, nil, 14, ],
268
- [ nil, nil, nil, nil, nil, 15, 8, nil, ],
269
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
270
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
271
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
272
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
273
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
274
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
275
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
276
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
277
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
278
- [ nil, nil, nil, nil, nil, nil, nil, nil, ],
279
- ]
280
-
281
- Tables = [ reduce_table, nparams, action_table,
282
- defred_table, defred_after_shift_table, goto_table,
283
- t2i, i2t, nt2i, i2nt ]
284
-
285
- attr_accessor :p, :m
286
- def initialize p, nparam, master = nil
287
- super()
288
- @g_parser = @p = p
289
- @master = @m = master
290
- @nparam = nparam
291
- @dect = D4StatefulLexerExtension_pre_rule_list::NVAction.new(self)
292
- init_parser
293
- end
294
-
295
-
296
- def do_parse?
297
- if @line =~ /^\s*%LEX\{\s*\Z/
298
- @line = $'
299
- true
300
- else
301
- false
302
- end
303
- end
304
-
305
-
306
- def banner
307
- "%LEX{ ... } / #{@master.class.name}"
308
- end
309
-
310
- ### Inner Code
311
-
312
- def lex
313
- begin
314
- until @line.empty?
315
- case @line
316
-
317
- when /\A\s+/, /\A#.*\Z/
318
- @oldline = @line; @line = $'
319
-
320
-
321
-
322
- when /\A[A-Z]+/
323
- @oldline = @line; @line = $'
324
- yield token(:ID, $&)
325
-
326
-
327
- when /\A\%\}\s*\Z/
328
- @oldline = @line; @line = $'
329
- yield nil,nil
330
-
331
-
332
- when /\A\/(([^\/\\]+|\\.)*)\//
333
- @oldline = @line; @line = $'
334
- yield token(:LEX, "/\\A#{$1}/")
335
-
336
-
337
- when /\A'([^'\\]+|\\.)*'/, /\A"([^"\\]+|\\.)*"/
338
- @oldline = @line; @line = $'
339
-
340
- yield token(:LEX, "/\\A#{Regexp.escape($1).gsub('/', '\/')}/")
341
-
342
-
343
- when /\A\{/
344
- #
345
-
346
- _lineno = lineno
347
- yield token(:ACTION, parse_action, _lineno)
348
-
349
-
350
- when /\A./
351
- @oldline = @line; @line = $'
352
- yield token($&, $&)
353
-
354
-
355
- else
356
- raise RuntimeError, "must not happen #{@line}"
357
- end
358
- end
359
- end while @line0 = @line = getline
360
- yield nil, nil
361
- end
362
-
363
- end
364
-
365
- ### Outer Code
366
-
367
- class D4StatefulLexerExtension_pre_rule_list::NVAction < Depager::LALR::Action #:nodoc:all
368
- include Depager::DecoratorUtils
369
-
370
- on_reduce = [
371
- nil,
372
- :_act_0,
373
- :_act_1,
374
- :_act_2,
375
- :_act_3,
376
- :_act_4,
377
- :_act_5,
378
- :_act_6,
379
- :_act_7,
380
- :_act_8,
381
- :_act_9,
382
- :_act_10,
383
- :_act_11,
384
- :_act_12,
385
-
386
- ]
387
- Tables = [on_reduce]
388
- def initialize inside
389
- super inside, 'NVAction'
390
- @on_reduce, = self.class::Tables
391
- init_parser
392
- end
393
-
394
-
395
- module_eval <<-'.,.,1227458033159.,.,', 'slex.dr', 95
396
- def _act_0 val
397
- _mode_list, = *val
398
-
399
- ll = ''
400
- _mode_list.each do |m, s, l|
401
- else_code = if s
402
- "lex_#{s}(&block)"
403
- else
404
- 'raise RuntimeError, "must not happen #{@line}"'
405
- end
406
- ll << %{
407
- def lex_#{m}(&block)
408
- case @line
409
- #{l}
410
- else
411
- #{else_code}
412
- end
413
- end
414
- }; #code
415
- end
416
- g_parser.optinner << ll << %{
417
- attr_accessor :lex_state, :lex_context
418
- def lex(&block)
419
- @lex_state ||= :START
420
- @lex_context ||= {}
421
- begin
422
- until @line.empty?
423
- self.send "lex_\#{@lex_state}", &block
424
- end
425
- end while @line0 = @line = getline
426
- yield nil, nil
427
- end
428
- }; #code
429
-
430
- end
431
- .,.,1227458033159.,.,
432
-
433
- module_eval <<-'.,.,122745803342120.,.,', 'slex.dr', 129
434
- def _act_1 val
435
- [ ]
436
-
437
- end
438
- .,.,122745803342120.,.,
439
-
440
- module_eval <<-'.,.,12274580336600.,.,', 'slex.dr', 130
441
- def _act_2 val
442
- _mode_list, _mode, _lexactlist, = *val
443
- _mode_list << [_mode[0], _mode[1], _lexactlist]
444
-
445
- end
446
- .,.,12274580336600.,.,
447
-
448
- module_eval <<-'.,.,122745803347797.,.,', 'slex.dr', 133
449
- def _act_3 val
450
- _, _ID, _opt_super, _, = *val
451
- [ _ID.value, _opt_super ]
452
-
453
- end
454
- .,.,122745803347797.,.,
455
-
456
- module_eval <<-'.,.,122745803312942.,.,', 'slex.dr', 136
457
- def _act_4 val
458
- nil
459
-
460
- end
461
- .,.,122745803312942.,.,
462
-
463
- module_eval <<-'.,.,122745803315084.,.,', 'slex.dr', 137
464
- def _act_5 val
465
- _, _ID, = *val
466
- _ID.value
467
-
468
- end
469
- .,.,122745803315084.,.,
470
-
471
- module_eval <<-'.,.,12274580334440.,.,', 'slex.dr', 140
472
- def _act_6 val
473
- _lexact, = *val
474
- _lexact
475
-
476
- end
477
- .,.,12274580334440.,.,
478
-
479
- module_eval <<-'.,.,122745803358254.,.,', 'slex.dr', 141
480
- def _act_7 val
481
- _lexactlist, _lexact, = *val
482
- _lexactlist << _lexact
483
-
484
- end
485
- .,.,122745803358254.,.,
486
-
487
- module_eval <<-'.,.,122745803337351.,.,', 'slex.dr', 145
488
- def _act_8 val
489
- _lexlist, _opt_noskip, _ACTION, = *val
490
-
491
- %{
492
- when #{_lexlist.join(', ')}
493
- #{ _opt_noskip ? '#' : "@oldline = @line; @line = $'" }
494
- #{ _ACTION.value }
495
- }; #code
496
-
497
- end
498
- .,.,122745803337351.,.,
499
-
500
- module_eval <<-'.,.,122745803316408.,.,', 'slex.dr', 154
501
- def _act_9 val
502
- false
503
-
504
- end
505
- .,.,122745803316408.,.,
506
-
507
- module_eval <<-'.,.,122745803341193.,.,', 'slex.dr', 155
508
- def _act_10 val
509
- _, = *val
510
- true
511
-
512
- end
513
- .,.,122745803341193.,.,
514
-
515
- module_eval <<-'.,.,12274580332500.,.,', 'slex.dr', 158
516
- def _act_11 val
517
- _LEX, = *val
518
- [ _LEX.value ]
519
-
520
- end
521
- .,.,12274580332500.,.,
522
-
523
- module_eval <<-'.,.,122745803323427.,.,', 'slex.dr', 159
524
- def _act_12 val
525
- _lexlist, _, _LEX, = *val
526
- _lexlist.push _LEX.value
527
-
528
- end
529
- .,.,122745803323427.,.,
530
-
531
- end
532
-
533
-
534
- ###
535
- ### StatefulLexerExtension_pre_rhs__post_symbol - Part of Depager Extension (slave)
536
- ###
537
- module D4StatefulLexerExtension_pre_rhs__post_symbol #:nodoc:all
538
- end
539
-
540
- class StatefulLexerExtension_pre_rhs__post_symbol < Depager::LALR::Basis #:nodoc:all
541
- include Depager::ExtensionUtils
542
-
543
-
544
- ### Reduce Table
545
- reduce_table = [
546
- [ -1, 1 ],
547
- [ 0, 3 ],
548
- [ 0, 4 ],
549
- [ 1, 1 ],
550
- [ 1, 2 ],
551
- [ 2, 2 ],
552
- [ 2, 2 ],
553
- [ 2, 2 ],
554
- ]
555
- ### Extension Params
556
- nparams = {
557
- 'NVAction' => 2,
558
- }
559
- ### Term to Int
560
- t2i = {
561
- nil => 0,
562
- false => 1,
563
- "[" => 2,
564
- "]" => 3,
565
- "?" => 4,
566
- ">" => 5,
567
- :SYMBOL => 6,
568
- "+" => 7,
569
- "-" => 8,
570
- }
571
- ### Int to Term
572
- i2t = [
573
- nil,
574
- false,
575
- "[",
576
- "]",
577
- "?",
578
- ">",
579
- :SYMBOL,
580
- "+",
581
- "-",
582
- ]
583
- ### Action Table
584
- action_table = [
585
- [ nil, nil, 1, nil, nil, nil, nil, nil, nil, ],
586
- [ nil, nil, nil, nil, nil, 7, nil, 3, 4, ],
587
- [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, ],
588
- [ nil, nil, nil, nil, nil, nil, 8, nil, nil, ],
589
- [ nil, nil, nil, nil, nil, nil, 9, nil, nil, ],
590
- [ nil, nil, nil, 10, 11, 7, nil, 3, 4, ],
591
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
592
- [ nil, nil, nil, nil, nil, nil, 13, nil, nil, ],
593
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
594
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
595
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
596
- [ nil, nil, nil, 14, nil, nil, nil, nil, nil, ],
597
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
598
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
599
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
600
- ]
601
- ### Default Reduce Table
602
- defred_table = [
603
- nil,
604
- nil,
605
- nil,
606
- nil,
607
- nil,
608
- nil,
609
- -3,
610
- nil,
611
- -6,
612
- -7,
613
- -1,
614
- nil,
615
- -4,
616
- -5,
617
- -2,
618
- ]
619
- defred_after_shift_table = [
620
- nil,
621
- nil,
622
- nil,
623
- nil,
624
- nil,
625
- nil,
626
- -3,
627
- nil,
628
- -6,
629
- -7,
630
- -1,
631
- nil,
632
- -4,
633
- -5,
634
- -2,
635
- ]
636
- ### Nonterm to Int
637
- nt2i = {
638
- :start => 0,
639
- :option_list => 1,
640
- :option => 2,
641
- }
642
- ### Int to Nonterm
643
- i2nt = [
644
- :start,
645
- :option_list,
646
- :option,
647
- ]
648
- ### Goto Table
649
- goto_table = [
650
- [ 2, nil, nil, ],
651
- [ nil, 5, 6, ],
652
- [ nil, nil, nil, ],
653
- [ nil, nil, nil, ],
654
- [ nil, nil, nil, ],
655
- [ nil, nil, 12, ],
656
- [ nil, nil, nil, ],
657
- [ nil, nil, nil, ],
658
- [ nil, nil, nil, ],
659
- [ nil, nil, nil, ],
660
- [ nil, nil, nil, ],
661
- [ nil, nil, nil, ],
662
- [ nil, nil, nil, ],
663
- [ nil, nil, nil, ],
664
- [ nil, nil, nil, ],
665
- ]
666
-
667
- Tables = [ reduce_table, nparams, action_table,
668
- defred_table, defred_after_shift_table, goto_table,
669
- t2i, i2t, nt2i, i2nt ]
670
-
671
- attr_accessor :p, :m
672
- def initialize p, nparam, master = nil
673
- super()
674
- @g_parser = @p = p
675
- @master = @m = master
676
- @nparam = nparam
677
- @dect = D4StatefulLexerExtension_pre_rhs__post_symbol::NVAction.new(self)
678
- init_parser
679
- end
680
-
681
-
682
- def do_parse?
683
- if @line =~ /^\s*\[/
684
-
685
- true
686
- else
687
- false
688
- end
689
- end
690
-
691
-
692
- def banner
693
- "[> ...] / #{@master.class.name}"
694
- end
695
-
696
- ### Inner Code
697
-
698
- def lex
699
- begin
700
- until @line.empty?
701
- case @line
702
-
703
- when /\A\s+/
704
- @oldline = @line; @line = $'
705
-
706
-
707
-
708
- when /\A:[a-zA-Z_]+\??/
709
- @oldline = @line; @line = $'
710
- yield token(:SYMBOL, $&)
711
-
712
-
713
- when /\A\]/
714
- @oldline = @line; @line = $'
715
- yield token($&, $&); @line = $'; yield nil, nil
716
-
717
-
718
- when /\A./
719
- @oldline = @line; @line = $'
720
- yield token($&, $&)
721
-
722
-
723
- else
724
- raise RuntimeError, "must not happen #{@line}"
725
- end
726
- end
727
- end while @line0 = @line = getline
728
- yield nil, nil
729
- end
730
-
731
- end
732
-
733
- ### Outer Code
734
-
735
- class D4StatefulLexerExtension_pre_rhs__post_symbol::NVAction < Depager::LALR::Action #:nodoc:all
736
- include Depager::DecoratorUtils
737
-
738
- on_reduce = [
739
- nil,
740
- :_act_0,
741
- :_act_1,
742
- :_act_2,
743
- :_act_3,
744
- :_act_4,
745
- :_act_5,
746
- :_act_6,
747
-
748
- ]
749
- Tables = [on_reduce]
750
- def initialize inside
751
- super inside, 'NVAction'
752
- @on_reduce, = self.class::Tables
753
- init_parser
754
- end
755
-
756
-
757
- module_eval <<-'.,.,122745803310395.,.,', 'slex.dr', 179
758
- def _act_0 val
759
- _, _option_list, _, = *val
760
-
761
- master.ins.push [g_parser.rhs.size, _option_list, false]
762
-
763
- end
764
- .,.,122745803310395.,.,
765
-
766
- module_eval <<-'.,.,122745803327506.,.,', 'slex.dr', 183
767
- def _act_1 val
768
- _, _option_list, _, _, = *val
769
-
770
- master.ins.push [g_parser.rhs.size, _option_list, true]
771
-
772
- end
773
- .,.,122745803327506.,.,
774
-
775
- module_eval <<-'.,.,122745803335394.,.,', 'slex.dr', 189
776
- def _act_2 val
777
- _option, = *val
778
- [_option]
779
-
780
- end
781
- .,.,122745803335394.,.,
782
-
783
- module_eval <<-'.,.,122745803345722.,.,', 'slex.dr', 190
784
- def _act_3 val
785
- _option_list, _option, = *val
786
- _option_list << _option
787
-
788
- end
789
- .,.,122745803345722.,.,
790
-
791
- module_eval <<-'.,.,122745803311899.,.,', 'slex.dr', 193
792
- def _act_4 val
793
- _, _SYMBOL, = *val
794
- [:GOTO, _SYMBOL.value]
795
-
796
- end
797
- .,.,122745803311899.,.,
798
-
799
- module_eval <<-'.,.,122745803346690.,.,', 'slex.dr', 194
800
- def _act_5 val
801
- _, _SYMBOL, = *val
802
- [:ADD, _SYMBOL.value]
803
-
804
- end
805
- .,.,122745803346690.,.,
806
-
807
- module_eval <<-'.,.,122745803330412.,.,', 'slex.dr', 195
808
- def _act_6 val
809
- _, _SYMBOL, = *val
810
- [:SUB, _SYMBOL.value]
811
-
812
- end
813
- .,.,122745803330412.,.,
814
-
815
- end
816
-
817
-