depager 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. data/ChangeLog +4 -0
  2. data/bin/depager +1 -0
  3. data/data/depager/misc/depager-mode.el +35 -24
  4. data/data/depager/pre-setup.rb +3 -0
  5. data/examples/Rakefile +36 -0
  6. data/examples/c89/c89.dr +496 -0
  7. data/examples/c89/c89.tab.rb +2197 -0
  8. data/examples/c89/test.c89 +10 -0
  9. data/{data/depager/sample → examples}/extension/paction.dr +0 -0
  10. data/{data/depager/sample → examples}/extension/pactiontest.dr +0 -0
  11. data/{data/depager/sample → examples}/pl0d/pl0ds.dr +0 -0
  12. data/examples/pl0d/pl0ds.tab.rb +1702 -0
  13. data/{data/depager/sample/pl0d/pl0test.pl0 → examples/pl0d/test.pl0ds} +0 -0
  14. data/{data/depager/sample → examples}/sample_calc/calc.action.dr +0 -0
  15. data/examples/sample_calc/calc.action.tab.rb +283 -0
  16. data/{data/depager/sample → examples}/sample_calc/calc.astdf.dr +0 -0
  17. data/examples/sample_calc/calc.astdf.tab.rb +476 -0
  18. data/{data/depager/sample → examples}/sample_calc/calc.astl.action.dr +0 -0
  19. data/examples/sample_calc/calc.astl.action.tab.rb +593 -0
  20. data/{data/depager/sample → examples}/sample_calc/calc.astl.dr +0 -0
  21. data/examples/sample_calc/calc.astl.tab.rb +501 -0
  22. data/{data/depager/sample → examples}/sample_calc/calc.atree.dr +0 -0
  23. data/examples/sample_calc/calc.atree.tab.rb +277 -0
  24. data/{data/depager/sample → examples}/sample_calc/calc.cst.dr +0 -0
  25. data/examples/sample_calc/calc.cst.tab.rb +478 -0
  26. data/{data/depager/sample → examples}/sample_calc/calc.dr +0 -0
  27. data/{data/depager/sample → examples}/sample_calc/calc.lex.dr +0 -0
  28. data/examples/sample_calc/calc.lex.tab.rb +192 -0
  29. data/{data/depager/sample → examples}/sample_calc/calc.nvaction.dr +0 -0
  30. data/examples/sample_calc/calc.nvaction.tab.rb +291 -0
  31. data/examples/sample_calc/calc.tab.rb +183 -0
  32. data/{data/depager/sample → examples}/sample_calc/calc_prec.nvaction.dr +0 -0
  33. data/examples/sample_calc/calc_prec.nvaction.tab.rb +257 -0
  34. data/examples/sample_calc/test.calc +1 -0
  35. data/{data/depager/sample/slex_test/slextest1.dr → examples/slex_test/divreg.slex.dr} +3 -11
  36. data/examples/slex_test/divreg.slex.tab.rb +227 -0
  37. data/{data/depager/sample/slex_test/slextest2.dr → examples/slex_test/ljoin.slex.dr} +10 -7
  38. data/examples/slex_test/ljoin.slex.tab.rb +277 -0
  39. data/examples/slex_test/test.divreg +1 -0
  40. data/examples/slex_test/test.ljoin +3 -0
  41. data/lib/depager.rb +194 -127
  42. data/lib/depager/Rakefile +8 -4
  43. data/lib/depager/ast_base.dr +3 -3
  44. data/lib/depager/ast_base.rb +197 -144
  45. data/lib/depager/atree.rb +55 -36
  46. data/lib/depager/cst.dr +6 -4
  47. data/lib/depager/cst.rb +69 -49
  48. data/lib/depager/grammar.rb +136 -0
  49. data/lib/depager/lex.dr +22 -8
  50. data/lib/depager/lex.rb +94 -53
  51. data/lib/depager/lr.rb +101 -167
  52. data/lib/depager/parse_action.rb +1 -1
  53. data/lib/depager/parser.rb +34 -7
  54. data/lib/depager/slex.dr +76 -36
  55. data/lib/depager/slex.rb +345 -151
  56. data/lib/depager/srp.rb +3 -2
  57. data/lib/depager/template/extension_lalr_slave.erb +1 -1
  58. data/lib/depager/template/single_lalr_parser.erb +1 -1
  59. data/lib/depager/utils.rb +2 -1
  60. data/lib/depager/version.rb +2 -2
  61. metadata +42 -28
  62. data/Manifest.txt +0 -52
  63. data/lib/depager/psrtmpl.rb +0 -33
@@ -0,0 +1,277 @@
1
+
2
+ begin; require 'rubygems'; rescue Exception; end
3
+ require 'depager/parser.rb'
4
+
5
+
6
+ module D4TinyCalc
7
+ 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
+ 'ATreeBuilder' => 2,
28
+ }
29
+ ### Term to Int
30
+ t2i = {
31
+ nil => 0,
32
+ false => 1,
33
+ "+" => 2,
34
+ "-" => 3,
35
+ "*" => 4,
36
+ "/" => 5,
37
+ :NUM => 6,
38
+ "(" => 7,
39
+ ")" => 8,
40
+ }
41
+ ### Int to Term
42
+ i2t = [
43
+ nil,
44
+ false,
45
+ "+",
46
+ "-",
47
+ "*",
48
+ "/",
49
+ :NUM,
50
+ "(",
51
+ ")",
52
+ ]
53
+ ### Action Table
54
+ action_table = [
55
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
56
+ [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
57
+ [ ACC, nil, 7, 8, nil, nil, nil, nil, nil, ],
58
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
59
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
60
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
61
+ [ nil, nil, 7, 8, nil, nil, nil, nil, 11, ],
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, 5, 1, nil, ],
66
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
67
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
68
+ [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
69
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
70
+ [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
71
+ ]
72
+ ### Default Reduce Table
73
+ defred_table = [
74
+ nil,
75
+ nil,
76
+ nil,
77
+ -3,
78
+ -6,
79
+ -7,
80
+ nil,
81
+ nil,
82
+ nil,
83
+ nil,
84
+ nil,
85
+ -8,
86
+ -1,
87
+ -2,
88
+ -4,
89
+ -5,
90
+ ]
91
+ defred_after_shift_table = [
92
+ nil,
93
+ nil,
94
+ nil,
95
+ nil,
96
+ -6,
97
+ -7,
98
+ nil,
99
+ nil,
100
+ nil,
101
+ nil,
102
+ nil,
103
+ -8,
104
+ nil,
105
+ nil,
106
+ -4,
107
+ -5,
108
+ ]
109
+ ### Nonterm to Int
110
+ nt2i = {
111
+ :expr => 0,
112
+ :term => 1,
113
+ :fact => 2,
114
+ }
115
+ ### Int to Nonterm
116
+ i2nt = [
117
+ :expr,
118
+ :term,
119
+ :fact,
120
+ ]
121
+ ### Goto Table
122
+ goto_table = [
123
+ [ 2, 3, 4, ],
124
+ [ 6, 3, 4, ],
125
+ [ nil, nil, nil, ],
126
+ [ nil, nil, nil, ],
127
+ [ nil, nil, nil, ],
128
+ [ nil, nil, nil, ],
129
+ [ nil, nil, nil, ],
130
+ [ nil, 12, 4, ],
131
+ [ nil, 13, 4, ],
132
+ [ nil, nil, 14, ],
133
+ [ nil, nil, 15, ],
134
+ [ nil, nil, nil, ],
135
+ [ nil, nil, nil, ],
136
+ [ nil, nil, nil, ],
137
+ [ nil, nil, nil, ],
138
+ [ nil, nil, nil, ],
139
+ ]
140
+
141
+ Tables = [ reduce_table, nparams, action_table,
142
+ defred_table, defred_after_shift_table, goto_table,
143
+ t2i, i2t, nt2i, i2nt ]
144
+
145
+ def self.createDecoratedParser
146
+ D4TinyCalc::ATreeBuilder.new(TinyCalc.new())
147
+ end
148
+
149
+ ### Inner Code
150
+
151
+ def lex
152
+ begin
153
+ until @line.empty?
154
+ case @line
155
+
156
+ when /\A\s+/, /\A\#.*/
157
+ @oldline = @line; @line = $'
158
+
159
+
160
+
161
+ when /\A[1-9][0-9]*/
162
+ @oldline = @line; @line = $'
163
+ yield _Token(:NUM, $&.to_i)
164
+
165
+
166
+ when /\A./
167
+ @oldline = @line; @line = $'
168
+ yield _Token($&, $&)
169
+
170
+
171
+ else
172
+ raise RuntimeError, "must not happen #{@line}"
173
+ end
174
+ end
175
+ end while @line0 = @line = getline
176
+ yield nil, nil
177
+ end
178
+
179
+ end
180
+
181
+ ### Outer Code
182
+
183
+ class D4TinyCalc::ATreeBuilder < Depager::LALR::Action #:nodoc:all
184
+ include Depager::DecoratorUtils
185
+
186
+ on_reduce = [
187
+ nil,
188
+ :_atree_0,
189
+ :_atree_1,
190
+ :_atree_2,
191
+ :_atree_3,
192
+ :_atree_4,
193
+ :_atree_5,
194
+ :_atree_6,
195
+ :_atree_7,
196
+
197
+ ]
198
+ Tables = [on_reduce]
199
+ def initialize inside
200
+ super inside, 'ATreeBuilder'
201
+ @on_reduce, = self.class::Tables
202
+ init_parser
203
+ end
204
+
205
+
206
+ module_eval <<-'.,.,118754109027636.,.,', 'sample_calc/calc.atree.dr', 17
207
+ def _atree_0 val
208
+ [:add, val[0],val[2]]
209
+ end
210
+
211
+ .,.,118754109027636.,.,
212
+
213
+ module_eval <<-'.,.,118754109032509.,.,', 'sample_calc/calc.atree.dr', 19
214
+ def _atree_1 val
215
+ [:sub, val[0],val[2]]
216
+ end
217
+
218
+ .,.,118754109032509.,.,
219
+
220
+ module_eval <<-'.,.,118754109043231.,.,', 'sample_calc/calc.atree.dr', 21
221
+ def _atree_2 val
222
+ val[0]
223
+ end
224
+
225
+ .,.,118754109043231.,.,
226
+
227
+ module_eval <<-'.,.,11875410902130.,.,', 'sample_calc/calc.atree.dr', 25
228
+ def _atree_3 val
229
+ [:mul, val[0],val[2]]
230
+ end
231
+
232
+ .,.,11875410902130.,.,
233
+
234
+ module_eval <<-'.,.,11875410909726.,.,', 'sample_calc/calc.atree.dr', 27
235
+ def _atree_4 val
236
+ [:div, val[0],val[2]]
237
+ end
238
+
239
+ .,.,11875410909726.,.,
240
+
241
+ module_eval <<-'.,.,11875410909992.,.,', 'sample_calc/calc.atree.dr', 29
242
+ def _atree_5 val
243
+ val[0]
244
+ end
245
+
246
+ .,.,11875410909992.,.,
247
+
248
+ module_eval <<-'.,.,118754109027407.,.,', 'sample_calc/calc.atree.dr', 33
249
+ def _atree_6 val
250
+ [:literal, val[0]]
251
+ end
252
+
253
+ .,.,118754109027407.,.,
254
+
255
+ module_eval <<-'.,.,118754109041552.,.,', 'sample_calc/calc.atree.dr', 35
256
+ def _atree_7 val
257
+ val[1]
258
+ end
259
+
260
+ .,.,118754109041552.,.,
261
+
262
+ end
263
+
264
+
265
+ def createDecoratedTinyCalc
266
+ D4TinyCalc::ATreeBuilder.new(TinyCalc.new())
267
+ end
268
+
269
+ ### main
270
+ if __FILE__ == $0
271
+ ### Main Code
272
+ require 'pp'
273
+ parser = createDecoratedTinyCalc
274
+ r, = parser.yyparse(STDIN)
275
+ pp r
276
+
277
+ end
@@ -0,0 +1,478 @@
1
+
2
+ begin; require 'rubygems'; rescue Exception; end
3
+ require 'depager/parser.rb'
4
+
5
+
6
+ module D4TinyCalc
7
+ 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
+ 'CSTBuilder' => 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
+ Tables = [ reduce_table, nparams, action_table,
141
+ defred_table, defred_after_shift_table, goto_table,
142
+ t2i, i2t, nt2i, i2nt ]
143
+
144
+ def self.createDecoratedParser
145
+ D4TinyCalc::CSTBuilder.new(TinyCalc.new())
146
+ end
147
+
148
+ ### Inner Code
149
+
150
+ def lex
151
+ begin
152
+ until @line.empty?
153
+ case @line
154
+
155
+ when /\A\s+/, /\A\#.*/
156
+ @oldline = @line; @line = $'
157
+
158
+
159
+
160
+ when /\A[1-9][0-9]*/
161
+ @oldline = @line; @line = $'
162
+ yield _Token(:NUM, $&.to_i)
163
+
164
+
165
+ when /\A./
166
+ @oldline = @line; @line = $'
167
+ yield _Token($&, $&)
168
+
169
+
170
+ else
171
+ raise RuntimeError, "must not happen #{@line}"
172
+ end
173
+ end
174
+ end while @line0 = @line = getline
175
+ yield nil, nil
176
+ end
177
+
178
+ end
179
+
180
+ ### Outer Code
181
+
182
+ class Node
183
+ def accept
184
+ end
185
+ end
186
+
187
+ class Visitor
188
+
189
+ module_eval <<-'.,.,118754109035322.,.,', 'sample_calc/calc.cst.dr', 23
190
+ def visit_Node_expr_0 node
191
+ node.value = node.expr.value + node.term.value
192
+
193
+ end
194
+
195
+ .,.,118754109035322.,.,
196
+
197
+ module_eval <<-'.,.,118754109055219.,.,', 'sample_calc/calc.cst.dr', 24
198
+ def visit_Node_expr_1 node
199
+ node.value = node.expr.value + node.term.value
200
+
201
+ end
202
+
203
+ .,.,118754109055219.,.,
204
+
205
+ module_eval <<-'.,.,118754109026591.,.,', 'sample_calc/calc.cst.dr', 25
206
+ def visit_Node_expr_2 node
207
+ node.value = node.term.value
208
+
209
+ end
210
+
211
+ .,.,118754109026591.,.,
212
+
213
+ module_eval <<-'.,.,118754109017048.,.,', 'sample_calc/calc.cst.dr', 28
214
+ def visit_Node_term_0 node
215
+ node.value = node.term.value * node.fact.value
216
+
217
+ end
218
+
219
+ .,.,118754109017048.,.,
220
+
221
+ module_eval <<-'.,.,118754109059012.,.,', 'sample_calc/calc.cst.dr', 29
222
+ def visit_Node_term_1 node
223
+ node.value = node.term.value / node.fact.value
224
+
225
+ end
226
+
227
+ .,.,118754109059012.,.,
228
+
229
+ module_eval <<-'.,.,118754109013457.,.,', 'sample_calc/calc.cst.dr', 30
230
+ def visit_Node_term_2 node
231
+ node.value = node.fact.value
232
+
233
+ end
234
+
235
+ .,.,118754109013457.,.,
236
+
237
+ module_eval <<-'.,.,118754109020434.,.,', 'sample_calc/calc.cst.dr', 33
238
+ def visit_Node_fact_0 node
239
+ node.value = node.num.value
240
+
241
+ end
242
+
243
+ .,.,118754109020434.,.,
244
+
245
+ module_eval <<-'.,.,118754109063699.,.,', 'sample_calc/calc.cst.dr', 34
246
+ def visit_Node_fact_1 node
247
+ node.value = node.expr
248
+
249
+ end
250
+
251
+ .,.,118754109063699.,.,
252
+
253
+ end
254
+
255
+ class Node
256
+
257
+ attr_accessor :value
258
+ def initialize
259
+ @value = nil
260
+ end
261
+
262
+ end
263
+ class Visitor
264
+
265
+ end
266
+
267
+ class Node_expr < Node
268
+ def initialize
269
+ super()
270
+ end
271
+ end
272
+
273
+ class Node_expr_0 < Node_expr
274
+ attr_accessor :expr, :tx2b, :term
275
+ def initialize expr, tx2b, term
276
+ super()
277
+ @expr = expr; @tx2b = tx2b; @term = term
278
+ end
279
+ def accept v
280
+ expr.accept(v); term.accept(v);
281
+ v.visit_Node_expr_0(self)
282
+ end
283
+ end
284
+
285
+ class Node_expr_1 < Node_expr
286
+ attr_accessor :expr, :tx2d, :term
287
+ def initialize expr, tx2d, term
288
+ super()
289
+ @expr = expr; @tx2d = tx2d; @term = term
290
+ end
291
+ def accept v
292
+ expr.accept(v); term.accept(v);
293
+ v.visit_Node_expr_1(self)
294
+ end
295
+ end
296
+
297
+ class Node_expr_2 < Node_expr
298
+ attr_accessor :term
299
+ def initialize term
300
+ super()
301
+ @term = term
302
+ end
303
+ def accept v
304
+ term.accept(v);
305
+ v.visit_Node_expr_2(self)
306
+ end
307
+ end
308
+
309
+ class Node_term < Node
310
+ def initialize
311
+ super()
312
+ end
313
+ end
314
+
315
+ class Node_term_0 < Node_term
316
+ attr_accessor :term, :tx2a, :fact
317
+ def initialize term, tx2a, fact
318
+ super()
319
+ @term = term; @tx2a = tx2a; @fact = fact
320
+ end
321
+ def accept v
322
+ term.accept(v); fact.accept(v);
323
+ v.visit_Node_term_0(self)
324
+ end
325
+ end
326
+
327
+ class Node_term_1 < Node_term
328
+ attr_accessor :term, :tx2f, :fact
329
+ def initialize term, tx2f, fact
330
+ super()
331
+ @term = term; @tx2f = tx2f; @fact = fact
332
+ end
333
+ def accept v
334
+ term.accept(v); fact.accept(v);
335
+ v.visit_Node_term_1(self)
336
+ end
337
+ end
338
+
339
+ class Node_term_2 < Node_term
340
+ attr_accessor :fact
341
+ def initialize fact
342
+ super()
343
+ @fact = fact
344
+ end
345
+ def accept v
346
+ fact.accept(v);
347
+ v.visit_Node_term_2(self)
348
+ end
349
+ end
350
+
351
+ class Node_fact < Node
352
+ def initialize
353
+ super()
354
+ end
355
+ end
356
+
357
+ class Node_fact_0 < Node_fact
358
+ attr_accessor :num
359
+ def initialize num
360
+ super()
361
+ @num = num
362
+ end
363
+ def accept v
364
+
365
+ v.visit_Node_fact_0(self)
366
+ end
367
+ end
368
+
369
+ class Node_fact_1 < Node_fact
370
+ attr_accessor :tx28, :expr, :tx29
371
+ def initialize tx28, expr, tx29
372
+ super()
373
+ @tx28 = tx28; @expr = expr; @tx29 = tx29
374
+ end
375
+ def accept v
376
+ expr.accept(v);
377
+ v.visit_Node_fact_1(self)
378
+ end
379
+ end
380
+
381
+ class D4TinyCalc::CSTBuilder < Depager::LALR::Action #:nodoc:all
382
+ include Depager::DecoratorUtils
383
+
384
+ on_reduce = [
385
+ nil,
386
+ :_cst_0,
387
+ :_cst_1,
388
+ :_cst_2,
389
+ :_cst_3,
390
+ :_cst_4,
391
+ :_cst_5,
392
+ :_cst_6,
393
+ :_cst_7,
394
+
395
+ ]
396
+ Tables = [on_reduce]
397
+ def initialize inside
398
+ super inside, 'CSTBuilder'
399
+ @on_reduce, = self.class::Tables
400
+ init_parser
401
+ end
402
+
403
+
404
+ module_eval <<-'.,.,118754109050531.,.,', 'sample_calc/calc.cst.dr', 23
405
+ def _cst_0 val
406
+ Node_expr_0.new(val[0], val[1], val[2])
407
+ end
408
+
409
+ .,.,118754109050531.,.,
410
+
411
+ module_eval <<-'.,.,118754109039698.,.,', 'sample_calc/calc.cst.dr', 24
412
+ def _cst_1 val
413
+ Node_expr_1.new(val[0], val[1], val[2])
414
+ end
415
+
416
+ .,.,118754109039698.,.,
417
+
418
+ module_eval <<-'.,.,1187541090475.,.,', 'sample_calc/calc.cst.dr', 25
419
+ def _cst_2 val
420
+ Node_expr_2.new(val[0])
421
+ end
422
+
423
+ .,.,1187541090475.,.,
424
+
425
+ module_eval <<-'.,.,118754109053937.,.,', 'sample_calc/calc.cst.dr', 28
426
+ def _cst_3 val
427
+ Node_term_0.new(val[0], val[1], val[2])
428
+ end
429
+
430
+ .,.,118754109053937.,.,
431
+
432
+ module_eval <<-'.,.,118754109039336.,.,', 'sample_calc/calc.cst.dr', 29
433
+ def _cst_4 val
434
+ Node_term_1.new(val[0], val[1], val[2])
435
+ end
436
+
437
+ .,.,118754109039336.,.,
438
+
439
+ module_eval <<-'.,.,118754109031052.,.,', 'sample_calc/calc.cst.dr', 30
440
+ def _cst_5 val
441
+ Node_term_2.new(val[0])
442
+ end
443
+
444
+ .,.,118754109031052.,.,
445
+
446
+ module_eval <<-'.,.,11875410903088.,.,', 'sample_calc/calc.cst.dr', 33
447
+ def _cst_6 val
448
+ Node_fact_0.new(val[0])
449
+ end
450
+
451
+ .,.,11875410903088.,.,
452
+
453
+ module_eval <<-'.,.,11875410905263.,.,', 'sample_calc/calc.cst.dr', 34
454
+ def _cst_7 val
455
+ Node_fact_1.new(val[0], val[1], val[2])
456
+ end
457
+
458
+ .,.,11875410905263.,.,
459
+
460
+ end
461
+
462
+
463
+ def createDecoratedTinyCalc
464
+ D4TinyCalc::CSTBuilder.new(TinyCalc.new())
465
+ end
466
+
467
+ ### main
468
+ if __FILE__ == $0
469
+ ### Main Code
470
+ require 'pp'
471
+ parser = createDecoratedTinyCalc
472
+ r, = parser.yyparse(STDIN)
473
+ v = Visitor.new
474
+ r.accept(v)
475
+ pp r
476
+ puts r.value
477
+
478
+ end