depager 0.2.3 → 0.3.0.b20160729

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 (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,54 +0,0 @@
1
- %class TinyCalc
2
- %extend Lexer ('plugins/lex.rb')
3
- %extend ASTBuilderDepthFirst ('plugins/astdf.rb')
4
- %decorate @ASTBuilderDepthFirst
5
- #%decorate ShiftReducePrinter ('plugins/srp.rb')
6
- %%
7
-
8
- %LEX{
9
- /\s+/, /\#.*/ { }
10
- /[1-9][0-9]*/ { yield token(:NUM, $&.to_i) }
11
- /./ { yield token($&, $&) }
12
- %}
13
-
14
- %AST{
15
- Node [value] { @value = nil }
16
- Visitor { }
17
- add(left, right) { $.value = $.left.value + $.right.value }
18
- sub(left, right) { $.value = $.left.value - $.right.value }
19
- mul(left, right) { $.value = $.left.value * $.right.value }
20
- div(left, right) { $.value = $.left.value / $.right.value }
21
- literal(-n) { $.value = $.n.value }
22
- %}
23
-
24
- #begin-rule
25
- expr :
26
- expr '+' term
27
- => add(expr, term)
28
- | expr '-' term
29
- => sub(expr, term)
30
- | term
31
- => term
32
- ;
33
- term :
34
- term '*' fact
35
- => mul(term, fact)
36
- | term '/' fact
37
- => div(term, fact)
38
- | fact
39
- => fact
40
- ;
41
- fact :
42
- NUM
43
- => literal(NUM)
44
- | '(' expr ')'
45
- => expr
46
- ;
47
- #end-rule
48
- %%
49
- require 'pp'
50
- parser = createDecoratedTinyCalc()
51
- t, = parser.parse(STDIN)
52
- v = Visitor.new
53
- pp t.accept(v).value
54
- pp t
@@ -1,672 +0,0 @@
1
-
2
- begin; require 'rubygems'; rescue Exception; end
3
- require 'depager/parser.rb'
4
-
5
-
6
- module Depager::DecoratorUtils; end
7
- module D4TinyCalc; end
8
-
9
- class TinyCalc < Depager::LALR::Basis
10
-
11
-
12
- ### Reduce Table
13
- reduce_table = [
14
- [ -1, 1 ], # ( 0) $start : expr
15
- [ 0, 3 ], # ( 1) expr : expr '+' term
16
- [ 0, 3 ], # ( 2) expr : expr '-' term
17
- [ 0, 1 ], # ( 3) expr : term
18
- [ 1, 3 ], # ( 4) term : term '*' fact
19
- [ 1, 3 ], # ( 5) term : term '/' fact
20
- [ 1, 1 ], # ( 6) term : fact
21
- [ 2, 1 ], # ( 7) fact : NUM
22
- [ 2, 3 ], # ( 8) fact : '(' expr ')'
23
- ]
24
- ### Extension Params
25
- nparams = {
26
- 'ASTBuilderDepthFirst' => 2,
27
- }
28
- ### Term to Int
29
- t2i = {
30
- nil => 0,
31
- false => 1,
32
- "+" => 2,
33
- "-" => 3,
34
- "*" => 4,
35
- "/" => 5,
36
- :NUM => 6,
37
- "(" => 7,
38
- ")" => 8,
39
- }
40
- ### Int to Term
41
- i2t = [
42
- nil,
43
- false,
44
- "+",
45
- "-",
46
- "*",
47
- "/",
48
- :NUM,
49
- "(",
50
- ")",
51
- ]
52
- ### Action Table
53
- action_table = [
54
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
55
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
56
- [ ACC, nil, 7, 8, nil, nil, nil, nil, nil, ],
57
- [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
58
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
59
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
60
- [ nil, nil, 7, 8, nil, nil, nil, nil, 11, ],
61
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
62
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
63
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
64
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
65
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
66
- [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
67
- [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
68
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
69
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
70
- ]
71
- ### Default Reduce Table
72
- defred_table = [
73
- nil,
74
- nil,
75
- nil,
76
- -3,
77
- -6,
78
- -7,
79
- nil,
80
- nil,
81
- nil,
82
- nil,
83
- nil,
84
- -8,
85
- -1,
86
- -2,
87
- -4,
88
- -5,
89
- ]
90
- defred_after_shift_table = [
91
- nil,
92
- nil,
93
- nil,
94
- nil,
95
- -6,
96
- -7,
97
- nil,
98
- nil,
99
- nil,
100
- nil,
101
- nil,
102
- -8,
103
- nil,
104
- nil,
105
- -4,
106
- -5,
107
- ]
108
- ### Nonterm to Int
109
- nt2i = {
110
- :expr => 0,
111
- :term => 1,
112
- :fact => 2,
113
- }
114
- ### Int to Nonterm
115
- i2nt = [
116
- :expr,
117
- :term,
118
- :fact,
119
- ]
120
- ### Goto Table
121
- goto_table = [
122
- [ 2, 3, 4, ],
123
- [ 6, 3, 4, ],
124
- [ nil, nil, nil, ],
125
- [ nil, nil, nil, ],
126
- [ nil, nil, nil, ],
127
- [ nil, nil, nil, ],
128
- [ nil, nil, nil, ],
129
- [ nil, 12, 4, ],
130
- [ nil, 13, 4, ],
131
- [ nil, nil, 14, ],
132
- [ nil, nil, 15, ],
133
- [ nil, nil, nil, ],
134
- [ nil, nil, nil, ],
135
- [ nil, nil, nil, ],
136
- [ nil, nil, nil, ],
137
- [ nil, nil, nil, ],
138
- ]
139
-
140
-
141
- alias orig_error error
142
- def error
143
- orig_error
144
- warn "current state: #{StateInfo[@stack.last]}"
145
- end
146
-
147
- ### States
148
- StateInfo = [
149
- <<'----------',
150
- I000 =
151
- ( 0) $start : _ expr
152
-
153
- NUM shift, and goto to state 5
154
- '(' shift, and goto to state 1
155
-
156
-
157
- ----------
158
-
159
- <<'----------',
160
- I001 =
161
- ( 8) fact : '(' _ expr ')'
162
-
163
- NUM shift, and goto to state 5
164
- '(' shift, and goto to state 1
165
-
166
-
167
- ----------
168
-
169
- <<'----------',
170
- I002 =
171
- ( 0) $start : expr _
172
- ( 1) expr : expr _ '+' term
173
- ( 2) expr : expr _ '-' term
174
-
175
- '+' shift, and goto to state 7
176
- '-' shift, and goto to state 8
177
-
178
-
179
- $end accept
180
-
181
- ----------
182
-
183
- <<'----------',
184
- I003 =
185
- ( 3) expr : term _
186
- ( 4) term : term _ '*' fact
187
- ( 5) term : term _ '/' fact
188
-
189
- '*' shift, and goto to state 9
190
- '/' shift, and goto to state 10
191
-
192
- $default reduce using rule 3 (expr)
193
-
194
- ----------
195
-
196
- <<'----------',
197
- I004 =
198
- ( 6) term : fact _
199
-
200
-
201
- $default reduce using rule 6 (term) [after shift]
202
-
203
- ----------
204
-
205
- <<'----------',
206
- I005 =
207
- ( 7) fact : NUM _
208
-
209
-
210
- $default reduce using rule 7 (fact) [after shift]
211
-
212
- ----------
213
-
214
- <<'----------',
215
- I006 =
216
- ( 8) fact : '(' expr _ ')'
217
- ( 1) expr : expr _ '+' term
218
- ( 2) expr : expr _ '-' term
219
-
220
- '+' shift, and goto to state 7
221
- '-' shift, and goto to state 8
222
- ')' shift, and goto to state 11
223
-
224
-
225
- ----------
226
-
227
- <<'----------',
228
- I007 =
229
- ( 1) expr : expr '+' _ term
230
-
231
- NUM shift, and goto to state 5
232
- '(' shift, and goto to state 1
233
-
234
-
235
- ----------
236
-
237
- <<'----------',
238
- I008 =
239
- ( 2) expr : expr '-' _ term
240
-
241
- NUM shift, and goto to state 5
242
- '(' shift, and goto to state 1
243
-
244
-
245
- ----------
246
-
247
- <<'----------',
248
- I009 =
249
- ( 4) term : term '*' _ fact
250
-
251
- NUM shift, and goto to state 5
252
- '(' shift, and goto to state 1
253
-
254
-
255
- ----------
256
-
257
- <<'----------',
258
- I010 =
259
- ( 5) term : term '/' _ fact
260
-
261
- NUM shift, and goto to state 5
262
- '(' shift, and goto to state 1
263
-
264
-
265
- ----------
266
-
267
- <<'----------',
268
- I011 =
269
- ( 8) fact : '(' expr ')' _
270
-
271
-
272
- $default reduce using rule 8 (fact) [after shift]
273
-
274
- ----------
275
-
276
- <<'----------',
277
- I012 =
278
- ( 1) expr : expr '+' term _
279
- ( 4) term : term _ '*' fact
280
- ( 5) term : term _ '/' fact
281
-
282
- '*' shift, and goto to state 9
283
- '/' shift, and goto to state 10
284
-
285
- $default reduce using rule 1 (expr)
286
-
287
- ----------
288
-
289
- <<'----------',
290
- I013 =
291
- ( 2) expr : expr '-' term _
292
- ( 4) term : term _ '*' fact
293
- ( 5) term : term _ '/' fact
294
-
295
- '*' shift, and goto to state 9
296
- '/' shift, and goto to state 10
297
-
298
- $default reduce using rule 2 (expr)
299
-
300
- ----------
301
-
302
- <<'----------',
303
- I014 =
304
- ( 4) term : term '*' fact _
305
-
306
-
307
- $default reduce using rule 4 (term) [after shift]
308
-
309
- ----------
310
-
311
- <<'----------',
312
- I015 =
313
- ( 5) term : term '/' fact _
314
-
315
-
316
- $default reduce using rule 5 (term) [after shift]
317
-
318
- ----------
319
- ]
320
-
321
-
322
- Tables = [ reduce_table, nparams, action_table,
323
- defred_table, defred_after_shift_table, goto_table,
324
- t2i, i2t, nt2i, i2nt ]
325
-
326
- def self.createDecoratedParser
327
- D4TinyCalc::ASTBuilderDepthFirst.new(TinyCalc.new())
328
- end
329
-
330
- ### Inner Code
331
-
332
- def lex
333
- begin
334
- until @line.empty?
335
- case @line
336
-
337
- when /\A\s+/, /\A\#.*/
338
- @oldline = @line; @line = $'
339
-
340
-
341
-
342
- when /\A[1-9][0-9]*/
343
- @oldline = @line; @line = $'
344
- yield token(:NUM, $&.to_i)
345
-
346
-
347
- when /\A./
348
- @oldline = @line; @line = $'
349
- yield token($&, $&)
350
-
351
-
352
- else
353
- raise RuntimeError, "must not happen #{@line}"
354
- end
355
- end
356
- end while @line0 = @line = getline
357
- yield nil, nil
358
- end
359
-
360
- end
361
-
362
- ### Outer Code
363
- class Node
364
- attr_accessor :lineno
365
- attr_accessor :value
366
-
367
- def initialize
368
- @value = nil
369
-
370
- end
371
-
372
- def self.[] lineno, *args
373
- self.new lineno, *args
374
- end
375
- def accept v
376
- end
377
- end
378
- class NodeList < Node
379
- attr_accessor :lineno
380
- def initialize(lineno, lst=[])
381
- @lineno = lineno
382
- @lst = lst.to_a.select{|i| ! i.is_a?(NilNode)}
383
- end
384
-
385
- def all_value
386
- @lst.map{|i| i.value}
387
- end
388
-
389
- def size
390
- @lst.size
391
- end
392
- alias length size
393
- def push(i)
394
- @lst.push i unless i.is_a? NilNode
395
- self
396
- end
397
- def concat(i)
398
- @lst.concat i
399
- self
400
- end
401
- def to_ary()
402
- @lst
403
- end
404
- alias to_a to_ary
405
- alias list to_ary
406
- def accept(v)
407
- @lst.each{|i| i.accept(v) }
408
- end
409
- end
410
- class NilNode
411
- attr_accessor :lineno
412
- attr_accessor :value
413
- def initialize(lineno, *args)
414
- @lineno = lineno
415
- end
416
- def accept v
417
- end
418
- end
419
- class Node_add < Node
420
- attr_accessor :left, :right
421
- attr_accessor
422
- def initialize lineno, left, right
423
- super()
424
- @lineno = lineno
425
- @lineno = lineno
426
- @left = left
427
- @right = right
428
-
429
- end
430
- def accept v
431
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
432
- @left.accept(v)
433
- @right.accept(v)
434
-
435
- v.visit_Node_add(self)
436
- self
437
- end
438
- end
439
- class Node_sub < Node
440
- attr_accessor :left, :right
441
- attr_accessor
442
- def initialize lineno, left, right
443
- super()
444
- @lineno = lineno
445
- @lineno = lineno
446
- @left = left
447
- @right = right
448
-
449
- end
450
- def accept v
451
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
452
- @left.accept(v)
453
- @right.accept(v)
454
-
455
- v.visit_Node_sub(self)
456
- self
457
- end
458
- end
459
- class Node_mul < Node
460
- attr_accessor :left, :right
461
- attr_accessor
462
- def initialize lineno, left, right
463
- super()
464
- @lineno = lineno
465
- @lineno = lineno
466
- @left = left
467
- @right = right
468
-
469
- end
470
- def accept v
471
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
472
- @left.accept(v)
473
- @right.accept(v)
474
-
475
- v.visit_Node_mul(self)
476
- self
477
- end
478
- end
479
- class Node_div < Node
480
- attr_accessor :left, :right
481
- attr_accessor
482
- def initialize lineno, left, right
483
- super()
484
- @lineno = lineno
485
- @lineno = lineno
486
- @left = left
487
- @right = right
488
-
489
- end
490
- def accept v
491
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
492
- @left.accept(v)
493
- @right.accept(v)
494
-
495
- v.visit_Node_div(self)
496
- self
497
- end
498
- end
499
- class Node_literal < Node
500
- attr_accessor :n
501
- attr_accessor :n
502
- def initialize lineno, n
503
- super()
504
- @lineno = lineno
505
- @lineno = lineno
506
- @n = n
507
-
508
- end
509
- def accept v
510
- warn @lineno.to_s+':'+self.class.to_s if $DEBUG
511
-
512
- v.visit_Node_literal(self)
513
- self
514
- end
515
- end
516
-
517
- class Visitor
518
- def visit node
519
- node.accept(self)
520
- end
521
-
522
- module_eval <<-'.,.,122745803821011.,.,', 'sample_calc/calc.astdf.dr', 16
523
-
524
-
525
- .,.,122745803821011.,.,
526
-
527
- module_eval <<-'.,.,12274580381382.,.,', 'sample_calc/calc.astdf.dr', 16
528
- def visit_Node_add node
529
- node.value = node.left.value + node.right.value
530
-
531
- rescue
532
- warn "raise at src:#{node.lineno}/#{node.class.name}"
533
- raise
534
-
535
- end
536
- .,.,12274580381382.,.,
537
-
538
- module_eval <<-'.,.,122745803862484.,.,', 'sample_calc/calc.astdf.dr', 17
539
- def visit_Node_sub node
540
- node.value = node.left.value - node.right.value
541
-
542
- rescue
543
- warn "raise at src:#{node.lineno}/#{node.class.name}"
544
- raise
545
-
546
- end
547
- .,.,122745803862484.,.,
548
-
549
- module_eval <<-'.,.,122745803834024.,.,', 'sample_calc/calc.astdf.dr', 18
550
- def visit_Node_mul node
551
- node.value = node.left.value * node.right.value
552
-
553
- rescue
554
- warn "raise at src:#{node.lineno}/#{node.class.name}"
555
- raise
556
-
557
- end
558
- .,.,122745803834024.,.,
559
-
560
- module_eval <<-'.,.,122745803829849.,.,', 'sample_calc/calc.astdf.dr', 19
561
- def visit_Node_div node
562
- node.value = node.left.value / node.right.value
563
-
564
- rescue
565
- warn "raise at src:#{node.lineno}/#{node.class.name}"
566
- raise
567
-
568
- end
569
- .,.,122745803829849.,.,
570
-
571
- module_eval <<-'.,.,122745803814243.,.,', 'sample_calc/calc.astdf.dr', 20
572
- def visit_Node_literal node
573
- node.value = node.n.value
574
-
575
- rescue
576
- warn "raise at src:#{node.lineno}/#{node.class.name}"
577
- raise
578
-
579
- end
580
- .,.,122745803814243.,.,
581
-
582
- end
583
-
584
- class D4TinyCalc::ASTBuilderDepthFirst < Depager::LALR::Action #:nodoc:all
585
- include Depager::DecoratorUtils
586
-
587
- on_reduce = [
588
- nil,
589
- :_ast_0,
590
- :_ast_1,
591
- :_ast_2,
592
- :_ast_3,
593
- :_ast_4,
594
- :_ast_5,
595
- :_ast_6,
596
- :_ast_7,
597
-
598
- ]
599
- Tables = [on_reduce]
600
- def initialize inside
601
- super inside, 'ASTBuilderDepthFirst'
602
- @on_reduce, = self.class::Tables
603
- init_parser
604
- end
605
-
606
-
607
- module_eval <<-'.,.,122745803811862.,.,', 'sample_calc/calc.astdf.dr', 26
608
- def _ast_0 val
609
- Node_add.new(val[0].lineno, val[0], val[2])
610
- end
611
- .,.,122745803811862.,.,
612
-
613
- module_eval <<-'.,.,122745803856027.,.,', 'sample_calc/calc.astdf.dr', 28
614
- def _ast_1 val
615
- Node_sub.new(val[0].lineno, val[0], val[2])
616
- end
617
- .,.,122745803856027.,.,
618
-
619
- module_eval <<-'.,.,122745803849322.,.,', 'sample_calc/calc.astdf.dr', 30
620
- def _ast_2 val
621
- val[0]
622
- end
623
- .,.,122745803849322.,.,
624
-
625
- module_eval <<-'.,.,12274580384051.,.,', 'sample_calc/calc.astdf.dr', 34
626
- def _ast_3 val
627
- Node_mul.new(val[0].lineno, val[0], val[2])
628
- end
629
- .,.,12274580384051.,.,
630
-
631
- module_eval <<-'.,.,122745803856888.,.,', 'sample_calc/calc.astdf.dr', 36
632
- def _ast_4 val
633
- Node_div.new(val[0].lineno, val[0], val[2])
634
- end
635
- .,.,122745803856888.,.,
636
-
637
- module_eval <<-'.,.,122745803846734.,.,', 'sample_calc/calc.astdf.dr', 38
638
- def _ast_5 val
639
- val[0]
640
- end
641
- .,.,122745803846734.,.,
642
-
643
- module_eval <<-'.,.,12274580385064.,.,', 'sample_calc/calc.astdf.dr', 42
644
- def _ast_6 val
645
- Node_literal.new(val[0].lineno, val[0])
646
- end
647
- .,.,12274580385064.,.,
648
-
649
- module_eval <<-'.,.,122745803818388.,.,', 'sample_calc/calc.astdf.dr', 44
650
- def _ast_7 val
651
- val[1]
652
- end
653
- .,.,122745803818388.,.,
654
-
655
- end
656
-
657
-
658
- def createDecoratedTinyCalc
659
- D4TinyCalc::ASTBuilderDepthFirst.new(TinyCalc.new())
660
- end
661
-
662
- ### main
663
- if __FILE__ == $0
664
- ### Main Code
665
- require 'pp'
666
- parser = createDecoratedTinyCalc()
667
- t, = parser.parse(STDIN)
668
- v = Visitor.new
669
- pp t.accept(v).value
670
- pp t
671
-
672
- end