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,1308 +0,0 @@
1
-
2
- ###
3
- ### ASTBuilderExtension - Depager Extension (master)
4
- ###
5
- require 'pp.rb'
6
- require 'depager/parser.rb'
7
-
8
-
9
- module D4ASTBuilderExtension #:nodoc:all
10
- end
11
-
12
- class ASTBuilderExtension #: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] = ASTBuilderExtension_post_rhs.new(p, @nparam, self)
28
- @h2p['post_rhs'] = @hook[0]
29
- p.hooks[:post_rhs].push [@hook[0], :do_parse]
30
-
31
- @hook[1] = ASTBuilderExtension_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
- regext p
36
- end
37
-
38
- ### Inner Code
39
- require 'plugins/_ast_tmpl'
40
- attr_accessor :optouter, :on_reduce, :visitor
41
- def init_parser
42
- super
43
- @visitor = Hash.new{|hash, key| hash[key] = []}
44
- @optouter = []
45
- @on_reduce = []
46
- @output_file_name = nil
47
- end
48
- def post_rule_list
49
- g_parser.optouter <<
50
- gen_action_decorator_code(target_name, paramkey,
51
- @on_reduce, @optouter)
52
- end
53
-
54
- def modify_action_code code, nodes=[]
55
- code = code.gsub(/\$\.([a-z_])/, 'node.\1')
56
- code << %{
57
- rescue
58
- warn "raise at src:\#{node.lineno}/\#{node.class.name}"
59
- raise
60
- }
61
- end
62
- def gen_accept_code sym
63
- return ''
64
- end
65
-
66
- attr_reader :output_file_name
67
- def output_file_name= ofname
68
- ofname = ofname.match(/'(.+)'/) ? $1 : ofname
69
- @output_file_name = ofname
70
- end
71
-
72
- end
73
-
74
- ### Outer Code
75
-
76
- ###
77
- ### ASTBuilderExtension_pre_rule_list - Part of Depager Extension (slave)
78
- ###
79
- module D4ASTBuilderExtension_pre_rule_list #:nodoc:all
80
- end
81
-
82
- class ASTBuilderExtension_pre_rule_list < Depager::LALR::Basis #:nodoc:all
83
- include Depager::ExtensionUtils
84
-
85
-
86
- ### Reduce Table
87
- reduce_table = [
88
- [ -1, 1 ],
89
- [ 0, 3 ],
90
- [ 1, 0 ],
91
- [ 1, 3 ],
92
- [ 2, 0 ],
93
- [ 2, 2 ],
94
- [ 3, 1 ],
95
- [ 3, 2 ],
96
- [ 6, 3 ],
97
- [ 7, 3 ],
98
- [ 7, 4 ],
99
- [ 4, 0 ],
100
- [ 4, 2 ],
101
- [ 4, 3 ],
102
- [ 8, 1 ],
103
- [ 8, 3 ],
104
- [ 10, 1 ],
105
- [ 10, 2 ],
106
- [ 9, 1 ],
107
- [ 9, 3 ],
108
- [ 5, 0 ],
109
- [ 5, 1 ],
110
- [ 5, 1 ],
111
- [ 11, 1 ],
112
- [ 11, 2 ],
113
- [ 12, 4 ],
114
- ]
115
- ### Extension Params
116
- nparams = {
117
- 'NVAction' => 2,
118
- }
119
- ### Term to Int
120
- t2i = {
121
- nil => 0,
122
- false => 1,
123
- :NODE => 2,
124
- :ACTION => 3,
125
- :VISITOR => 4,
126
- :ID => 5,
127
- "(" => 6,
128
- ")" => 7,
129
- "[" => 8,
130
- "]" => 9,
131
- "," => 10,
132
- "-" => 11,
133
- "<" => 12,
134
- ">" => 13,
135
- }
136
- ### Int to Term
137
- i2t = [
138
- nil,
139
- false,
140
- :NODE,
141
- :ACTION,
142
- :VISITOR,
143
- :ID,
144
- "(",
145
- ")",
146
- "[",
147
- "]",
148
- ",",
149
- "-",
150
- "<",
151
- ">",
152
- ]
153
- ### Action Table
154
- action_table = [
155
- [ nil, nil, 1, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
156
- [ nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, ],
157
- [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
158
- [ nil, nil, nil, nil, 6, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
159
- [ nil, nil, nil, 8, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
160
- [ nil, nil, nil, nil, nil, 10, nil, nil, nil, 9, nil, nil, nil, nil, ],
161
- [ nil, nil, nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
162
- [ nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, nil, ],
163
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
164
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
165
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
166
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 21, 22, nil, nil, nil, ],
167
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
168
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
169
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
170
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
171
- [ nil, nil, nil, nil, nil, 24, nil, nil, nil, nil, nil, nil, nil, nil, ],
172
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
173
- [ nil, nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, ],
174
- [ nil, nil, nil, nil, nil, nil, nil, nil, 5, nil, nil, nil, nil, nil, ],
175
- [ nil, nil, nil, nil, nil, 18, nil, nil, nil, nil, nil, nil, nil, nil, ],
176
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
177
- [ nil, nil, nil, nil, nil, 28, nil, nil, nil, nil, nil, nil, nil, nil, ],
178
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
179
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 29, ],
180
- [ nil, nil, nil, nil, nil, 31, nil, 34, nil, nil, nil, 32, nil, nil, ],
181
- [ nil, nil, nil, 12, nil, nil, nil, nil, nil, nil, nil, nil, 16, nil, ],
182
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
183
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
184
- [ nil, nil, nil, 36, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
185
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
186
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
187
- [ nil, nil, nil, nil, nil, 37, nil, nil, nil, nil, nil, nil, nil, nil, ],
188
- [ nil, nil, nil, nil, nil, nil, nil, 39, nil, nil, 38, nil, nil, nil, ],
189
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
190
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
191
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
192
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
193
- [ nil, nil, nil, nil, nil, 31, nil, nil, nil, nil, nil, 32, nil, nil, ],
194
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
195
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
196
- ]
197
- ### Default Reduce Table
198
- defred_table = [
199
- -2,
200
- -11,
201
- nil,
202
- -4,
203
- nil,
204
- nil,
205
- -20,
206
- nil,
207
- -3,
208
- -12,
209
- -18,
210
- nil,
211
- -21,
212
- -5,
213
- -22,
214
- -23,
215
- nil,
216
- -6,
217
- nil,
218
- -11,
219
- -1,
220
- -13,
221
- nil,
222
- -24,
223
- nil,
224
- nil,
225
- -20,
226
- -7,
227
- -19,
228
- nil,
229
- -14,
230
- -16,
231
- nil,
232
- nil,
233
- -9,
234
- -8,
235
- -25,
236
- -17,
237
- nil,
238
- -10,
239
- -15,
240
- ]
241
- defred_after_shift_table = [
242
- nil,
243
- nil,
244
- nil,
245
- nil,
246
- nil,
247
- nil,
248
- nil,
249
- nil,
250
- -3,
251
- -12,
252
- -18,
253
- nil,
254
- -21,
255
- -5,
256
- nil,
257
- -23,
258
- nil,
259
- -6,
260
- nil,
261
- nil,
262
- nil,
263
- -13,
264
- nil,
265
- -24,
266
- nil,
267
- nil,
268
- nil,
269
- -7,
270
- -19,
271
- nil,
272
- -14,
273
- -16,
274
- nil,
275
- nil,
276
- -9,
277
- -8,
278
- -25,
279
- -17,
280
- nil,
281
- -10,
282
- -15,
283
- ]
284
- ### Nonterm to Int
285
- nt2i = {
286
- :start => 0,
287
- :opt_defnode => 1,
288
- :opt_defvis => 2,
289
- :defnode_list => 3,
290
- :opt_attr => 4,
291
- :opt_action => 5,
292
- :defnode => 6,
293
- :defnode_header => 7,
294
- :fact_list => 8,
295
- :id_list => 9,
296
- :fact => 10,
297
- :pass_action_list => 11,
298
- :pass_action => 12,
299
- }
300
- ### Int to Nonterm
301
- i2nt = [
302
- :start,
303
- :opt_defnode,
304
- :opt_defvis,
305
- :defnode_list,
306
- :opt_attr,
307
- :opt_action,
308
- :defnode,
309
- :defnode_header,
310
- :fact_list,
311
- :id_list,
312
- :fact,
313
- :pass_action_list,
314
- :pass_action,
315
- ]
316
- ### Goto Table
317
- goto_table = [
318
- [ 2, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
319
- [ nil, nil, nil, nil, 4, nil, nil, nil, nil, nil, nil, nil, nil, ],
320
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
321
- [ nil, nil, 7, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
322
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
323
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, 11, nil, nil, nil, ],
324
- [ nil, nil, nil, nil, nil, 13, nil, nil, nil, nil, nil, 14, 15, ],
325
- [ nil, nil, nil, 20, nil, nil, 17, 19, nil, nil, nil, nil, nil, ],
326
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
327
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
328
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
329
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
330
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
331
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
332
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 23, ],
333
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
334
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
335
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
336
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
337
- [ nil, nil, nil, nil, 26, nil, nil, nil, nil, nil, nil, nil, nil, ],
338
- [ nil, nil, nil, nil, nil, nil, 27, 19, nil, nil, nil, nil, nil, ],
339
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
340
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
341
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
342
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
343
- [ nil, nil, nil, nil, nil, nil, nil, nil, 33, nil, 30, nil, nil, ],
344
- [ nil, nil, nil, nil, nil, 35, nil, nil, nil, nil, nil, 14, 15, ],
345
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
346
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
347
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
348
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
349
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
350
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
351
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
352
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
353
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
354
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
355
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
356
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 40, nil, nil, ],
357
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
358
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
359
- ]
360
-
361
- Tables = [ reduce_table, nparams, action_table,
362
- defred_table, defred_after_shift_table, goto_table,
363
- t2i, i2t, nt2i, i2nt ]
364
-
365
- attr_accessor :p, :m
366
- def initialize p, nparam, master = nil
367
- super()
368
- @g_parser = @p = p
369
- @master = @m = master
370
- @nparam = nparam
371
- @dect = D4ASTBuilderExtension_pre_rule_list::NVAction.new(self)
372
- init_parser
373
- end
374
-
375
-
376
- def do_parse?
377
- if @line =~ /^\s*%AST\{\s*\Z/
378
- @line = $'
379
- true
380
- else
381
- false
382
- end
383
- end
384
-
385
-
386
- def banner
387
- "%AST{ ... } / #{@master.class.name}"
388
- end
389
-
390
- ### Inner Code
391
-
392
- def lex
393
- begin
394
- until @line.empty?
395
- case @line
396
-
397
- when /\A\s+/, /\A#.*/
398
- @oldline = @line; @line = $'
399
-
400
-
401
-
402
- when /\A%\}\s*\Z/
403
- @oldline = @line; @line = $'
404
- @line = $'; yield nil,nil
405
-
406
-
407
- when /\ANode/
408
- @oldline = @line; @line = $'
409
- yield token(:NODE, $&)
410
-
411
-
412
- when /\AVisitor/
413
- @oldline = @line; @line = $'
414
- yield token(:VISITOR, $&)
415
-
416
-
417
- when /\A[a-zA-Z][a-zA-Z0-9_]*/
418
- @oldline = @line; @line = $'
419
- yield token(:ID, $&)
420
-
421
-
422
- when /\A\{/
423
- #
424
- ln = lineno; yield token(:ACTION, parse_action, ln)
425
-
426
-
427
- when /\A./
428
- @oldline = @line; @line = $'
429
- yield token($&, $&)
430
-
431
-
432
- else
433
- raise RuntimeError, "must not happen #{@line}"
434
- end
435
- end
436
- end while @line0 = @line = getline
437
- yield nil, nil
438
- end
439
-
440
- end
441
-
442
- ### Outer Code
443
-
444
- class D4ASTBuilderExtension_pre_rule_list::NVAction < Depager::LALR::Action #:nodoc:all
445
- include Depager::DecoratorUtils
446
-
447
- on_reduce = [
448
- nil,
449
- :_act_0,
450
- :_act_1,
451
- :_act_2,
452
- :_act_3,
453
- :_act_4,
454
- :_act_5,
455
- :_act_6,
456
- :_act_7,
457
- :_act_8,
458
- :_act_9,
459
- :_act_10,
460
- :_act_11,
461
- :_act_12,
462
- :_act_13,
463
- :_act_14,
464
- :_act_15,
465
- :_act_16,
466
- :_act_17,
467
- :_act_18,
468
- :_act_19,
469
- :_act_20,
470
- :_act_21,
471
- :_act_22,
472
- :_act_23,
473
- :_act_24,
474
-
475
- ]
476
- Tables = [on_reduce]
477
- def initialize inside
478
- super inside, 'NVAction'
479
- @on_reduce, = self.class::Tables
480
- init_parser
481
- end
482
-
483
-
484
- module_eval <<-'.,.,122745803347277.,.,', 'ast.dr', 55
485
- def _act_0 val
486
- _opt_defnode, _opt_defvis, _defnode_list, = *val
487
-
488
- code = _opt_defnode
489
- code << val[2] << %{
490
- class Visitor
491
- def visit node
492
- node.accept(self)
493
- end
494
- #{master.visitor[nil].join}
495
- end
496
- };#code
497
- master.visitor.each do |k, v|
498
- next unless k
499
- code << %{
500
- class Visitor_#{k}
501
- #{v.join}
502
- end
503
- };#code
504
- end
505
- if master.output_file_name
506
- File.open(master.output_file_name, 'w') do |f|
507
- f.write code
508
- end
509
- g_parser.optouter << %!require '#{master.output_file_name}'\n!
510
- else
511
- g_parser.optouter << code
512
- end
513
-
514
- end
515
- .,.,122745803347277.,.,
516
-
517
- module_eval <<-'.,.,122745803338304.,.,', 'ast.dr', 84
518
- def _act_1 val
519
- ""
520
-
521
- end
522
- .,.,122745803338304.,.,
523
-
524
- module_eval <<-'.,.,122745803334064.,.,', 'ast.dr', 86
525
- def _act_2 val
526
- _NODE, _opt_attr, _ACTION, = *val
527
-
528
- ini = %{
529
- def initialize
530
- #{_ACTION.value}
531
- end
532
- };#code
533
- ERB.new(master.class::TMPL_NODE_BASE).result(binding)
534
-
535
- end
536
- .,.,122745803334064.,.,
537
-
538
- module_eval <<-'.,.,122745803350390.,.,', 'ast.dr', 96
539
- def _act_3 val
540
- []
541
-
542
- end
543
- .,.,122745803350390.,.,
544
-
545
- module_eval <<-'.,.,122745803327135.,.,', 'ast.dr', 98
546
- def _act_4 val
547
- _VISITOR, _opt_action, = *val
548
-
549
- _opt_action[nil] ||= Token['', 0]
550
- _opt_action.each do |pass, act|
551
- master.visitor[pass].unshift(
552
- master.gen_meval_code(act.lineno, 0, act.value.to_s))
553
- end
554
-
555
- end
556
- .,.,122745803327135.,.,
557
-
558
- module_eval <<-'.,.,1227458033227.,.,', 'ast.dr', 107
559
- def _act_5 val
560
- _defnode, = *val
561
- _defnode
562
-
563
- end
564
- .,.,1227458033227.,.,
565
-
566
- module_eval <<-'.,.,122745803349542.,.,', 'ast.dr', 108
567
- def _act_6 val
568
- _defnode_list, _defnode, = *val
569
- _defnode_list << _defnode
570
-
571
- end
572
- .,.,122745803349542.,.,
573
-
574
- module_eval <<-'.,.,122745803342203.,.,', 'ast.dr', 112
575
- def _act_7 val
576
- _defnode_header, _opt_attr, _opt_action, = *val
577
-
578
- name, args = _defnode_header
579
- nodes, accept, attrs = [], '', _opt_attr
580
- args.each do |i|
581
- if i =~ /\-(.*)/
582
- nodes.push $1
583
- attrs.push $1
584
- else
585
- nodes.push i
586
- accept << master.gen_accept_code(i)
587
- end
588
- end
589
- _opt_action[nil] = Token['', 0] unless _opt_action[nil]
590
- _opt_action.each do |pass, act|
591
- vis_code = master.modify_action_code(act.value, nodes - attrs)
592
- master.visitor[pass] <<
593
- master.gen_defm_code("visit_Node_#{name} node",
594
- vis_code, act.lineno)
595
- end
596
- ERB.new(master.class::TMPL_NODE).result(binding)
597
-
598
- end
599
- .,.,122745803342203.,.,
600
-
601
- module_eval <<-'.,.,122745803342598.,.,', 'ast.dr', 135
602
- def _act_8 val
603
- _ID, _, _, = *val
604
- [_ID.value, []]
605
-
606
- end
607
- .,.,122745803342598.,.,
608
-
609
- module_eval <<-'.,.,122745803344032.,.,', 'ast.dr', 136
610
- def _act_9 val
611
- _ID, _, _fact_list, _, = *val
612
- [_ID.value, _fact_list]
613
-
614
- end
615
- .,.,122745803344032.,.,
616
-
617
- module_eval <<-'.,.,122745803361859.,.,', 'ast.dr', 139
618
- def _act_10 val
619
- []
620
-
621
- end
622
- .,.,122745803361859.,.,
623
-
624
- module_eval <<-'.,.,122745803323572.,.,', 'ast.dr', 140
625
- def _act_11 val
626
- _, _, = *val
627
- []
628
-
629
- end
630
- .,.,122745803323572.,.,
631
-
632
- module_eval <<-'.,.,122745803313754.,.,', 'ast.dr', 141
633
- def _act_12 val
634
- _, _id_list, _, = *val
635
- _id_list
636
-
637
- end
638
- .,.,122745803313754.,.,
639
-
640
- module_eval <<-'.,.,12274580331318.,.,', 'ast.dr', 144
641
- def _act_13 val
642
- _fact, = *val
643
- [_fact]
644
-
645
- end
646
- .,.,12274580331318.,.,
647
-
648
- module_eval <<-'.,.,1227458033572.,.,', 'ast.dr', 145
649
- def _act_14 val
650
- _fact_list, _, _fact, = *val
651
- _fact_list.push _fact
652
-
653
- end
654
- .,.,1227458033572.,.,
655
-
656
- module_eval <<-'.,.,12274580337279.,.,', 'ast.dr', 148
657
- def _act_15 val
658
- _ID, = *val
659
- _ID.value
660
-
661
- end
662
- .,.,12274580337279.,.,
663
-
664
- module_eval <<-'.,.,122745803312359.,.,', 'ast.dr', 149
665
- def _act_16 val
666
- _, _ID, = *val
667
- '-' + _ID.value
668
-
669
- end
670
- .,.,122745803312359.,.,
671
-
672
- module_eval <<-'.,.,122745803363891.,.,', 'ast.dr', 152
673
- def _act_17 val
674
- _ID, = *val
675
- [ _ID.value ]
676
-
677
- end
678
- .,.,122745803363891.,.,
679
-
680
- module_eval <<-'.,.,122745803346333.,.,', 'ast.dr', 153
681
- def _act_18 val
682
- _id_list, _, _ID, = *val
683
- _id_list.push _ID.value
684
-
685
- end
686
- .,.,122745803346333.,.,
687
-
688
- module_eval <<-'.,.,122745803358364.,.,', 'ast.dr', 156
689
- def _act_19 val
690
- {nil => Token['', 0]}
691
-
692
- end
693
- .,.,122745803358364.,.,
694
-
695
- module_eval <<-'.,.,122745803347204.,.,', 'ast.dr', 157
696
- def _act_20 val
697
- _ACTION, = *val
698
- {nil => _ACTION}
699
-
700
- end
701
- .,.,122745803347204.,.,
702
-
703
- module_eval <<-'.,.,122745803352244.,.,', 'ast.dr', 159
704
- def _act_21 val
705
- _pass_action_list, = *val
706
-
707
- Hash[ *_pass_action_list.flatten ].merge({nil => Token['', 0]})
708
-
709
- end
710
- .,.,122745803352244.,.,
711
-
712
- module_eval <<-'.,.,122745803353056.,.,', 'ast.dr', 164
713
- def _act_22 val
714
- _pass_action, = *val
715
- [ _pass_action ]
716
-
717
- end
718
- .,.,122745803353056.,.,
719
-
720
- module_eval <<-'.,.,122745803358655.,.,', 'ast.dr', 165
721
- def _act_23 val
722
- _pass_action_list, _pass_action, = *val
723
- _pass_action_list << _pass_action
724
-
725
- end
726
- .,.,122745803358655.,.,
727
-
728
- module_eval <<-'.,.,122745803347204.,.,', 'ast.dr', 169
729
- def _act_24 val
730
- _, _ID, _, _ACTION, = *val
731
- [_ID.value, _ACTION]
732
-
733
- end
734
- .,.,122745803347204.,.,
735
-
736
- end
737
-
738
-
739
- ###
740
- ### ASTBuilderExtension_post_rhs - Part of Depager Extension (slave)
741
- ###
742
- module D4ASTBuilderExtension_post_rhs #:nodoc:all
743
- end
744
-
745
- class ASTBuilderExtension_post_rhs < Depager::LALR::Basis #:nodoc:all
746
- include Depager::ExtensionUtils
747
-
748
-
749
- ### Reduce Table
750
- reduce_table = [
751
- [ -1, 1 ],
752
- [ 0, 1 ],
753
- [ 2, 3 ],
754
- [ 2, 4 ],
755
- [ 3, 1 ],
756
- [ 3, 3 ],
757
- [ 1, 1 ],
758
- [ 1, 1 ],
759
- [ 1, 1 ],
760
- [ 4, 2 ],
761
- [ 4, 1 ],
762
- [ 4, 1 ],
763
- [ 4, 1 ],
764
- [ 4, 1 ],
765
- [ 4, 1 ],
766
- [ 4, 1 ],
767
- [ 6, 0 ],
768
- [ 6, 1 ],
769
- [ 5, 2 ],
770
- [ 5, 3 ],
771
- [ 5, 3 ],
772
- [ 5, 3 ],
773
- ]
774
- ### Extension Params
775
- nparams = {
776
- 'NVAction' => 2,
777
- }
778
- ### Term to Int
779
- t2i = {
780
- nil => 0,
781
- false => 1,
782
- :ID => 2,
783
- "(" => 3,
784
- ")" => 4,
785
- "," => 5,
786
- :CONST => 6,
787
- :SYMBOL => 7,
788
- :STR => 8,
789
- :NILNODE => 9,
790
- :NUMBER => 10,
791
- :NIL => 11,
792
- :EMBED => 12,
793
- "[" => 13,
794
- "]" => 14,
795
- :LL => 15,
796
- "@" => 16,
797
- }
798
- ### Int to Term
799
- i2t = [
800
- nil,
801
- false,
802
- :ID,
803
- "(",
804
- ")",
805
- ",",
806
- :CONST,
807
- :SYMBOL,
808
- :STR,
809
- :NILNODE,
810
- :NUMBER,
811
- :NIL,
812
- :EMBED,
813
- "[",
814
- "]",
815
- :LL,
816
- "@",
817
- ]
818
- ### Action Table
819
- action_table = [
820
- [ nil, nil, 13, nil, nil, nil, 9, 11, 1, 3, 6, 8, nil, 12, nil, nil, nil, ],
821
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
822
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
823
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
824
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
825
- [ ACC, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
826
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
827
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
828
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
829
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
830
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
831
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
832
- [ nil, nil, 13, nil, nil, nil, 9, 11, 1, 3, 6, 8, nil, 12, 16, nil, nil, ],
833
- [ nil, nil, nil, 19, nil, nil, nil, nil, nil, nil, nil, nil, 21, nil, nil, nil, nil, ],
834
- [ nil, nil, 13, nil, nil, nil, 9, 11, 1, 3, 6, 8, nil, 12, nil, nil, nil, ],
835
- [ nil, nil, 13, nil, nil, nil, 9, 11, 1, 3, 6, 8, nil, 12, nil, nil, nil, ],
836
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
837
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
838
- [ nil, nil, nil, nil, nil, 25, nil, nil, nil, nil, nil, nil, nil, nil, 24, nil, nil, ],
839
- [ nil, nil, 13, nil, 26, nil, 9, 11, 1, 3, 6, 8, nil, 12, nil, nil, nil, ],
840
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
841
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
842
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
843
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
844
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
845
- [ nil, nil, 13, nil, nil, nil, 9, 11, 1, 3, 6, 8, nil, 12, nil, nil, nil, ],
846
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
847
- [ nil, nil, nil, nil, 29, 25, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
848
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 14, 15, ],
849
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
850
- ]
851
- ### Default Reduce Table
852
- defred_table = [
853
- nil,
854
- -12,
855
- -6,
856
- -13,
857
- -8,
858
- nil,
859
- -14,
860
- -1,
861
- -15,
862
- -10,
863
- -7,
864
- -11,
865
- nil,
866
- -16,
867
- nil,
868
- nil,
869
- -18,
870
- -4,
871
- nil,
872
- nil,
873
- -9,
874
- -17,
875
- -20,
876
- -21,
877
- -19,
878
- nil,
879
- -2,
880
- nil,
881
- -5,
882
- -3,
883
- ]
884
- defred_after_shift_table = [
885
- nil,
886
- -12,
887
- -6,
888
- -13,
889
- -8,
890
- nil,
891
- -14,
892
- nil,
893
- -15,
894
- -10,
895
- -7,
896
- -11,
897
- nil,
898
- nil,
899
- nil,
900
- nil,
901
- -18,
902
- nil,
903
- nil,
904
- nil,
905
- -9,
906
- -17,
907
- nil,
908
- nil,
909
- -19,
910
- nil,
911
- -2,
912
- nil,
913
- nil,
914
- -3,
915
- ]
916
- ### Nonterm to Int
917
- nt2i = {
918
- :start => 0,
919
- :fnl => 1,
920
- :node => 2,
921
- :fnlpair => 3,
922
- :fact => 4,
923
- :list => 5,
924
- :opt_embed => 6,
925
- }
926
- ### Int to Nonterm
927
- i2nt = [
928
- :start,
929
- :fnl,
930
- :node,
931
- :fnlpair,
932
- :fact,
933
- :list,
934
- :opt_embed,
935
- ]
936
- ### Goto Table
937
- goto_table = [
938
- [ 5, 7, 10, nil, 2, 4, nil, ],
939
- [ nil, nil, nil, nil, nil, nil, nil, ],
940
- [ nil, nil, nil, nil, nil, nil, nil, ],
941
- [ nil, nil, nil, nil, nil, nil, nil, ],
942
- [ nil, nil, nil, nil, nil, nil, nil, ],
943
- [ nil, nil, nil, nil, nil, nil, nil, ],
944
- [ nil, nil, nil, nil, nil, nil, nil, ],
945
- [ nil, nil, nil, nil, nil, nil, nil, ],
946
- [ nil, nil, nil, nil, nil, nil, nil, ],
947
- [ nil, nil, nil, nil, nil, nil, nil, ],
948
- [ nil, nil, nil, nil, nil, nil, nil, ],
949
- [ nil, nil, nil, nil, nil, nil, nil, ],
950
- [ nil, 17, 10, 18, 2, 4, nil, ],
951
- [ nil, nil, nil, nil, nil, nil, 20, ],
952
- [ nil, 22, 10, nil, 2, 4, nil, ],
953
- [ nil, 23, 10, nil, 2, 4, nil, ],
954
- [ nil, nil, nil, nil, nil, nil, nil, ],
955
- [ nil, nil, nil, nil, nil, nil, nil, ],
956
- [ nil, nil, nil, nil, nil, nil, nil, ],
957
- [ nil, 17, 10, 27, 2, 4, nil, ],
958
- [ nil, nil, nil, nil, nil, nil, nil, ],
959
- [ nil, nil, nil, nil, nil, nil, nil, ],
960
- [ nil, nil, nil, nil, nil, nil, nil, ],
961
- [ nil, nil, nil, nil, nil, nil, nil, ],
962
- [ nil, nil, nil, nil, nil, nil, nil, ],
963
- [ nil, 28, 10, nil, 2, 4, nil, ],
964
- [ nil, nil, nil, nil, nil, nil, nil, ],
965
- [ nil, nil, nil, nil, nil, nil, nil, ],
966
- [ nil, nil, nil, nil, nil, nil, nil, ],
967
- [ nil, nil, nil, nil, nil, nil, nil, ],
968
- ]
969
-
970
- Tables = [ reduce_table, nparams, action_table,
971
- defred_table, defred_after_shift_table, goto_table,
972
- t2i, i2t, nt2i, i2nt ]
973
-
974
- attr_accessor :p, :m
975
- def initialize p, nparam, master = nil
976
- super()
977
- @g_parser = @p = p
978
- @master = @m = master
979
- @nparam = nparam
980
- @dect = D4ASTBuilderExtension_post_rhs::NVAction.new(self)
981
- init_parser
982
- end
983
-
984
-
985
- def do_parse?
986
- if @line =~ /^\s*=>/
987
- @line = $'
988
- true
989
- else
990
- false
991
- end
992
- end
993
-
994
-
995
- def banner
996
- "=>... / #{@master.class.name}"
997
- end
998
-
999
- ### Inner Code
1000
-
1001
- def lex
1002
- begin
1003
- until @line.empty?
1004
- case @line
1005
-
1006
- when /\A[ \t]+/
1007
- @oldline = @line; @line = $'
1008
-
1009
-
1010
-
1011
- when /\A\r?\n/
1012
- @oldline = @line; @line = $'
1013
- yield nil, nil
1014
-
1015
-
1016
- when /\A<</
1017
- @oldline = @line; @line = $'
1018
- yield token(:LL, $&)
1019
-
1020
-
1021
- when /\A%([a-zA-Z0-9_]+)((::[a-zA-Z0-9_]+)*)/
1022
- @oldline = @line; @line = $'
1023
- yield token(:CONST, $1+$2)
1024
-
1025
-
1026
- when /\A%\((.+)\)%/
1027
- @oldline = @line; @line = $'
1028
- yield token(:EMBED, $1)
1029
-
1030
-
1031
- when /\Anil/
1032
- @oldline = @line; @line = $'
1033
- yield token(:NIL, $&)
1034
-
1035
-
1036
- when /\ANilNode/
1037
- @oldline = @line; @line = $'
1038
- yield token(:NILNODE, $&)
1039
-
1040
-
1041
- when /\A[0-9]+/
1042
- @oldline = @line; @line = $'
1043
- yield token(:NUMBER, $&.to_i)
1044
-
1045
-
1046
- when /\A:[a-zA-Z0-9_]+/
1047
- @oldline = @line; @line = $'
1048
- yield token(:SYMBOL, $&)
1049
-
1050
-
1051
- when /\A[a-zA-Z][a-zA-Z0-9_]*/
1052
- @oldline = @line; @line = $'
1053
- yield token(:ID, $&)
1054
-
1055
-
1056
- when /\A'(.+)'/
1057
- @oldline = @line; @line = $'
1058
- yield token(:STR, $1)
1059
-
1060
-
1061
- when /\A./
1062
- @oldline = @line; @line = $'
1063
- yield token($&, $&)
1064
-
1065
-
1066
- else
1067
- raise RuntimeError, "must not happen #{@line}"
1068
- end
1069
- end
1070
- end while @line0 = @line = getline
1071
- yield nil, nil
1072
- end
1073
- def do_default
1074
- n = master.nrules
1075
- master.optouter <<
1076
- master.gen_defm_code("_ast_#{n} val", "NilNode.new(basis.file.lineno)", lineno)
1077
- master.on_reduce[n] = ":_ast_#{n}"
1078
- end
1079
-
1080
- end
1081
-
1082
- ### Outer Code
1083
-
1084
- class D4ASTBuilderExtension_post_rhs::NVAction < Depager::LALR::Action #:nodoc:all
1085
- include Depager::DecoratorUtils
1086
-
1087
- on_reduce = [
1088
- nil,
1089
- :_act_0,
1090
- :_act_1,
1091
- :_act_2,
1092
- :_act_3,
1093
- :_act_4,
1094
- :_act_5,
1095
- :_act_6,
1096
- :_act_7,
1097
- :_act_8,
1098
- :_act_9,
1099
- :_act_10,
1100
- :_act_11,
1101
- :_act_12,
1102
- :_act_13,
1103
- :_act_14,
1104
- :_act_15,
1105
- :_act_16,
1106
- :_act_17,
1107
- :_act_18,
1108
- :_act_19,
1109
- :_act_20,
1110
-
1111
- ]
1112
- Tables = [on_reduce]
1113
- def initialize inside
1114
- super inside, 'NVAction'
1115
- @on_reduce, = self.class::Tables
1116
- init_parser
1117
- end
1118
-
1119
-
1120
- module_eval <<-'.,.,122745803323544.,.,', 'ast.dr', 206
1121
- def _act_0 val
1122
- _fnl, = *val
1123
-
1124
- n = master.nrules
1125
- master.optouter <<
1126
- master.gen_defm_code("_ast_#{n} val", _fnl, basis.file.lineno)
1127
- master.on_reduce[n] = ":_ast_#{n}"
1128
-
1129
- end
1130
- .,.,122745803323544.,.,
1131
-
1132
- module_eval <<-'.,.,122745803342416.,.,', 'ast.dr', 214
1133
- def _act_1 val
1134
- _ID, _, _, = *val
1135
- "Node_#{_ID.value}.new(basis.file.lineno)"
1136
-
1137
- end
1138
- .,.,122745803342416.,.,
1139
-
1140
- module_eval <<-'.,.,122745803355262.,.,', 'ast.dr', 216
1141
- def _act_2 val
1142
- _ID, _, _fnlpair, _, = *val
1143
-
1144
- if g_parser.rhs.size > 0
1145
- "Node_#{_ID.value}.new(val[0].lineno, #{_fnlpair.join(', ')})"
1146
- else
1147
- "Node_#{_ID.value}.new(basis.file.lineno, #{_fnlpair.join(', ')})"
1148
- end
1149
-
1150
- end
1151
- .,.,122745803355262.,.,
1152
-
1153
- module_eval <<-'.,.,122745803363965.,.,', 'ast.dr', 225
1154
- def _act_3 val
1155
- _fnl, = *val
1156
- [_fnl]
1157
-
1158
- end
1159
- .,.,122745803363965.,.,
1160
-
1161
- module_eval <<-'.,.,122745803314919.,.,', 'ast.dr', 226
1162
- def _act_4 val
1163
- _fnlpair, _, _fnl, = *val
1164
- _fnlpair << _fnl
1165
-
1166
- end
1167
- .,.,122745803314919.,.,
1168
-
1169
- module_eval <<-'.,.,122745803310521.,.,', 'ast.dr', 229
1170
- def _act_5 val
1171
- _fact, = *val
1172
- _fact
1173
-
1174
- end
1175
- .,.,122745803310521.,.,
1176
-
1177
- module_eval <<-'.,.,122745803362726.,.,', 'ast.dr', 230
1178
- def _act_6 val
1179
- _node, = *val
1180
- _node
1181
-
1182
- end
1183
- .,.,122745803362726.,.,
1184
-
1185
- module_eval <<-'.,.,122745803349195.,.,', 'ast.dr', 231
1186
- def _act_7 val
1187
- _list, = *val
1188
- _list
1189
-
1190
- end
1191
- .,.,122745803349195.,.,
1192
-
1193
- module_eval <<-'.,.,122745803359728.,.,', 'ast.dr', 235
1194
- def _act_8 val
1195
- _ID, _opt_embed, = *val
1196
-
1197
- unless i = g_parser.name_to_rhs_index(_ID.value)
1198
- warn "#{g_parser.lineno}: ?#{_ID.value}"
1199
- raise
1200
- end
1201
- "val[#{i}]#{val[1]}"
1202
-
1203
- end
1204
- .,.,122745803359728.,.,
1205
-
1206
- module_eval <<-'.,.,122745803321128.,.,', 'ast.dr', 242
1207
- def _act_9 val
1208
- _CONST, = *val
1209
- "Depager::Token[#{_CONST.value}]"
1210
-
1211
- end
1212
- .,.,122745803321128.,.,
1213
-
1214
- module_eval <<-'.,.,122745803364413.,.,', 'ast.dr', 243
1215
- def _act_10 val
1216
- _SYMBOL, = *val
1217
- "Depager::Token[#{_SYMBOL.value}]"
1218
-
1219
- end
1220
- .,.,122745803364413.,.,
1221
-
1222
- module_eval <<-'.,.,122745803318993.,.,', 'ast.dr', 244
1223
- def _act_11 val
1224
- _STR, = *val
1225
- "Depager::Token['#{_STR.value}']"
1226
-
1227
- end
1228
- .,.,122745803318993.,.,
1229
-
1230
- module_eval <<-'.,.,122745803313763.,.,', 'ast.dr', 245
1231
- def _act_12 val
1232
- _NILNODE, = *val
1233
- "NilNode.new(basis.file.lineno)"
1234
-
1235
- end
1236
- .,.,122745803313763.,.,
1237
-
1238
- module_eval <<-'.,.,122745803311965.,.,', 'ast.dr', 246
1239
- def _act_13 val
1240
- _NUMBER, = *val
1241
- "Depager::Token[#{_NUMBER.value}]"
1242
-
1243
- end
1244
- .,.,122745803311965.,.,
1245
-
1246
- module_eval <<-'.,.,122745803349781.,.,', 'ast.dr', 247
1247
- def _act_14 val
1248
- _NIL, = *val
1249
- "nil"
1250
-
1251
- end
1252
- .,.,122745803349781.,.,
1253
-
1254
- module_eval <<-'.,.,122745803334484.,.,', 'ast.dr', 250
1255
- def _act_15 val
1256
- ''
1257
-
1258
- end
1259
- .,.,122745803334484.,.,
1260
-
1261
- module_eval <<-'.,.,122745803333629.,.,', 'ast.dr', 251
1262
- def _act_16 val
1263
- _EMBED, = *val
1264
- _EMBED.value
1265
-
1266
- end
1267
- .,.,122745803333629.,.,
1268
-
1269
- module_eval <<-'.,.,122745803344085.,.,', 'ast.dr', 254
1270
- def _act_17 val
1271
- _, _, = *val
1272
- "NodeList.new(basis.file.lineno, [])"
1273
-
1274
- end
1275
- .,.,122745803344085.,.,
1276
-
1277
- module_eval <<-'.,.,122745803324936.,.,', 'ast.dr', 256
1278
- def _act_18 val
1279
- _, _fnlpair, _, = *val
1280
-
1281
- if g_parser.rhs.size > 0
1282
- "NodeList.new(val[0].lineno, [#{_fnlpair.join(', ')}])"
1283
- else
1284
- "NodeList.new(basis.file.lineno, #{_fnlpair.join(', ')})"
1285
- end
1286
-
1287
- end
1288
- .,.,122745803324936.,.,
1289
-
1290
- module_eval <<-'.,.,122745803328741.,.,', 'ast.dr', 263
1291
- def _act_19 val
1292
- _l, _LL, _r, = *val
1293
- "#{_l}.push(#{_r})"
1294
-
1295
- end
1296
- .,.,122745803328741.,.,
1297
-
1298
- module_eval <<-'.,.,122745803318918.,.,', 'ast.dr', 264
1299
- def _act_20 val
1300
- _l, _, _r, = *val
1301
- "#{_l}.concat(#{_r})"
1302
-
1303
- end
1304
- .,.,122745803318918.,.,
1305
-
1306
- end
1307
-
1308
-