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