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,365 +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
- }
27
- ### Term to Int
28
- t2i = {
29
- nil => 0,
30
- false => 1,
31
- "+" => 2,
32
- "-" => 3,
33
- "*" => 4,
34
- "/" => 5,
35
- :NUM => 6,
36
- "(" => 7,
37
- ")" => 8,
38
- }
39
- ### Int to Term
40
- i2t = [
41
- nil,
42
- false,
43
- "+",
44
- "-",
45
- "*",
46
- "/",
47
- :NUM,
48
- "(",
49
- ")",
50
- ]
51
- ### Action Table
52
- action_table = [
53
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
54
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
55
- [ ACC, nil, 7, 8, nil, nil, nil, nil, nil, ],
56
- [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
57
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
58
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
59
- [ nil, nil, 7, 8, nil, nil, nil, nil, 11, ],
60
- [ nil, nil, nil, nil, nil, nil, 5, 1, nil, ],
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, nil, nil, nil, ],
65
- [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
66
- [ nil, nil, nil, nil, 9, 10, nil, nil, nil, ],
67
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
68
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
69
- ]
70
- ### Default Reduce Table
71
- defred_table = [
72
- nil,
73
- nil,
74
- nil,
75
- -3,
76
- -6,
77
- -7,
78
- nil,
79
- nil,
80
- nil,
81
- nil,
82
- nil,
83
- -8,
84
- -1,
85
- -2,
86
- -4,
87
- -5,
88
- ]
89
- defred_after_shift_table = [
90
- nil,
91
- nil,
92
- nil,
93
- nil,
94
- -6,
95
- -7,
96
- nil,
97
- nil,
98
- nil,
99
- nil,
100
- nil,
101
- -8,
102
- nil,
103
- nil,
104
- -4,
105
- -5,
106
- ]
107
- ### Nonterm to Int
108
- nt2i = {
109
- :expr => 0,
110
- :term => 1,
111
- :fact => 2,
112
- }
113
- ### Int to Nonterm
114
- i2nt = [
115
- :expr,
116
- :term,
117
- :fact,
118
- ]
119
- ### Goto Table
120
- goto_table = [
121
- [ 2, 3, 4, ],
122
- [ 6, 3, 4, ],
123
- [ nil, nil, nil, ],
124
- [ nil, nil, nil, ],
125
- [ nil, nil, nil, ],
126
- [ nil, nil, nil, ],
127
- [ nil, nil, nil, ],
128
- [ nil, 12, 4, ],
129
- [ nil, 13, 4, ],
130
- [ nil, nil, 14, ],
131
- [ nil, nil, 15, ],
132
- [ nil, nil, nil, ],
133
- [ nil, nil, nil, ],
134
- [ nil, nil, nil, ],
135
- [ nil, nil, nil, ],
136
- [ nil, nil, nil, ],
137
- ]
138
-
139
-
140
- alias orig_error error
141
- def error
142
- orig_error
143
- warn "current state: #{StateInfo[@stack.last]}"
144
- end
145
-
146
- ### States
147
- StateInfo = [
148
- <<'----------',
149
- I000 =
150
- ( 0) $start : _ expr
151
-
152
- NUM shift, and goto to state 5
153
- '(' shift, and goto to state 1
154
-
155
-
156
- ----------
157
-
158
- <<'----------',
159
- I001 =
160
- ( 8) fact : '(' _ expr ')'
161
-
162
- NUM shift, and goto to state 5
163
- '(' shift, and goto to state 1
164
-
165
-
166
- ----------
167
-
168
- <<'----------',
169
- I002 =
170
- ( 0) $start : expr _
171
- ( 1) expr : expr _ '+' term
172
- ( 2) expr : expr _ '-' term
173
-
174
- '+' shift, and goto to state 7
175
- '-' shift, and goto to state 8
176
-
177
-
178
- $end accept
179
-
180
- ----------
181
-
182
- <<'----------',
183
- I003 =
184
- ( 3) expr : term _
185
- ( 4) term : term _ '*' fact
186
- ( 5) term : term _ '/' fact
187
-
188
- '*' shift, and goto to state 9
189
- '/' shift, and goto to state 10
190
-
191
- $default reduce using rule 3 (expr)
192
-
193
- ----------
194
-
195
- <<'----------',
196
- I004 =
197
- ( 6) term : fact _
198
-
199
-
200
- $default reduce using rule 6 (term) [after shift]
201
-
202
- ----------
203
-
204
- <<'----------',
205
- I005 =
206
- ( 7) fact : NUM _
207
-
208
-
209
- $default reduce using rule 7 (fact) [after shift]
210
-
211
- ----------
212
-
213
- <<'----------',
214
- I006 =
215
- ( 8) fact : '(' expr _ ')'
216
- ( 1) expr : expr _ '+' term
217
- ( 2) expr : expr _ '-' term
218
-
219
- '+' shift, and goto to state 7
220
- '-' shift, and goto to state 8
221
- ')' shift, and goto to state 11
222
-
223
-
224
- ----------
225
-
226
- <<'----------',
227
- I007 =
228
- ( 1) expr : expr '+' _ term
229
-
230
- NUM shift, and goto to state 5
231
- '(' shift, and goto to state 1
232
-
233
-
234
- ----------
235
-
236
- <<'----------',
237
- I008 =
238
- ( 2) expr : expr '-' _ term
239
-
240
- NUM shift, and goto to state 5
241
- '(' shift, and goto to state 1
242
-
243
-
244
- ----------
245
-
246
- <<'----------',
247
- I009 =
248
- ( 4) term : term '*' _ fact
249
-
250
- NUM shift, and goto to state 5
251
- '(' shift, and goto to state 1
252
-
253
-
254
- ----------
255
-
256
- <<'----------',
257
- I010 =
258
- ( 5) term : term '/' _ fact
259
-
260
- NUM shift, and goto to state 5
261
- '(' shift, and goto to state 1
262
-
263
-
264
- ----------
265
-
266
- <<'----------',
267
- I011 =
268
- ( 8) fact : '(' expr ')' _
269
-
270
-
271
- $default reduce using rule 8 (fact) [after shift]
272
-
273
- ----------
274
-
275
- <<'----------',
276
- I012 =
277
- ( 1) expr : expr '+' term _
278
- ( 4) term : term _ '*' fact
279
- ( 5) term : term _ '/' fact
280
-
281
- '*' shift, and goto to state 9
282
- '/' shift, and goto to state 10
283
-
284
- $default reduce using rule 1 (expr)
285
-
286
- ----------
287
-
288
- <<'----------',
289
- I013 =
290
- ( 2) expr : expr '-' term _
291
- ( 4) term : term _ '*' fact
292
- ( 5) term : term _ '/' fact
293
-
294
- '*' shift, and goto to state 9
295
- '/' shift, and goto to state 10
296
-
297
- $default reduce using rule 2 (expr)
298
-
299
- ----------
300
-
301
- <<'----------',
302
- I014 =
303
- ( 4) term : term '*' fact _
304
-
305
-
306
- $default reduce using rule 4 (term) [after shift]
307
-
308
- ----------
309
-
310
- <<'----------',
311
- I015 =
312
- ( 5) term : term '/' fact _
313
-
314
-
315
- $default reduce using rule 5 (term) [after shift]
316
-
317
- ----------
318
- ]
319
-
320
-
321
- Tables = [ reduce_table, nparams, action_table,
322
- defred_table, defred_after_shift_table, goto_table,
323
- t2i, i2t, nt2i, i2nt ]
324
-
325
- def self.createDecoratedParser
326
- TinyCalc.new()
327
- end
328
-
329
- ### Inner Code
330
- def lex
331
- until @file.eof?
332
- @line = @file.gets
333
- until @line.empty? do
334
- case @line
335
- when /\A\s+/, /\A\#.*/, /\A\n/
336
- #skip blank and comment
337
- when /\A[0-9]+/
338
- yield :NUM, $&
339
- when /\A./
340
- yield $&, $&
341
- else
342
- raise RuntimeError, "must not happen #{line}"
343
- end
344
- @line = $'
345
- end
346
- end
347
- yield nil, nil
348
- end
349
-
350
- end
351
-
352
- ### Outer Code
353
-
354
-
355
- def createDecoratedTinyCalc
356
- TinyCalc.new()
357
- end
358
-
359
- ### main
360
- if __FILE__ == $0
361
- ### Main Code
362
- parser = TinyCalc.new()
363
- parser.parse(STDIN)
364
-
365
- end
@@ -1,431 +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 '+' expr
16
- [ 0, 3 ], # ( 2) expr : expr '-' expr
17
- [ 0, 3 ], # ( 3) expr : expr '*' expr
18
- [ 0, 3 ], # ( 4) expr : expr '/' expr
19
- [ 0, 3 ], # ( 5) expr : '(' expr ')'
20
- [ 0, 1 ], # ( 6) expr : NUM
21
- ]
22
- ### Extension Params
23
- nparams = {
24
- 'NVAction' => 2,
25
- }
26
- ### Term to Int
27
- t2i = {
28
- nil => 0,
29
- false => 1,
30
- "+" => 2,
31
- "-" => 3,
32
- "*" => 4,
33
- "/" => 5,
34
- "(" => 6,
35
- ")" => 7,
36
- :NUM => 8,
37
- }
38
- ### Int to Term
39
- i2t = [
40
- nil,
41
- false,
42
- "+",
43
- "-",
44
- "*",
45
- "/",
46
- "(",
47
- ")",
48
- :NUM,
49
- ]
50
- ### Action Table
51
- action_table = [
52
- [ nil, nil, nil, nil, nil, nil, 2, nil, 3, ],
53
- [ ACC, nil, 7, 4, 5, 6, nil, nil, nil, ],
54
- [ nil, nil, nil, nil, nil, nil, 2, nil, 3, ],
55
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
56
- [ nil, nil, nil, nil, nil, nil, 2, nil, 3, ],
57
- [ nil, nil, nil, nil, nil, nil, 2, nil, 3, ],
58
- [ nil, nil, nil, nil, nil, nil, 2, nil, 3, ],
59
- [ nil, nil, nil, nil, nil, nil, 2, nil, 3, ],
60
- [ nil, nil, 7, 4, 5, 6, nil, 13, nil, ],
61
- [ nil, nil, nil, nil, 5, 6, nil, nil, nil, ],
62
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
63
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
64
- [ nil, nil, nil, nil, 5, 6, nil, nil, nil, ],
65
- [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
66
- ]
67
- ### Default Reduce Table
68
- defred_table = [
69
- nil,
70
- nil,
71
- nil,
72
- -6,
73
- nil,
74
- nil,
75
- nil,
76
- nil,
77
- nil,
78
- -2,
79
- -3,
80
- -4,
81
- -1,
82
- -5,
83
- ]
84
- defred_after_shift_table = [
85
- nil,
86
- nil,
87
- nil,
88
- -6,
89
- nil,
90
- nil,
91
- nil,
92
- nil,
93
- nil,
94
- nil,
95
- -3,
96
- -4,
97
- nil,
98
- -5,
99
- ]
100
- ### Nonterm to Int
101
- nt2i = {
102
- :expr => 0,
103
- }
104
- ### Int to Nonterm
105
- i2nt = [
106
- :expr,
107
- ]
108
- ### Goto Table
109
- goto_table = [
110
- [ 1, ],
111
- [ nil, ],
112
- [ 8, ],
113
- [ nil, ],
114
- [ 9, ],
115
- [ 10, ],
116
- [ 11, ],
117
- [ 12, ],
118
- [ nil, ],
119
- [ nil, ],
120
- [ nil, ],
121
- [ nil, ],
122
- [ nil, ],
123
- [ nil, ],
124
- ]
125
-
126
-
127
- alias orig_error error
128
- def error
129
- orig_error
130
- warn "current state: #{StateInfo[@stack.last]}"
131
- end
132
-
133
- ### States
134
- StateInfo = [
135
- <<'----------',
136
- I000 =
137
- ( 0) $start : _ expr
138
-
139
- '(' shift, and goto to state 2
140
- NUM shift, and goto to state 3
141
-
142
-
143
- ----------
144
-
145
- <<'----------',
146
- I001 =
147
- ( 0) $start : expr _
148
- ( 1) expr : expr _ '+' expr
149
- ( 2) expr : expr _ '-' expr
150
- ( 3) expr : expr _ '*' expr
151
- ( 4) expr : expr _ '/' expr
152
-
153
- '+' shift, and goto to state 7
154
- '-' shift, and goto to state 4
155
- '*' shift, and goto to state 5
156
- '/' shift, and goto to state 6
157
-
158
-
159
- $end accept
160
-
161
- ----------
162
-
163
- <<'----------',
164
- I002 =
165
- ( 5) expr : '(' _ expr ')'
166
-
167
- '(' shift, and goto to state 2
168
- NUM shift, and goto to state 3
169
-
170
-
171
- ----------
172
-
173
- <<'----------',
174
- I003 =
175
- ( 6) expr : NUM _
176
-
177
-
178
- $default reduce using rule 6 (expr) [after shift]
179
-
180
- ----------
181
-
182
- <<'----------',
183
- I004 =
184
- ( 2) expr : expr '-' _ expr
185
-
186
- '(' shift, and goto to state 2
187
- NUM shift, and goto to state 3
188
-
189
-
190
- ----------
191
-
192
- <<'----------',
193
- I005 =
194
- ( 3) expr : expr '*' _ expr
195
-
196
- '(' shift, and goto to state 2
197
- NUM shift, and goto to state 3
198
-
199
-
200
- ----------
201
-
202
- <<'----------',
203
- I006 =
204
- ( 4) expr : expr '/' _ expr
205
-
206
- '(' shift, and goto to state 2
207
- NUM shift, and goto to state 3
208
-
209
-
210
- ----------
211
-
212
- <<'----------',
213
- I007 =
214
- ( 1) expr : expr '+' _ expr
215
-
216
- '(' shift, and goto to state 2
217
- NUM shift, and goto to state 3
218
-
219
-
220
- ----------
221
-
222
- <<'----------',
223
- I008 =
224
- ( 5) expr : '(' expr _ ')'
225
- ( 1) expr : expr _ '+' expr
226
- ( 2) expr : expr _ '-' expr
227
- ( 3) expr : expr _ '*' expr
228
- ( 4) expr : expr _ '/' expr
229
-
230
- '+' shift, and goto to state 7
231
- '-' shift, and goto to state 4
232
- '*' shift, and goto to state 5
233
- '/' shift, and goto to state 6
234
- ')' shift, and goto to state 13
235
-
236
-
237
- ----------
238
-
239
- <<'----------',
240
- I009 =
241
- ( 2) expr : expr '-' expr _
242
- ( 1) expr : expr _ '+' expr
243
- ( 2) expr : expr _ '-' expr
244
- ( 3) expr : expr _ '*' expr
245
- ( 4) expr : expr _ '/' expr
246
-
247
- '*' shift, and goto to state 5
248
- '/' shift, and goto to state 6
249
-
250
- $default reduce using rule 2 (expr)
251
-
252
- ----------
253
-
254
- <<'----------',
255
- I010 =
256
- ( 3) expr : expr '*' expr _
257
- ( 1) expr : expr _ '+' expr
258
- ( 2) expr : expr _ '-' expr
259
- ( 3) expr : expr _ '*' expr
260
- ( 4) expr : expr _ '/' expr
261
-
262
-
263
- $default reduce using rule 3 (expr) [after shift]
264
-
265
- ----------
266
-
267
- <<'----------',
268
- I011 =
269
- ( 4) expr : expr '/' expr _
270
- ( 1) expr : expr _ '+' expr
271
- ( 2) expr : expr _ '-' expr
272
- ( 3) expr : expr _ '*' expr
273
- ( 4) expr : expr _ '/' expr
274
-
275
-
276
- $default reduce using rule 4 (expr) [after shift]
277
-
278
- ----------
279
-
280
- <<'----------',
281
- I012 =
282
- ( 1) expr : expr '+' expr _
283
- ( 1) expr : expr _ '+' expr
284
- ( 2) expr : expr _ '-' expr
285
- ( 3) expr : expr _ '*' expr
286
- ( 4) expr : expr _ '/' expr
287
-
288
- '*' shift, and goto to state 5
289
- '/' shift, and goto to state 6
290
-
291
- $default reduce using rule 1 (expr)
292
-
293
- ----------
294
-
295
- <<'----------',
296
- I013 =
297
- ( 5) expr : '(' expr ')' _
298
-
299
-
300
- $default reduce using rule 5 (expr) [after shift]
301
-
302
- ----------
303
- ]
304
-
305
-
306
- Tables = [ reduce_table, nparams, action_table,
307
- defred_table, defred_after_shift_table, goto_table,
308
- t2i, i2t, nt2i, i2nt ]
309
-
310
- def self.createDecoratedParser
311
- D4TinyCalc::NVAction.new(TinyCalc.new())
312
- end
313
-
314
- ### Inner Code
315
-
316
- def lex
317
- begin
318
- until @line.empty?
319
- case @line
320
-
321
- when /\A\s+/, /\A\#.*/
322
- @oldline = @line; @line = $'
323
-
324
-
325
-
326
- when /\A[1-9][0-9]*/
327
- @oldline = @line; @line = $'
328
- yield token(:NUM, $&.to_i)
329
-
330
-
331
- when /\A./
332
- @oldline = @line; @line = $'
333
- yield token($&, $&)
334
-
335
-
336
- else
337
- raise RuntimeError, "must not happen #{@line}"
338
- end
339
- end
340
- end while @line0 = @line = getline
341
- yield nil, nil
342
- end
343
-
344
- end
345
-
346
- ### Outer Code
347
-
348
- class D4TinyCalc::NVAction < Depager::LALR::Action #:nodoc:all
349
- include Depager::DecoratorUtils
350
-
351
- on_reduce = [
352
- nil,
353
- :_act_0,
354
- :_act_1,
355
- :_act_2,
356
- :_act_3,
357
- :_act_4,
358
- :_act_5,
359
-
360
- ]
361
- Tables = [on_reduce]
362
- def initialize inside
363
- super inside, 'NVAction'
364
- @on_reduce, = self.class::Tables
365
- init_parser
366
- end
367
-
368
-
369
- module_eval <<-'.,.,122745803936127.,.,', 'sample_calc/calc_prec.nvaction.dr', 18
370
- def _act_0 val
371
- _left, _, _right, = *val
372
- _left + _right
373
-
374
- end
375
- .,.,122745803936127.,.,
376
-
377
- module_eval <<-'.,.,122745803916018.,.,', 'sample_calc/calc_prec.nvaction.dr', 19
378
- def _act_1 val
379
- _left, _, _right, = *val
380
- _left - _right
381
-
382
- end
383
- .,.,122745803916018.,.,
384
-
385
- module_eval <<-'.,.,122745803947193.,.,', 'sample_calc/calc_prec.nvaction.dr', 20
386
- def _act_2 val
387
- _left, _, _right, = *val
388
- _left * _right
389
-
390
- end
391
- .,.,122745803947193.,.,
392
-
393
- module_eval <<-'.,.,122745803925953.,.,', 'sample_calc/calc_prec.nvaction.dr', 21
394
- def _act_3 val
395
- _left, _, _right, = *val
396
- _left / _right
397
-
398
- end
399
- .,.,122745803925953.,.,
400
-
401
- module_eval <<-'.,.,122745803965385.,.,', 'sample_calc/calc_prec.nvaction.dr', 22
402
- def _act_4 val
403
- _, _expr, _, = *val
404
- _expr
405
-
406
- end
407
- .,.,122745803965385.,.,
408
-
409
- module_eval <<-'.,.,12274580397259.,.,', 'sample_calc/calc_prec.nvaction.dr', 23
410
- def _act_5 val
411
- _NUM, = *val
412
- _NUM.value
413
-
414
- end
415
- .,.,12274580397259.,.,
416
-
417
- end
418
-
419
-
420
- def createDecoratedTinyCalc
421
- D4TinyCalc::NVAction.new(TinyCalc.new())
422
- end
423
-
424
- ### main
425
- if __FILE__ == $0
426
- ### Main Code
427
- parser = createDecoratedTinyCalc
428
- r, = parser.parse(STDIN)
429
- puts r
430
-
431
- end