depager 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/ChangeLog +4 -0
  2. data/README.en +5 -10
  3. data/bin/depager +17 -20
  4. data/examples/c89/c89.tab.rb +5632 -702
  5. data/examples/pl0d/pl0ds.dr +41 -41
  6. data/examples/pl0d/pl0ds.tab.rb +1887 -874
  7. data/examples/sample_calc/calc.action.tab.rb +243 -69
  8. data/examples/sample_calc/{calc.astl.action.dr → calc.ast.action.dr} +7 -7
  9. data/examples/sample_calc/calc.ast.action.tab.rb +755 -0
  10. data/examples/sample_calc/{calc.astl.dr → calc.ast.dr} +7 -7
  11. data/examples/sample_calc/calc.ast.tab.rb +672 -0
  12. data/examples/sample_calc/calc.astdf.dr +5 -5
  13. data/examples/sample_calc/calc.astdf.tab.rb +405 -202
  14. data/examples/sample_calc/calc.atree.tab.rb +243 -69
  15. data/examples/sample_calc/calc.cst.tab.rb +275 -109
  16. data/examples/sample_calc/calc.lex.tab.rb +210 -28
  17. data/examples/sample_calc/calc.nvaction.tab.rb +251 -77
  18. data/examples/sample_calc/calc.tab.rb +210 -28
  19. data/examples/sample_calc/calc_prec.nvaction.tab.rb +224 -50
  20. data/examples/slex_test/divreg.slex.tab.rb +97 -21
  21. data/examples/slex_test/ljoin.slex.tab.rb +128 -35
  22. data/lib/depager.rb +77 -44
  23. data/lib/depager/{ast_base.dr → ast.dr} +56 -18
  24. data/lib/depager/{ast_base.rb → ast.rb} +432 -424
  25. data/lib/depager/astdf.rb +3 -6
  26. data/lib/depager/atree.rb +54 -62
  27. data/lib/depager/cst.dr +2 -2
  28. data/lib/depager/cst.rb +64 -77
  29. data/lib/depager/grammar.rb +225 -66
  30. data/lib/depager/lex.dr +1 -1
  31. data/lib/depager/lex.rb +45 -54
  32. data/lib/depager/lr.rb +181 -262
  33. data/lib/depager/lr_put_table.rb +116 -0
  34. data/lib/depager/nvaction.rb +1 -1
  35. data/lib/depager/parser.rb +23 -2
  36. data/lib/depager/slex.dr +3 -3
  37. data/lib/depager/slex.rb +148 -169
  38. data/lib/depager/srp.rb +1 -1
  39. data/lib/depager/template/ast.erbs +69 -0
  40. data/lib/depager/template/extension_lalr_master.erb +3 -3
  41. data/lib/depager/template/extension_lalr_slave.erb +7 -7
  42. data/lib/depager/template/simple.erb +4 -2
  43. data/lib/depager/template/single_lalr_parser.erb +30 -10
  44. data/lib/depager/utils.rb +10 -9
  45. data/lib/depager/version.rb +2 -8
  46. metadata +10 -11
  47. data/examples/sample_calc/calc.astl.action.tab.rb +0 -593
  48. data/examples/sample_calc/calc.astl.tab.rb +0 -501
  49. data/lib/depager/astl.rb +0 -14
  50. data/lib/depager/template/astdf.erbs +0 -57
  51. data/lib/depager/template/astl.erbs +0 -57
@@ -3,8 +3,8 @@ begin; require 'rubygems'; rescue Exception; end
3
3
  require 'depager/parser.rb'
4
4
 
5
5
 
6
- module D4TinyCalc
7
- end
6
+ module Depager::DecoratorUtils; end
7
+ module D4TinyCalc; end
8
8
 
9
9
  class TinyCalc < Depager::LALR::Basis
10
10
 
@@ -13,14 +13,14 @@ class TinyCalc < Depager::LALR::Basis
13
13
  ### Reduce Table
14
14
  reduce_table = [
15
15
  [ -1, 1 ], # ( 0) $start : expr
16
- [ 0, 3 ], # ( 1) expr : expr + term
17
- [ 0, 3 ], # ( 2) expr : expr - term
16
+ [ 0, 3 ], # ( 1) expr : expr '+' term
17
+ [ 0, 3 ], # ( 2) expr : expr '-' term
18
18
  [ 0, 1 ], # ( 3) expr : term
19
- [ 1, 3 ], # ( 4) term : term * fact
20
- [ 1, 3 ], # ( 5) term : term / fact
19
+ [ 1, 3 ], # ( 4) term : term '*' fact
20
+ [ 1, 3 ], # ( 5) term : term '/' fact
21
21
  [ 1, 1 ], # ( 6) term : fact
22
22
  [ 2, 1 ], # ( 7) fact : NUM
23
- [ 2, 3 ], # ( 8) fact : ( expr )
23
+ [ 2, 3 ], # ( 8) fact : '(' expr ')'
24
24
  ]
25
25
  ### Extension Params
26
26
  nparams = {
@@ -52,26 +52,25 @@ class TinyCalc < Depager::LALR::Basis
52
52
  ]
53
53
  ### Action Table
54
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, ],
55
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
56
+ [ ACC, nil, 6, 7, nil, nil, nil, nil, nil, ],
57
+ [ nil, nil, nil, nil, 8, 9, nil, nil, nil, ],
59
58
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
60
59
  [ 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, ],
60
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
61
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
62
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
63
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
64
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
65
+ [ nil, nil, 6, 7, nil, nil, nil, nil, 15, ],
66
+ [ nil, nil, nil, nil, 8, 9, nil, nil, nil, ],
67
+ [ nil, nil, nil, nil, 8, 9, nil, nil, nil, ],
66
68
  [ 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
69
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
70
70
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
71
71
  ]
72
72
  ### Default Reduce Table
73
73
  defred_table = [
74
- nil,
75
74
  nil,
76
75
  nil,
77
76
  -3,
@@ -82,17 +81,17 @@ class TinyCalc < Depager::LALR::Basis
82
81
  nil,
83
82
  nil,
84
83
  nil,
85
- -8,
84
+ nil,
86
85
  -1,
87
86
  -2,
88
87
  -4,
89
88
  -5,
89
+ -8,
90
90
  ]
91
91
  defred_after_shift_table = [
92
92
  nil,
93
93
  nil,
94
94
  nil,
95
- nil,
96
95
  -6,
97
96
  -7,
98
97
  nil,
@@ -100,11 +99,12 @@ class TinyCalc < Depager::LALR::Basis
100
99
  nil,
101
100
  nil,
102
101
  nil,
103
- -8,
102
+ nil,
104
103
  nil,
105
104
  nil,
106
105
  -4,
107
106
  -5,
107
+ -8,
108
108
  ]
109
109
  ### Nonterm to Int
110
110
  nt2i = {
@@ -120,24 +120,206 @@ class TinyCalc < Depager::LALR::Basis
120
120
  ]
121
121
  ### Goto Table
122
122
  goto_table = [
123
- [ 2, 3, 4, ],
124
- [ 6, 3, 4, ],
123
+ [ 1, 2, 3, ],
125
124
  [ nil, nil, nil, ],
126
125
  [ nil, nil, nil, ],
127
126
  [ nil, nil, nil, ],
128
127
  [ nil, nil, nil, ],
129
- [ nil, nil, nil, ],
130
- [ nil, 12, 4, ],
131
- [ nil, 13, 4, ],
128
+ [ 10, 2, 3, ],
129
+ [ nil, 11, 3, ],
130
+ [ nil, 12, 3, ],
131
+ [ nil, nil, 13, ],
132
132
  [ nil, nil, 14, ],
133
- [ nil, nil, 15, ],
134
133
  [ nil, nil, nil, ],
135
134
  [ nil, nil, nil, ],
136
135
  [ nil, nil, nil, ],
137
136
  [ nil, nil, nil, ],
138
137
  [ nil, nil, nil, ],
138
+ [ nil, nil, nil, ],
139
+ ]
140
+
141
+
142
+ alias orig_error error
143
+ def error
144
+ orig_error
145
+ warn "current state: #{StateInfo[@stack.last]}"
146
+ end
147
+
148
+ ### States
149
+ StateInfo = [
150
+ <<'----------',
151
+ I000 =
152
+ ( 0) $start : _ expr
153
+
154
+ NUM shift, and goto to state 4
155
+ '(' shift, and goto to state 5
156
+
157
+
158
+ ----------
159
+
160
+ <<'----------',
161
+ I001 =
162
+ ( 0) $start : expr _
163
+ ( 1) expr : expr _ '+' term
164
+ ( 2) expr : expr _ '-' term
165
+
166
+ '+' shift, and goto to state 6
167
+ '-' shift, and goto to state 7
168
+
169
+
170
+ $end accept
171
+
172
+ ----------
173
+
174
+ <<'----------',
175
+ I002 =
176
+ ( 3) expr : term _
177
+ ( 4) term : term _ '*' fact
178
+ ( 5) term : term _ '/' fact
179
+
180
+ '*' shift, and goto to state 8
181
+ '/' shift, and goto to state 9
182
+
183
+ $default reduce using rule 3 (expr)
184
+
185
+ ----------
186
+
187
+ <<'----------',
188
+ I003 =
189
+ ( 6) term : fact _
190
+
191
+
192
+ $default reduce using rule 6 (term) [after shift]
193
+
194
+ ----------
195
+
196
+ <<'----------',
197
+ I004 =
198
+ ( 7) fact : NUM _
199
+
200
+
201
+ $default reduce using rule 7 (fact) [after shift]
202
+
203
+ ----------
204
+
205
+ <<'----------',
206
+ I005 =
207
+ ( 8) fact : '(' _ expr ')'
208
+
209
+ NUM shift, and goto to state 4
210
+ '(' shift, and goto to state 5
211
+
212
+
213
+ ----------
214
+
215
+ <<'----------',
216
+ I006 =
217
+ ( 1) expr : expr '+' _ term
218
+
219
+ NUM shift, and goto to state 4
220
+ '(' shift, and goto to state 5
221
+
222
+
223
+ ----------
224
+
225
+ <<'----------',
226
+ I007 =
227
+ ( 2) expr : expr '-' _ term
228
+
229
+ NUM shift, and goto to state 4
230
+ '(' shift, and goto to state 5
231
+
232
+
233
+ ----------
234
+
235
+ <<'----------',
236
+ I008 =
237
+ ( 4) term : term '*' _ fact
238
+
239
+ NUM shift, and goto to state 4
240
+ '(' shift, and goto to state 5
241
+
242
+
243
+ ----------
244
+
245
+ <<'----------',
246
+ I009 =
247
+ ( 5) term : term '/' _ fact
248
+
249
+ NUM shift, and goto to state 4
250
+ '(' shift, and goto to state 5
251
+
252
+
253
+ ----------
254
+
255
+ <<'----------',
256
+ I010 =
257
+ ( 8) fact : '(' expr _ ')'
258
+ ( 1) expr : expr _ '+' term
259
+ ( 2) expr : expr _ '-' term
260
+
261
+ '+' shift, and goto to state 6
262
+ '-' shift, and goto to state 7
263
+ ')' shift, and goto to state 15
264
+
265
+
266
+ ----------
267
+
268
+ <<'----------',
269
+ I011 =
270
+ ( 1) expr : expr '+' term _
271
+ ( 4) term : term _ '*' fact
272
+ ( 5) term : term _ '/' fact
273
+
274
+ '*' shift, and goto to state 8
275
+ '/' shift, and goto to state 9
276
+
277
+ $default reduce using rule 1 (expr)
278
+
279
+ ----------
280
+
281
+ <<'----------',
282
+ I012 =
283
+ ( 2) expr : expr '-' term _
284
+ ( 4) term : term _ '*' fact
285
+ ( 5) term : term _ '/' fact
286
+
287
+ '*' shift, and goto to state 8
288
+ '/' shift, and goto to state 9
289
+
290
+ $default reduce using rule 2 (expr)
291
+
292
+ ----------
293
+
294
+ <<'----------',
295
+ I013 =
296
+ ( 4) term : term '*' fact _
297
+
298
+
299
+ $default reduce using rule 4 (term) [after shift]
300
+
301
+ ----------
302
+
303
+ <<'----------',
304
+ I014 =
305
+ ( 5) term : term '/' fact _
306
+
307
+
308
+ $default reduce using rule 5 (term) [after shift]
309
+
310
+ ----------
311
+
312
+ <<'----------',
313
+ I015 =
314
+ ( 8) fact : '(' expr ')' _
315
+
316
+
317
+ $default reduce using rule 8 (fact) [after shift]
318
+
319
+ ----------
139
320
  ]
140
321
 
322
+
141
323
  Tables = [ reduce_table, nparams, action_table,
142
324
  defred_table, defred_after_shift_table, goto_table,
143
325
  t2i, i2t, nt2i, i2nt ]
@@ -182,7 +364,7 @@ end
182
364
 
183
365
  class D4TinyCalc::ATreeBuilder < Depager::LALR::Action #:nodoc:all
184
366
  include Depager::DecoratorUtils
185
-
367
+ []
186
368
  on_reduce = [
187
369
  nil,
188
370
  :_atree_0,
@@ -203,61 +385,53 @@ class D4TinyCalc::ATreeBuilder < Depager::LALR::Action #:nodoc:all
203
385
  end
204
386
 
205
387
 
206
- module_eval <<-'.,.,118754109027636.,.,', 'sample_calc/calc.atree.dr', 17
207
- def _atree_0 val
388
+ module_eval <<-'.,.,120998293321400.,.,', 'sample_calc/calc.atree.dr', 17
389
+ def _atree_0 val
208
390
  [:add, val[0],val[2]]
209
- end
210
-
211
- .,.,118754109027636.,.,
391
+ end
392
+ .,.,120998293321400.,.,
212
393
 
213
- module_eval <<-'.,.,118754109032509.,.,', 'sample_calc/calc.atree.dr', 19
214
- def _atree_1 val
394
+ module_eval <<-'.,.,120998293317716.,.,', 'sample_calc/calc.atree.dr', 19
395
+ def _atree_1 val
215
396
  [:sub, val[0],val[2]]
216
- end
217
-
218
- .,.,118754109032509.,.,
397
+ end
398
+ .,.,120998293317716.,.,
219
399
 
220
- module_eval <<-'.,.,118754109043231.,.,', 'sample_calc/calc.atree.dr', 21
221
- def _atree_2 val
400
+ module_eval <<-'.,.,120998293311174.,.,', 'sample_calc/calc.atree.dr', 21
401
+ def _atree_2 val
222
402
  val[0]
223
- end
224
-
225
- .,.,118754109043231.,.,
403
+ end
404
+ .,.,120998293311174.,.,
226
405
 
227
- module_eval <<-'.,.,11875410902130.,.,', 'sample_calc/calc.atree.dr', 25
228
- def _atree_3 val
406
+ module_eval <<-'.,.,120998293321022.,.,', 'sample_calc/calc.atree.dr', 25
407
+ def _atree_3 val
229
408
  [:mul, val[0],val[2]]
230
- end
231
-
232
- .,.,11875410902130.,.,
409
+ end
410
+ .,.,120998293321022.,.,
233
411
 
234
- module_eval <<-'.,.,11875410909726.,.,', 'sample_calc/calc.atree.dr', 27
235
- def _atree_4 val
412
+ module_eval <<-'.,.,120998293362263.,.,', 'sample_calc/calc.atree.dr', 27
413
+ def _atree_4 val
236
414
  [:div, val[0],val[2]]
237
- end
238
-
239
- .,.,11875410909726.,.,
415
+ end
416
+ .,.,120998293362263.,.,
240
417
 
241
- module_eval <<-'.,.,11875410909992.,.,', 'sample_calc/calc.atree.dr', 29
242
- def _atree_5 val
418
+ module_eval <<-'.,.,120998293338900.,.,', 'sample_calc/calc.atree.dr', 29
419
+ def _atree_5 val
243
420
  val[0]
244
- end
245
-
246
- .,.,11875410909992.,.,
421
+ end
422
+ .,.,120998293338900.,.,
247
423
 
248
- module_eval <<-'.,.,118754109027407.,.,', 'sample_calc/calc.atree.dr', 33
249
- def _atree_6 val
424
+ module_eval <<-'.,.,120998293340705.,.,', 'sample_calc/calc.atree.dr', 33
425
+ def _atree_6 val
250
426
  [:literal, val[0]]
251
- end
252
-
253
- .,.,118754109027407.,.,
427
+ end
428
+ .,.,120998293340705.,.,
254
429
 
255
- module_eval <<-'.,.,118754109041552.,.,', 'sample_calc/calc.atree.dr', 35
256
- def _atree_7 val
430
+ module_eval <<-'.,.,120998293327284.,.,', 'sample_calc/calc.atree.dr', 35
431
+ def _atree_7 val
257
432
  val[1]
258
- end
259
-
260
- .,.,118754109041552.,.,
433
+ end
434
+ .,.,120998293327284.,.,
261
435
 
262
436
  end
263
437
 
@@ -3,8 +3,8 @@ begin; require 'rubygems'; rescue Exception; end
3
3
  require 'depager/parser.rb'
4
4
 
5
5
 
6
- module D4TinyCalc
7
- end
6
+ module Depager::DecoratorUtils; end
7
+ module D4TinyCalc; end
8
8
 
9
9
  class TinyCalc < Depager::LALR::Basis
10
10
 
@@ -12,14 +12,14 @@ class TinyCalc < Depager::LALR::Basis
12
12
  ### Reduce Table
13
13
  reduce_table = [
14
14
  [ -1, 1 ], # ( 0) $start : expr
15
- [ 0, 3 ], # ( 1) expr : expr + term
16
- [ 0, 3 ], # ( 2) expr : expr - term
15
+ [ 0, 3 ], # ( 1) expr : expr '+' term
16
+ [ 0, 3 ], # ( 2) expr : expr '-' term
17
17
  [ 0, 1 ], # ( 3) expr : term
18
- [ 1, 3 ], # ( 4) term : term * fact
19
- [ 1, 3 ], # ( 5) term : term / fact
18
+ [ 1, 3 ], # ( 4) term : term '*' fact
19
+ [ 1, 3 ], # ( 5) term : term '/' fact
20
20
  [ 1, 1 ], # ( 6) term : fact
21
21
  [ 2, 1 ], # ( 7) fact : NUM
22
- [ 2, 3 ], # ( 8) fact : ( expr )
22
+ [ 2, 3 ], # ( 8) fact : '(' expr ')'
23
23
  ]
24
24
  ### Extension Params
25
25
  nparams = {
@@ -51,26 +51,25 @@ class TinyCalc < Depager::LALR::Basis
51
51
  ]
52
52
  ### Action Table
53
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, ],
54
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
55
+ [ ACC, nil, 6, 7, nil, nil, nil, nil, nil, ],
56
+ [ nil, nil, nil, nil, 8, 9, nil, nil, nil, ],
58
57
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
59
58
  [ 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, ],
59
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
60
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
61
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
62
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
63
+ [ nil, nil, nil, nil, nil, nil, 4, 5, nil, ],
64
+ [ nil, nil, 6, 7, nil, nil, nil, nil, 15, ],
65
+ [ nil, nil, nil, nil, 8, 9, nil, nil, nil, ],
66
+ [ nil, nil, nil, nil, 8, 9, nil, nil, nil, ],
65
67
  [ 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
68
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
69
69
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
70
70
  ]
71
71
  ### Default Reduce Table
72
72
  defred_table = [
73
- nil,
74
73
  nil,
75
74
  nil,
76
75
  -3,
@@ -81,17 +80,17 @@ class TinyCalc < Depager::LALR::Basis
81
80
  nil,
82
81
  nil,
83
82
  nil,
84
- -8,
83
+ nil,
85
84
  -1,
86
85
  -2,
87
86
  -4,
88
87
  -5,
88
+ -8,
89
89
  ]
90
90
  defred_after_shift_table = [
91
91
  nil,
92
92
  nil,
93
93
  nil,
94
- nil,
95
94
  -6,
96
95
  -7,
97
96
  nil,
@@ -99,11 +98,12 @@ class TinyCalc < Depager::LALR::Basis
99
98
  nil,
100
99
  nil,
101
100
  nil,
102
- -8,
101
+ nil,
103
102
  nil,
104
103
  nil,
105
104
  -4,
106
105
  -5,
106
+ -8,
107
107
  ]
108
108
  ### Nonterm to Int
109
109
  nt2i = {
@@ -119,24 +119,206 @@ class TinyCalc < Depager::LALR::Basis
119
119
  ]
120
120
  ### Goto Table
121
121
  goto_table = [
122
- [ 2, 3, 4, ],
123
- [ 6, 3, 4, ],
122
+ [ 1, 2, 3, ],
124
123
  [ nil, nil, nil, ],
125
124
  [ nil, nil, nil, ],
126
125
  [ nil, nil, nil, ],
127
126
  [ nil, nil, nil, ],
128
- [ nil, nil, nil, ],
129
- [ nil, 12, 4, ],
130
- [ nil, 13, 4, ],
127
+ [ 10, 2, 3, ],
128
+ [ nil, 11, 3, ],
129
+ [ nil, 12, 3, ],
130
+ [ nil, nil, 13, ],
131
131
  [ nil, nil, 14, ],
132
- [ nil, nil, 15, ],
133
132
  [ nil, nil, nil, ],
134
133
  [ nil, nil, nil, ],
135
134
  [ nil, nil, nil, ],
136
135
  [ nil, nil, nil, ],
137
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 4
154
+ '(' shift, and goto to state 5
155
+
156
+
157
+ ----------
158
+
159
+ <<'----------',
160
+ I001 =
161
+ ( 0) $start : expr _
162
+ ( 1) expr : expr _ '+' term
163
+ ( 2) expr : expr _ '-' term
164
+
165
+ '+' shift, and goto to state 6
166
+ '-' shift, and goto to state 7
167
+
168
+
169
+ $end accept
170
+
171
+ ----------
172
+
173
+ <<'----------',
174
+ I002 =
175
+ ( 3) expr : term _
176
+ ( 4) term : term _ '*' fact
177
+ ( 5) term : term _ '/' fact
178
+
179
+ '*' shift, and goto to state 8
180
+ '/' shift, and goto to state 9
181
+
182
+ $default reduce using rule 3 (expr)
183
+
184
+ ----------
185
+
186
+ <<'----------',
187
+ I003 =
188
+ ( 6) term : fact _
189
+
190
+
191
+ $default reduce using rule 6 (term) [after shift]
192
+
193
+ ----------
194
+
195
+ <<'----------',
196
+ I004 =
197
+ ( 7) fact : NUM _
198
+
199
+
200
+ $default reduce using rule 7 (fact) [after shift]
201
+
202
+ ----------
203
+
204
+ <<'----------',
205
+ I005 =
206
+ ( 8) fact : '(' _ expr ')'
207
+
208
+ NUM shift, and goto to state 4
209
+ '(' shift, and goto to state 5
210
+
211
+
212
+ ----------
213
+
214
+ <<'----------',
215
+ I006 =
216
+ ( 1) expr : expr '+' _ term
217
+
218
+ NUM shift, and goto to state 4
219
+ '(' shift, and goto to state 5
220
+
221
+
222
+ ----------
223
+
224
+ <<'----------',
225
+ I007 =
226
+ ( 2) expr : expr '-' _ term
227
+
228
+ NUM shift, and goto to state 4
229
+ '(' shift, and goto to state 5
230
+
231
+
232
+ ----------
233
+
234
+ <<'----------',
235
+ I008 =
236
+ ( 4) term : term '*' _ fact
237
+
238
+ NUM shift, and goto to state 4
239
+ '(' shift, and goto to state 5
240
+
241
+
242
+ ----------
243
+
244
+ <<'----------',
245
+ I009 =
246
+ ( 5) term : term '/' _ fact
247
+
248
+ NUM shift, and goto to state 4
249
+ '(' shift, and goto to state 5
250
+
251
+
252
+ ----------
253
+
254
+ <<'----------',
255
+ I010 =
256
+ ( 8) fact : '(' expr _ ')'
257
+ ( 1) expr : expr _ '+' term
258
+ ( 2) expr : expr _ '-' term
259
+
260
+ '+' shift, and goto to state 6
261
+ '-' shift, and goto to state 7
262
+ ')' shift, and goto to state 15
263
+
264
+
265
+ ----------
266
+
267
+ <<'----------',
268
+ I011 =
269
+ ( 1) expr : expr '+' term _
270
+ ( 4) term : term _ '*' fact
271
+ ( 5) term : term _ '/' fact
272
+
273
+ '*' shift, and goto to state 8
274
+ '/' shift, and goto to state 9
275
+
276
+ $default reduce using rule 1 (expr)
277
+
278
+ ----------
279
+
280
+ <<'----------',
281
+ I012 =
282
+ ( 2) expr : expr '-' term _
283
+ ( 4) term : term _ '*' fact
284
+ ( 5) term : term _ '/' fact
285
+
286
+ '*' shift, and goto to state 8
287
+ '/' shift, and goto to state 9
288
+
289
+ $default reduce using rule 2 (expr)
290
+
291
+ ----------
292
+
293
+ <<'----------',
294
+ I013 =
295
+ ( 4) term : term '*' fact _
296
+
297
+
298
+ $default reduce using rule 4 (term) [after shift]
299
+
300
+ ----------
301
+
302
+ <<'----------',
303
+ I014 =
304
+ ( 5) term : term '/' fact _
305
+
306
+
307
+ $default reduce using rule 5 (term) [after shift]
308
+
309
+ ----------
310
+
311
+ <<'----------',
312
+ I015 =
313
+ ( 8) fact : '(' expr ')' _
314
+
315
+
316
+ $default reduce using rule 8 (fact) [after shift]
317
+
318
+ ----------
138
319
  ]
139
320
 
321
+
140
322
  Tables = [ reduce_table, nparams, action_table,
141
323
  defred_table, defred_after_shift_table, goto_table,
142
324
  t2i, i2t, nt2i, i2nt ]
@@ -186,69 +368,61 @@ end
186
368
 
187
369
  class Visitor
188
370
 
189
- module_eval <<-'.,.,118754109035322.,.,', 'sample_calc/calc.cst.dr', 23
190
- def visit_Node_expr_0 node
371
+ module_eval <<-'.,.,120998293447553.,.,', 'sample_calc/calc.cst.dr', 23
372
+ def visit_Node_expr_0 node
191
373
  node.value = node.expr.value + node.term.value
192
374
 
193
- end
194
-
195
- .,.,118754109035322.,.,
375
+ end
376
+ .,.,120998293447553.,.,
196
377
 
197
- module_eval <<-'.,.,118754109055219.,.,', 'sample_calc/calc.cst.dr', 24
198
- def visit_Node_expr_1 node
378
+ module_eval <<-'.,.,1209982934266.,.,', 'sample_calc/calc.cst.dr', 24
379
+ def visit_Node_expr_1 node
199
380
  node.value = node.expr.value + node.term.value
200
381
 
201
- end
202
-
203
- .,.,118754109055219.,.,
382
+ end
383
+ .,.,1209982934266.,.,
204
384
 
205
- module_eval <<-'.,.,118754109026591.,.,', 'sample_calc/calc.cst.dr', 25
206
- def visit_Node_expr_2 node
385
+ module_eval <<-'.,.,120998293442645.,.,', 'sample_calc/calc.cst.dr', 25
386
+ def visit_Node_expr_2 node
207
387
  node.value = node.term.value
208
388
 
209
- end
210
-
211
- .,.,118754109026591.,.,
389
+ end
390
+ .,.,120998293442645.,.,
212
391
 
213
- module_eval <<-'.,.,118754109017048.,.,', 'sample_calc/calc.cst.dr', 28
214
- def visit_Node_term_0 node
392
+ module_eval <<-'.,.,120998293449169.,.,', 'sample_calc/calc.cst.dr', 28
393
+ def visit_Node_term_0 node
215
394
  node.value = node.term.value * node.fact.value
216
395
 
217
- end
218
-
219
- .,.,118754109017048.,.,
396
+ end
397
+ .,.,120998293449169.,.,
220
398
 
221
- module_eval <<-'.,.,118754109059012.,.,', 'sample_calc/calc.cst.dr', 29
222
- def visit_Node_term_1 node
399
+ module_eval <<-'.,.,12099829345606.,.,', 'sample_calc/calc.cst.dr', 29
400
+ def visit_Node_term_1 node
223
401
  node.value = node.term.value / node.fact.value
224
402
 
225
- end
226
-
227
- .,.,118754109059012.,.,
403
+ end
404
+ .,.,12099829345606.,.,
228
405
 
229
- module_eval <<-'.,.,118754109013457.,.,', 'sample_calc/calc.cst.dr', 30
230
- def visit_Node_term_2 node
406
+ module_eval <<-'.,.,120998293417529.,.,', 'sample_calc/calc.cst.dr', 30
407
+ def visit_Node_term_2 node
231
408
  node.value = node.fact.value
232
409
 
233
- end
234
-
235
- .,.,118754109013457.,.,
410
+ end
411
+ .,.,120998293417529.,.,
236
412
 
237
- module_eval <<-'.,.,118754109020434.,.,', 'sample_calc/calc.cst.dr', 33
238
- def visit_Node_fact_0 node
413
+ module_eval <<-'.,.,12099829345810.,.,', 'sample_calc/calc.cst.dr', 33
414
+ def visit_Node_fact_0 node
239
415
  node.value = node.num.value
240
416
 
241
- end
242
-
243
- .,.,118754109020434.,.,
417
+ end
418
+ .,.,12099829345810.,.,
244
419
 
245
- module_eval <<-'.,.,118754109063699.,.,', 'sample_calc/calc.cst.dr', 34
246
- def visit_Node_fact_1 node
420
+ module_eval <<-'.,.,120998293441876.,.,', 'sample_calc/calc.cst.dr', 34
421
+ def visit_Node_fact_1 node
247
422
  node.value = node.expr
248
423
 
249
- end
250
-
251
- .,.,118754109063699.,.,
424
+ end
425
+ .,.,120998293441876.,.,
252
426
 
253
427
  end
254
428
 
@@ -380,7 +554,7 @@ v.visit_Node_fact_1(self)
380
554
 
381
555
  class D4TinyCalc::CSTBuilder < Depager::LALR::Action #:nodoc:all
382
556
  include Depager::DecoratorUtils
383
-
557
+ []
384
558
  on_reduce = [
385
559
  nil,
386
560
  :_cst_0,
@@ -401,61 +575,53 @@ class D4TinyCalc::CSTBuilder < Depager::LALR::Action #:nodoc:all
401
575
  end
402
576
 
403
577
 
404
- module_eval <<-'.,.,118754109050531.,.,', 'sample_calc/calc.cst.dr', 23
405
- def _cst_0 val
578
+ module_eval <<-'.,.,120998293417689.,.,', 'sample_calc/calc.cst.dr', 23
579
+ def _cst_0 val
406
580
  Node_expr_0.new(val[0], val[1], val[2])
407
- end
408
-
409
- .,.,118754109050531.,.,
581
+ end
582
+ .,.,120998293417689.,.,
410
583
 
411
- module_eval <<-'.,.,118754109039698.,.,', 'sample_calc/calc.cst.dr', 24
412
- def _cst_1 val
584
+ module_eval <<-'.,.,120998293460542.,.,', 'sample_calc/calc.cst.dr', 24
585
+ def _cst_1 val
413
586
  Node_expr_1.new(val[0], val[1], val[2])
414
- end
415
-
416
- .,.,118754109039698.,.,
587
+ end
588
+ .,.,120998293460542.,.,
417
589
 
418
- module_eval <<-'.,.,1187541090475.,.,', 'sample_calc/calc.cst.dr', 25
419
- def _cst_2 val
590
+ module_eval <<-'.,.,12099829348426.,.,', 'sample_calc/calc.cst.dr', 25
591
+ def _cst_2 val
420
592
  Node_expr_2.new(val[0])
421
- end
422
-
423
- .,.,1187541090475.,.,
593
+ end
594
+ .,.,12099829348426.,.,
424
595
 
425
- module_eval <<-'.,.,118754109053937.,.,', 'sample_calc/calc.cst.dr', 28
426
- def _cst_3 val
596
+ module_eval <<-'.,.,120998293430701.,.,', 'sample_calc/calc.cst.dr', 28
597
+ def _cst_3 val
427
598
  Node_term_0.new(val[0], val[1], val[2])
428
- end
429
-
430
- .,.,118754109053937.,.,
599
+ end
600
+ .,.,120998293430701.,.,
431
601
 
432
- module_eval <<-'.,.,118754109039336.,.,', 'sample_calc/calc.cst.dr', 29
433
- def _cst_4 val
602
+ module_eval <<-'.,.,120998293449360.,.,', 'sample_calc/calc.cst.dr', 29
603
+ def _cst_4 val
434
604
  Node_term_1.new(val[0], val[1], val[2])
435
- end
436
-
437
- .,.,118754109039336.,.,
605
+ end
606
+ .,.,120998293449360.,.,
438
607
 
439
- module_eval <<-'.,.,118754109031052.,.,', 'sample_calc/calc.cst.dr', 30
440
- def _cst_5 val
608
+ module_eval <<-'.,.,120998293440225.,.,', 'sample_calc/calc.cst.dr', 30
609
+ def _cst_5 val
441
610
  Node_term_2.new(val[0])
442
- end
443
-
444
- .,.,118754109031052.,.,
611
+ end
612
+ .,.,120998293440225.,.,
445
613
 
446
- module_eval <<-'.,.,11875410903088.,.,', 'sample_calc/calc.cst.dr', 33
447
- def _cst_6 val
614
+ module_eval <<-'.,.,120998293456355.,.,', 'sample_calc/calc.cst.dr', 33
615
+ def _cst_6 val
448
616
  Node_fact_0.new(val[0])
449
- end
450
-
451
- .,.,11875410903088.,.,
617
+ end
618
+ .,.,120998293456355.,.,
452
619
 
453
- module_eval <<-'.,.,11875410905263.,.,', 'sample_calc/calc.cst.dr', 34
454
- def _cst_7 val
620
+ module_eval <<-'.,.,120998293443146.,.,', 'sample_calc/calc.cst.dr', 34
621
+ def _cst_7 val
455
622
  Node_fact_1.new(val[0], val[1], val[2])
456
- end
457
-
458
- .,.,11875410905263.,.,
623
+ end
624
+ .,.,120998293443146.,.,
459
625
 
460
626
  end
461
627