depager 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. data/ChangeLog +4 -0
  2. data/README.ja +27 -28
  3. data/examples/c89/c89.dr +34 -34
  4. data/examples/c89/c89.tab.rb +3074 -3074
  5. data/examples/extension/paction.dr +4 -4
  6. data/examples/extension/pactiontest.dr +1 -1
  7. data/examples/pl0d/pl0ds.dr +27 -27
  8. data/examples/pl0d/pl0ds.tab.rb +626 -643
  9. data/examples/sample_calc/calc.action.dr +6 -6
  10. data/examples/sample_calc/calc.action.tab.rb +90 -90
  11. data/examples/sample_calc/calc.ast.action.dr +7 -7
  12. data/examples/sample_calc/calc.ast.action.tab.rb +121 -127
  13. data/examples/sample_calc/calc.ast.dr +6 -6
  14. data/examples/sample_calc/calc.ast.tab.rb +102 -109
  15. data/examples/sample_calc/calc.astdf.dr +6 -6
  16. data/examples/sample_calc/calc.astdf.tab.rb +102 -109
  17. data/examples/sample_calc/calc.atree.dr +6 -6
  18. data/examples/sample_calc/calc.atree.tab.rb +90 -90
  19. data/examples/sample_calc/calc.cst.dr +5 -5
  20. data/examples/sample_calc/calc.cst.tab.rb +106 -106
  21. data/examples/sample_calc/calc.dr +1 -1
  22. data/examples/sample_calc/calc.lex.dr +4 -4
  23. data/examples/sample_calc/calc.lex.tab.rb +73 -73
  24. data/examples/sample_calc/calc.nvaction.dr +6 -6
  25. data/examples/sample_calc/calc.nvaction.tab.rb +90 -90
  26. data/examples/sample_calc/calc.tab.rb +71 -71
  27. data/examples/sample_calc/calc_prec.nvaction.dr +6 -6
  28. data/examples/sample_calc/calc_prec.nvaction.tab.rb +46 -46
  29. data/examples/slex_test/divreg.slex.dr +7 -7
  30. data/examples/slex_test/divreg.slex.tab.rb +20 -20
  31. data/examples/slex_test/ljoin.slex.dr +7 -7
  32. data/examples/slex_test/ljoin.slex.tab.rb +15 -15
  33. data/lib/depager.rb +45 -83
  34. data/lib/depager/grammar.rb +3 -7
  35. data/lib/depager/lr.rb +123 -1
  36. data/lib/depager/parser.rb +29 -48
  37. data/lib/depager/{template/ast.erbs → ruby/plugins/_ast_tmpl.rb} +11 -7
  38. data/lib/depager/{action.rb → ruby/plugins/action.rb} +7 -11
  39. data/lib/depager/{ast.dr → ruby/plugins/ast.dr} +24 -25
  40. data/lib/depager/{ast.rb → ruby/plugins/ast.rb} +241 -243
  41. data/lib/depager/{astdf.rb → ruby/plugins/astdf.rb} +1 -2
  42. data/lib/depager/{atree.dr → ruby/plugins/atree.dr} +5 -5
  43. data/lib/depager/{atree.rb → ruby/plugins/atree.rb} +39 -39
  44. data/lib/depager/{cst.dr → ruby/plugins/cst.dr} +17 -21
  45. data/lib/depager/{cst.rb → ruby/plugins/cst.rb} +62 -68
  46. data/lib/depager/{lex.dr → ruby/plugins/lex.dr} +3 -4
  47. data/lib/depager/{lex.rb → ruby/plugins/lex.rb} +29 -31
  48. data/lib/depager/{nvaction.rb → ruby/plugins/nvaction.rb} +1 -3
  49. data/lib/depager/{slex.dr → ruby/plugins/slex.dr} +16 -17
  50. data/lib/depager/{slex.rb → ruby/plugins/slex.rb} +115 -117
  51. data/lib/depager/{srp.rb → ruby/plugins/srp.rb} +4 -4
  52. data/lib/depager/{template → ruby/templates}/extension_lalr_master.erb +6 -6
  53. data/lib/depager/{template → ruby/templates}/extension_lalr_slave.erb +0 -0
  54. data/lib/depager/{template → ruby/templates}/simple.erb +0 -0
  55. data/lib/depager/{template → ruby/templates}/single_lalr_parser.erb +0 -0
  56. data/lib/depager/utils.rb +30 -69
  57. data/lib/depager/version.rb +1 -1
  58. metadata +59 -56
  59. data/examples/Rakefile +0 -36
  60. data/lib/depager/Rakefile +0 -34
  61. data/lib/depager/lr_put_table.rb +0 -116
  62. data/lib/depager/parse_action.rb +0 -24
@@ -51,25 +51,26 @@ class TinyCalc < Depager::LALR::Basis
51
51
  ]
52
52
  ### Action Table
53
53
  action_table = [
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, ],
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, ],
57
58
  [ nil, nil, nil, nil, nil, nil, nil, nil, nil, ],
58
59
  [ nil, nil, nil, nil, nil, nil, nil, nil, 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, ],
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, ],
67
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
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,
73
74
  nil,
74
75
  nil,
75
76
  -3,
@@ -80,17 +81,17 @@ class TinyCalc < Depager::LALR::Basis
80
81
  nil,
81
82
  nil,
82
83
  nil,
83
- nil,
84
+ -8,
84
85
  -1,
85
86
  -2,
86
87
  -4,
87
88
  -5,
88
- -8,
89
89
  ]
90
90
  defred_after_shift_table = [
91
91
  nil,
92
92
  nil,
93
93
  nil,
94
+ nil,
94
95
  -6,
95
96
  -7,
96
97
  nil,
@@ -98,12 +99,11 @@ class TinyCalc < Depager::LALR::Basis
98
99
  nil,
99
100
  nil,
100
101
  nil,
101
- nil,
102
+ -8,
102
103
  nil,
103
104
  nil,
104
105
  -4,
105
106
  -5,
106
- -8,
107
107
  ]
108
108
  ### Nonterm to Int
109
109
  nt2i = {
@@ -119,17 +119,17 @@ class TinyCalc < Depager::LALR::Basis
119
119
  ]
120
120
  ### Goto Table
121
121
  goto_table = [
122
- [ 1, 2, 3, ],
122
+ [ 2, 3, 4, ],
123
+ [ 6, 3, 4, ],
123
124
  [ nil, nil, nil, ],
124
125
  [ nil, nil, nil, ],
125
126
  [ nil, nil, nil, ],
126
127
  [ nil, nil, nil, ],
127
- [ 10, 2, 3, ],
128
- [ nil, 11, 3, ],
129
- [ nil, 12, 3, ],
130
- [ nil, nil, 13, ],
131
- [ nil, nil, 14, ],
132
128
  [ nil, nil, nil, ],
129
+ [ nil, 12, 4, ],
130
+ [ nil, 13, 4, ],
131
+ [ nil, nil, 14, ],
132
+ [ nil, nil, 15, ],
133
133
  [ nil, nil, nil, ],
134
134
  [ nil, nil, nil, ],
135
135
  [ nil, nil, nil, ],
@@ -150,20 +150,30 @@ class TinyCalc < Depager::LALR::Basis
150
150
  I000 =
151
151
  ( 0) $start : _ expr
152
152
 
153
- NUM shift, and goto to state 4
154
- '(' shift, and goto to state 5
153
+ NUM shift, and goto to state 5
154
+ '(' shift, and goto to state 1
155
155
 
156
156
 
157
157
  ----------
158
158
 
159
159
  <<'----------',
160
160
  I001 =
161
+ ( 8) fact : '(' _ expr ')'
162
+
163
+ NUM shift, and goto to state 5
164
+ '(' shift, and goto to state 1
165
+
166
+
167
+ ----------
168
+
169
+ <<'----------',
170
+ I002 =
161
171
  ( 0) $start : expr _
162
172
  ( 1) expr : expr _ '+' term
163
173
  ( 2) expr : expr _ '-' term
164
174
 
165
- '+' shift, and goto to state 6
166
- '-' shift, and goto to state 7
175
+ '+' shift, and goto to state 7
176
+ '-' shift, and goto to state 8
167
177
 
168
178
 
169
179
  $end accept
@@ -171,20 +181,20 @@ I001 =
171
181
  ----------
172
182
 
173
183
  <<'----------',
174
- I002 =
184
+ I003 =
175
185
  ( 3) expr : term _
176
186
  ( 4) term : term _ '*' fact
177
187
  ( 5) term : term _ '/' fact
178
188
 
179
- '*' shift, and goto to state 8
180
- '/' shift, and goto to state 9
189
+ '*' shift, and goto to state 9
190
+ '/' shift, and goto to state 10
181
191
 
182
192
  $default reduce using rule 3 (expr)
183
193
 
184
194
  ----------
185
195
 
186
196
  <<'----------',
187
- I003 =
197
+ I004 =
188
198
  ( 6) term : fact _
189
199
 
190
200
 
@@ -193,7 +203,7 @@ I003 =
193
203
  ----------
194
204
 
195
205
  <<'----------',
196
- I004 =
206
+ I005 =
197
207
  ( 7) fact : NUM _
198
208
 
199
209
 
@@ -202,96 +212,95 @@ I004 =
202
212
  ----------
203
213
 
204
214
  <<'----------',
205
- I005 =
206
- ( 8) fact : '(' _ expr ')'
215
+ I006 =
216
+ ( 8) fact : '(' expr _ ')'
217
+ ( 1) expr : expr _ '+' term
218
+ ( 2) expr : expr _ '-' term
207
219
 
208
- NUM shift, and goto to state 4
209
- '(' shift, and goto to state 5
220
+ '+' shift, and goto to state 7
221
+ '-' shift, and goto to state 8
222
+ ')' shift, and goto to state 11
210
223
 
211
224
 
212
225
  ----------
213
226
 
214
227
  <<'----------',
215
- I006 =
228
+ I007 =
216
229
  ( 1) expr : expr '+' _ term
217
230
 
218
- NUM shift, and goto to state 4
219
- '(' shift, and goto to state 5
231
+ NUM shift, and goto to state 5
232
+ '(' shift, and goto to state 1
220
233
 
221
234
 
222
235
  ----------
223
236
 
224
237
  <<'----------',
225
- I007 =
238
+ I008 =
226
239
  ( 2) expr : expr '-' _ term
227
240
 
228
- NUM shift, and goto to state 4
229
- '(' shift, and goto to state 5
241
+ NUM shift, and goto to state 5
242
+ '(' shift, and goto to state 1
230
243
 
231
244
 
232
245
  ----------
233
246
 
234
247
  <<'----------',
235
- I008 =
248
+ I009 =
236
249
  ( 4) term : term '*' _ fact
237
250
 
238
- NUM shift, and goto to state 4
239
- '(' shift, and goto to state 5
251
+ NUM shift, and goto to state 5
252
+ '(' shift, and goto to state 1
240
253
 
241
254
 
242
255
  ----------
243
256
 
244
257
  <<'----------',
245
- I009 =
258
+ I010 =
246
259
  ( 5) term : term '/' _ fact
247
260
 
248
- NUM shift, and goto to state 4
249
- '(' shift, and goto to state 5
261
+ NUM shift, and goto to state 5
262
+ '(' shift, and goto to state 1
250
263
 
251
264
 
252
265
  ----------
253
266
 
254
267
  <<'----------',
255
- I010 =
256
- ( 8) fact : '(' expr _ ')'
257
- ( 1) expr : expr _ '+' term
258
- ( 2) expr : expr _ '-' term
268
+ I011 =
269
+ ( 8) fact : '(' expr ')' _
259
270
 
260
- '+' shift, and goto to state 6
261
- '-' shift, and goto to state 7
262
- ')' shift, and goto to state 15
263
271
 
272
+ $default reduce using rule 8 (fact) [after shift]
264
273
 
265
274
  ----------
266
275
 
267
276
  <<'----------',
268
- I011 =
277
+ I012 =
269
278
  ( 1) expr : expr '+' term _
270
279
  ( 4) term : term _ '*' fact
271
280
  ( 5) term : term _ '/' fact
272
281
 
273
- '*' shift, and goto to state 8
274
- '/' shift, and goto to state 9
282
+ '*' shift, and goto to state 9
283
+ '/' shift, and goto to state 10
275
284
 
276
285
  $default reduce using rule 1 (expr)
277
286
 
278
287
  ----------
279
288
 
280
289
  <<'----------',
281
- I012 =
290
+ I013 =
282
291
  ( 2) expr : expr '-' term _
283
292
  ( 4) term : term _ '*' fact
284
293
  ( 5) term : term _ '/' fact
285
294
 
286
- '*' shift, and goto to state 8
287
- '/' shift, and goto to state 9
295
+ '*' shift, and goto to state 9
296
+ '/' shift, and goto to state 10
288
297
 
289
298
  $default reduce using rule 2 (expr)
290
299
 
291
300
  ----------
292
301
 
293
302
  <<'----------',
294
- I013 =
303
+ I014 =
295
304
  ( 4) term : term '*' fact _
296
305
 
297
306
 
@@ -300,21 +309,12 @@ I013 =
300
309
  ----------
301
310
 
302
311
  <<'----------',
303
- I014 =
312
+ I015 =
304
313
  ( 5) term : term '/' fact _
305
314
 
306
315
 
307
316
  $default reduce using rule 5 (term) [after shift]
308
317
 
309
- ----------
310
-
311
- <<'----------',
312
- I015 =
313
- ( 8) fact : '(' expr ')' _
314
-
315
-
316
- $default reduce using rule 8 (fact) [after shift]
317
-
318
318
  ----------
319
319
  ]
320
320
 
@@ -341,12 +341,12 @@ I015 =
341
341
 
342
342
  when /\A[1-9][0-9]*/
343
343
  @oldline = @line; @line = $'
344
- yield _Token(:NUM, $&.to_i)
344
+ yield token(:NUM, $&.to_i)
345
345
 
346
346
 
347
347
  when /\A./
348
348
  @oldline = @line; @line = $'
349
- yield _Token($&, $&)
349
+ yield token($&, $&)
350
350
 
351
351
 
352
352
  else
@@ -368,61 +368,61 @@ end
368
368
 
369
369
  class Visitor
370
370
 
371
- module_eval <<-'.,.,120998293447553.,.,', 'sample_calc/calc.cst.dr', 23
371
+ module_eval <<-'.,.,122745803928929.,.,', 'sample_calc/calc.cst.dr', 23
372
372
  def visit_Node_expr_0 node
373
373
  node.value = node.expr.value + node.term.value
374
374
 
375
375
  end
376
- .,.,120998293447553.,.,
376
+ .,.,122745803928929.,.,
377
377
 
378
- module_eval <<-'.,.,1209982934266.,.,', 'sample_calc/calc.cst.dr', 24
378
+ module_eval <<-'.,.,12274580395023.,.,', 'sample_calc/calc.cst.dr', 24
379
379
  def visit_Node_expr_1 node
380
380
  node.value = node.expr.value + node.term.value
381
381
 
382
382
  end
383
- .,.,1209982934266.,.,
383
+ .,.,12274580395023.,.,
384
384
 
385
- module_eval <<-'.,.,120998293442645.,.,', 'sample_calc/calc.cst.dr', 25
385
+ module_eval <<-'.,.,12274580391475.,.,', 'sample_calc/calc.cst.dr', 25
386
386
  def visit_Node_expr_2 node
387
387
  node.value = node.term.value
388
388
 
389
389
  end
390
- .,.,120998293442645.,.,
390
+ .,.,12274580391475.,.,
391
391
 
392
- module_eval <<-'.,.,120998293449169.,.,', 'sample_calc/calc.cst.dr', 28
392
+ module_eval <<-'.,.,122745803963610.,.,', 'sample_calc/calc.cst.dr', 28
393
393
  def visit_Node_term_0 node
394
394
  node.value = node.term.value * node.fact.value
395
395
 
396
396
  end
397
- .,.,120998293449169.,.,
397
+ .,.,122745803963610.,.,
398
398
 
399
- module_eval <<-'.,.,12099829345606.,.,', 'sample_calc/calc.cst.dr', 29
399
+ module_eval <<-'.,.,122745803936130.,.,', 'sample_calc/calc.cst.dr', 29
400
400
  def visit_Node_term_1 node
401
401
  node.value = node.term.value / node.fact.value
402
402
 
403
403
  end
404
- .,.,12099829345606.,.,
404
+ .,.,122745803936130.,.,
405
405
 
406
- module_eval <<-'.,.,120998293417529.,.,', 'sample_calc/calc.cst.dr', 30
406
+ module_eval <<-'.,.,122745803926151.,.,', 'sample_calc/calc.cst.dr', 30
407
407
  def visit_Node_term_2 node
408
408
  node.value = node.fact.value
409
409
 
410
410
  end
411
- .,.,120998293417529.,.,
411
+ .,.,122745803926151.,.,
412
412
 
413
- module_eval <<-'.,.,12099829345810.,.,', 'sample_calc/calc.cst.dr', 33
413
+ module_eval <<-'.,.,122745803911098.,.,', 'sample_calc/calc.cst.dr', 33
414
414
  def visit_Node_fact_0 node
415
415
  node.value = node.num.value
416
416
 
417
417
  end
418
- .,.,12099829345810.,.,
418
+ .,.,122745803911098.,.,
419
419
 
420
- module_eval <<-'.,.,120998293441876.,.,', 'sample_calc/calc.cst.dr', 34
420
+ module_eval <<-'.,.,122745803942330.,.,', 'sample_calc/calc.cst.dr', 34
421
421
  def visit_Node_fact_1 node
422
422
  node.value = node.expr
423
423
 
424
424
  end
425
- .,.,120998293441876.,.,
425
+ .,.,122745803942330.,.,
426
426
 
427
427
  end
428
428
 
@@ -554,7 +554,7 @@ v.visit_Node_fact_1(self)
554
554
 
555
555
  class D4TinyCalc::CSTBuilder < Depager::LALR::Action #:nodoc:all
556
556
  include Depager::DecoratorUtils
557
- []
557
+
558
558
  on_reduce = [
559
559
  nil,
560
560
  :_cst_0,
@@ -575,53 +575,53 @@ class D4TinyCalc::CSTBuilder < Depager::LALR::Action #:nodoc:all
575
575
  end
576
576
 
577
577
 
578
- module_eval <<-'.,.,120998293417689.,.,', 'sample_calc/calc.cst.dr', 23
578
+ module_eval <<-'.,.,122745803958185.,.,', 'sample_calc/calc.cst.dr', 23
579
579
  def _cst_0 val
580
580
  Node_expr_0.new(val[0], val[1], val[2])
581
581
  end
582
- .,.,120998293417689.,.,
582
+ .,.,122745803958185.,.,
583
583
 
584
- module_eval <<-'.,.,120998293460542.,.,', 'sample_calc/calc.cst.dr', 24
584
+ module_eval <<-'.,.,122745803928586.,.,', 'sample_calc/calc.cst.dr', 24
585
585
  def _cst_1 val
586
586
  Node_expr_1.new(val[0], val[1], val[2])
587
587
  end
588
- .,.,120998293460542.,.,
588
+ .,.,122745803928586.,.,
589
589
 
590
- module_eval <<-'.,.,12099829348426.,.,', 'sample_calc/calc.cst.dr', 25
590
+ module_eval <<-'.,.,122745803930636.,.,', 'sample_calc/calc.cst.dr', 25
591
591
  def _cst_2 val
592
592
  Node_expr_2.new(val[0])
593
593
  end
594
- .,.,12099829348426.,.,
594
+ .,.,122745803930636.,.,
595
595
 
596
- module_eval <<-'.,.,120998293430701.,.,', 'sample_calc/calc.cst.dr', 28
596
+ module_eval <<-'.,.,12274580392302.,.,', 'sample_calc/calc.cst.dr', 28
597
597
  def _cst_3 val
598
598
  Node_term_0.new(val[0], val[1], val[2])
599
599
  end
600
- .,.,120998293430701.,.,
600
+ .,.,12274580392302.,.,
601
601
 
602
- module_eval <<-'.,.,120998293449360.,.,', 'sample_calc/calc.cst.dr', 29
602
+ module_eval <<-'.,.,122745803915548.,.,', 'sample_calc/calc.cst.dr', 29
603
603
  def _cst_4 val
604
604
  Node_term_1.new(val[0], val[1], val[2])
605
605
  end
606
- .,.,120998293449360.,.,
606
+ .,.,122745803915548.,.,
607
607
 
608
- module_eval <<-'.,.,120998293440225.,.,', 'sample_calc/calc.cst.dr', 30
608
+ module_eval <<-'.,.,122745803944731.,.,', 'sample_calc/calc.cst.dr', 30
609
609
  def _cst_5 val
610
610
  Node_term_2.new(val[0])
611
611
  end
612
- .,.,120998293440225.,.,
612
+ .,.,122745803944731.,.,
613
613
 
614
- module_eval <<-'.,.,120998293456355.,.,', 'sample_calc/calc.cst.dr', 33
614
+ module_eval <<-'.,.,122745803920542.,.,', 'sample_calc/calc.cst.dr', 33
615
615
  def _cst_6 val
616
616
  Node_fact_0.new(val[0])
617
617
  end
618
- .,.,120998293456355.,.,
618
+ .,.,122745803920542.,.,
619
619
 
620
- module_eval <<-'.,.,120998293443146.,.,', 'sample_calc/calc.cst.dr', 34
620
+ module_eval <<-'.,.,12274580399969.,.,', 'sample_calc/calc.cst.dr', 34
621
621
  def _cst_7 val
622
622
  Node_fact_1.new(val[0], val[1], val[2])
623
623
  end
624
- .,.,120998293443146.,.,
624
+ .,.,12274580399969.,.,
625
625
 
626
626
  end
627
627
 
@@ -635,7 +635,7 @@ if __FILE__ == $0
635
635
  ### Main Code
636
636
  require 'pp'
637
637
  parser = createDecoratedTinyCalc
638
- r, = parser.yyparse(STDIN)
638
+ r, = parser.parse(STDIN)
639
639
  v = Visitor.new
640
640
  r.accept(v)
641
641
  pp r