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,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