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
@@ -1,10 +1,7 @@
1
- require 'depager/ast_base.rb'
2
- class ASTBuilderDepthFirstExtension < ASTBuilderBaseExtension #:nodoc:all
3
- def modify_action_code code, nodes=[]
4
- code.gsub(/~([a-z_])/, 'node.\1')
5
- end
1
+ require 'depager/ast.rb'
2
+ class ASTBuilderDepthFirstExtension < ASTBuilderExtension #:nodoc:all
6
3
  def gen_accept_code sym
7
4
  " @#{sym}.accept(v)\n"
8
5
  end
9
- Template = CodeUtils::make_tmpl("#{Depager::Tmpldir}/astdf.erbs")
6
+ Template = superclass::Template
10
7
  end
@@ -102,14 +102,14 @@ class ATreeBuilderExtension_postrhs < Depager::LALR::Basis #:nodoc:all
102
102
  [ nil, nil, nil, 4, nil, nil, nil, nil, ],
103
103
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
104
104
  [ nil, nil, nil, nil, 5, nil, nil, nil, ],
105
- [ nil, nil, nil, 7, nil, 10, nil, 6, ],
105
+ [ nil, nil, nil, 9, nil, 6, nil, 10, ],
106
106
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
107
+ [ nil, nil, nil, nil, nil, 11, 12, nil, ],
107
108
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
108
- [ nil, nil, nil, nil, nil, 12, 11, nil, ],
109
109
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
110
110
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
111
- [ nil, nil, nil, 7, nil, nil, nil, 6, ],
112
111
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
112
+ [ nil, nil, nil, 9, nil, nil, nil, 10, ],
113
113
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
114
114
  ]
115
115
  ### Default Reduce Table
@@ -120,13 +120,13 @@ class ATreeBuilderExtension_postrhs < Depager::LALR::Basis #:nodoc:all
120
120
  -1,
121
121
  -4,
122
122
  nil,
123
- -8,
124
- -7,
125
- nil,
126
- -5,
127
123
  -2,
128
124
  nil,
125
+ -5,
126
+ -7,
127
+ -8,
129
128
  -3,
129
+ nil,
130
130
  -6,
131
131
  ]
132
132
  defred_after_shift_table = [
@@ -136,13 +136,13 @@ class ATreeBuilderExtension_postrhs < Depager::LALR::Basis #:nodoc:all
136
136
  -1,
137
137
  nil,
138
138
  nil,
139
- -8,
140
- -7,
141
- nil,
142
- -5,
143
139
  -2,
144
140
  nil,
141
+ -5,
142
+ -7,
143
+ -8,
145
144
  -3,
145
+ nil,
146
146
  -6,
147
147
  ]
148
148
  ### Nonterm to Int
@@ -166,14 +166,14 @@ class ATreeBuilderExtension_postrhs < Depager::LALR::Basis #:nodoc:all
166
166
  [ nil, 3, nil, nil, ],
167
167
  [ nil, nil, nil, nil, ],
168
168
  [ nil, nil, nil, nil, ],
169
- [ nil, nil, 8, 9, ],
169
+ [ nil, nil, 7, 8, ],
170
170
  [ nil, nil, nil, nil, ],
171
171
  [ nil, nil, nil, nil, ],
172
172
  [ nil, nil, nil, nil, ],
173
173
  [ nil, nil, nil, nil, ],
174
174
  [ nil, nil, nil, nil, ],
175
- [ nil, nil, nil, 13, ],
176
175
  [ nil, nil, nil, nil, ],
176
+ [ nil, nil, nil, 13, ],
177
177
  [ nil, nil, nil, nil, ],
178
178
  ]
179
179
 
@@ -253,7 +253,7 @@ end
253
253
 
254
254
  class D4ATreeBuilderExtension_postrhs::NVAction < Depager::LALR::Action #:nodoc:all
255
255
  include Depager::DecoratorUtils
256
-
256
+ []
257
257
  on_reduce = [
258
258
  nil,
259
259
  :_act_0,
@@ -274,81 +274,73 @@ class D4ATreeBuilderExtension_postrhs::NVAction < Depager::LALR::Action #:nodoc:
274
274
  end
275
275
 
276
276
 
277
- module_eval <<-'.,.,118754107734084.,.,', 'atree.dr', 32
278
- def _act_0 val
279
- _EG, _ast = *val
277
+ module_eval <<-'.,.,120998292334355.,.,', 'atree.dr', 32
278
+ def _act_0 val
279
+ _EG, _ast, = *val
280
280
 
281
281
  n = master.nrules
282
282
  master.optouter <<
283
283
  master.gen_defm_code("_atree_#{n} val", _ast, _EG.lineno)
284
284
  master.on_reduce[n] = ":_atree_#{n}"
285
285
 
286
- end
287
-
288
- .,.,118754107734084.,.,
286
+ end
287
+ .,.,120998292334355.,.,
289
288
 
290
- module_eval <<-'.,.,11875410773078.,.,', 'atree.dr', 40
291
- def _act_1 val
292
- _ID, _, _ = *val
289
+ module_eval <<-'.,.,120998292322383.,.,', 'atree.dr', 40
290
+ def _act_1 val
291
+ _ID, _, _, = *val
293
292
  "[:#{_ID.value}]"
294
293
 
295
- end
296
-
297
- .,.,11875410773078.,.,
294
+ end
295
+ .,.,120998292322383.,.,
298
296
 
299
- module_eval <<-'.,.,118754107728685.,.,', 'atree.dr', 41
300
- def _act_2 val
301
- _ID, _, _fact_list, _ = *val
297
+ module_eval <<-'.,.,120998292327560.,.,', 'atree.dr', 41
298
+ def _act_2 val
299
+ _ID, _, _fact_list, _, = *val
302
300
  "[:#{_ID.value}, #{_fact_list.join(',')}]"
303
301
 
304
- end
305
-
306
- .,.,118754107728685.,.,
302
+ end
303
+ .,.,120998292327560.,.,
307
304
 
308
- module_eval <<-'.,.,118754107760030.,.,', 'atree.dr', 42
309
- def _act_3 val
310
- _ID = *val
305
+ module_eval <<-'.,.,120998292335893.,.,', 'atree.dr', 42
306
+ def _act_3 val
307
+ _ID, = *val
311
308
  "val[#{g_parser.name_to_rhs_index(_ID.value)}]"
312
309
 
313
- end
314
-
315
- .,.,118754107760030.,.,
310
+ end
311
+ .,.,120998292335893.,.,
316
312
 
317
- module_eval <<-'.,.,118754107732642.,.,', 'atree.dr', 45
318
- def _act_4 val
319
- _fact = *val
313
+ module_eval <<-'.,.,120998292340950.,.,', 'atree.dr', 45
314
+ def _act_4 val
315
+ _fact, = *val
320
316
  [ _fact ]
321
317
 
322
- end
323
-
324
- .,.,118754107732642.,.,
318
+ end
319
+ .,.,120998292340950.,.,
325
320
 
326
- module_eval <<-'.,.,118754107753843.,.,', 'atree.dr', 46
327
- def _act_5 val
328
- _fact_list, _, _fact = *val
321
+ module_eval <<-'.,.,120998292327661.,.,', 'atree.dr', 46
322
+ def _act_5 val
323
+ _fact_list, _, _fact, = *val
329
324
  _fact_list.push _fact
330
325
 
331
- end
332
-
333
- .,.,118754107753843.,.,
326
+ end
327
+ .,.,120998292327661.,.,
334
328
 
335
- module_eval <<-'.,.,118754107752237.,.,', 'atree.dr', 49
336
- def _act_6 val
337
- _ID = *val
329
+ module_eval <<-'.,.,120998292362107.,.,', 'atree.dr', 49
330
+ def _act_6 val
331
+ _ID, = *val
338
332
  "val[#{g_parser.name_to_rhs_index(_ID.value)}]"
339
333
 
340
- end
341
-
342
- .,.,118754107752237.,.,
334
+ end
335
+ .,.,120998292362107.,.,
343
336
 
344
- module_eval <<-'.,.,118754107722958.,.,', 'atree.dr', 50
345
- def _act_7 val
346
- _STR = *val
337
+ module_eval <<-'.,.,120998292336597.,.,', 'atree.dr', 50
338
+ def _act_7 val
339
+ _STR, = *val
347
340
  "'#{_STR.value}'"
348
341
 
349
- end
350
-
351
- .,.,118754107722958.,.,
342
+ end
343
+ .,.,120998292336597.,.,
352
344
 
353
345
  end
354
346
 
@@ -33,7 +33,7 @@
33
33
  nodes = g_parser.rhs.map do |i|
34
34
  x = g_parser.int_to_sym(i)
35
35
  if x.class == String
36
- "tx#{x[0].to_s(16)}"
36
+ "tx#{x.unpack("H*")[0]}"
37
37
  else
38
38
  x = x.to_s
39
39
  accept << "#{x}.accept(v); " if x =~ /\A[a-z_]+\Z/
@@ -82,7 +82,7 @@
82
82
  end
83
83
  }; #code
84
84
  g_parser.optouter <<
85
- code.sub!('$$!!@ CST @!!$$', @visitor_code.to_s) <<
85
+ code.sub!('$$!!@ CST @!!$$', @visitor_code.join) <<
86
86
  unindent(@nodes_code) <<
87
87
  gen_action_decorator_code(target_name, paramkey,
88
88
  @on_reduce, @optouter)
@@ -66,7 +66,7 @@ class CSTBuilderExtension #:nodoc:all
66
66
  nodes = g_parser.rhs.map do |i|
67
67
  x = g_parser.int_to_sym(i)
68
68
  if x.class == String
69
- "tx#{x[0].to_s(16)}"
69
+ "tx#{x.unpack("H*")[0]}"
70
70
  else
71
71
  x = x.to_s
72
72
  accept << "#{x}.accept(v); " if x =~ /\A[a-z_]+\Z/
@@ -115,7 +115,7 @@ class CSTBuilderExtension #:nodoc:all
115
115
  end
116
116
  }; #code
117
117
  g_parser.optouter <<
118
- code.sub!('$$!!@ CST @!!$$', @visitor_code.to_s) <<
118
+ code.sub!('$$!!@ CST @!!$$', @visitor_code.join) <<
119
119
  unindent(@nodes_code) <<
120
120
  gen_action_decorator_code(target_name, paramkey,
121
121
  @on_reduce, @optouter)
@@ -167,10 +167,10 @@ class CSTBuilderExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
167
167
  ]
168
168
  ### Action Table
169
169
  action_table = [
170
- [ nil, nil, 1, nil, nil, ],
171
- [ nil, nil, nil, 4, nil, ],
170
+ [ nil, nil, 3, nil, nil, ],
172
171
  [ ACC, nil, nil, nil, nil, ],
173
172
  [ nil, nil, nil, nil, 5, ],
173
+ [ nil, nil, nil, 6, nil, ],
174
174
  [ nil, nil, nil, nil, nil, ],
175
175
  [ nil, nil, nil, 7, nil, ],
176
176
  [ nil, nil, nil, nil, nil, ],
@@ -180,11 +180,11 @@ class CSTBuilderExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
180
180
  defred_table = [
181
181
  -2,
182
182
  nil,
183
- nil,
184
183
  -4,
185
- -3,
186
184
  nil,
187
185
  -1,
186
+ nil,
187
+ -3,
188
188
  -5,
189
189
  ]
190
190
  defred_after_shift_table = [
@@ -192,9 +192,9 @@ class CSTBuilderExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
192
192
  nil,
193
193
  nil,
194
194
  nil,
195
- -3,
196
- nil,
197
195
  -1,
196
+ nil,
197
+ -3,
198
198
  -5,
199
199
  ]
200
200
  ### Nonterm to Int
@@ -211,10 +211,10 @@ class CSTBuilderExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
211
211
  ]
212
212
  ### Goto Table
213
213
  goto_table = [
214
- [ 2, 3, nil, ],
214
+ [ 1, 2, nil, ],
215
215
  [ nil, nil, nil, ],
216
+ [ nil, nil, 4, ],
216
217
  [ nil, nil, nil, ],
217
- [ nil, nil, 6, ],
218
218
  [ nil, nil, nil, ],
219
219
  [ nil, nil, nil, ],
220
220
  [ nil, nil, nil, ],
@@ -291,9 +291,7 @@ end
291
291
 
292
292
  class D4CSTBuilderExtension_prerulelist::NVAction < Depager::LALR::Action #:nodoc:all
293
293
  include Depager::DecoratorUtils
294
- include ActionParser
295
- include ActionParser
296
-
294
+ [" include ActionParser\n", " include ActionParser\n"]
297
295
  on_reduce = [
298
296
  nil,
299
297
  :_act_0,
@@ -311,9 +309,9 @@ include ActionParser
311
309
  end
312
310
 
313
311
 
314
- module_eval <<-'.,.,118754107719806.,.,', 'cst.dr', 104
315
- def _act_0 val
316
- _opt_node, _opt_visitor = *val
312
+ module_eval <<-'.,.,120998292315579.,.,', 'cst.dr', 104
313
+ def _act_0 val
314
+ _opt_node, _opt_visitor, = *val
317
315
 
318
316
  code = %{
319
317
  class Node
@@ -327,43 +325,38 @@ module_eval <<-'.,.,118754107719806.,.,', 'cst.dr', 104
327
325
  code.sub!('$$!!@ NODE @!!$$', _opt_node) \
328
326
  .sub!('$$!!@ VISITOR @!!$$', _opt_visitor)
329
327
 
330
- end
331
-
332
- .,.,118754107719806.,.,
328
+ end
329
+ .,.,120998292315579.,.,
333
330
 
334
- module_eval <<-'.,.,118754107715644.,.,', 'cst.dr', 119
335
- def _act_1 val
331
+ module_eval <<-'.,.,120998292321982.,.,', 'cst.dr', 119
332
+ def _act_1 val
336
333
  ''
337
334
 
338
- end
339
-
340
- .,.,118754107715644.,.,
335
+ end
336
+ .,.,120998292321982.,.,
341
337
 
342
- module_eval <<-'.,.,118754107752569.,.,', 'cst.dr', 120
343
- def _act_2 val
344
- _NODE, _ACTION = *val
338
+ module_eval <<-'.,.,120998292319798.,.,', 'cst.dr', 120
339
+ def _act_2 val
340
+ _NODE, _ACTION, = *val
345
341
  _ACTION.value
346
342
 
347
- end
348
-
349
- .,.,118754107752569.,.,
343
+ end
344
+ .,.,120998292319798.,.,
350
345
 
351
- module_eval <<-'.,.,118754107761602.,.,', 'cst.dr', 123
352
- def _act_3 val
346
+ module_eval <<-'.,.,120998292317944.,.,', 'cst.dr', 123
347
+ def _act_3 val
353
348
  ''
354
349
 
355
- end
356
-
357
- .,.,118754107761602.,.,
350
+ end
351
+ .,.,120998292317944.,.,
358
352
 
359
- module_eval <<-'.,.,118754107741735.,.,', 'cst.dr', 124
360
- def _act_4 val
361
- _VISITOR, _ACTION = *val
353
+ module_eval <<-'.,.,120998292323044.,.,', 'cst.dr', 124
354
+ def _act_4 val
355
+ _VISITOR, _ACTION, = *val
362
356
  _ACTION.value
363
357
 
364
- end
365
-
366
- .,.,118754107741735.,.,
358
+ end
359
+ .,.,120998292323044.,.,
367
360
 
368
361
  end
369
362
 
@@ -416,9 +409,9 @@ class CSTBuilderExtension_postlhs < Depager::LALR::Basis #:nodoc:all
416
409
  ]
417
410
  ### Action Table
418
411
  action_table = [
419
- [ nil, nil, 1, nil, nil, nil, nil, nil, ],
420
- [ nil, nil, nil, nil, nil, 5, nil, nil, ],
412
+ [ nil, nil, 2, nil, nil, nil, nil, nil, ],
421
413
  [ ACC, nil, nil, nil, nil, nil, nil, nil, ],
414
+ [ nil, nil, nil, nil, nil, 5, nil, nil, ],
422
415
  [ nil, nil, nil, 6, 7, nil, nil, nil, ],
423
416
  [ nil, nil, nil, nil, nil, nil, nil, nil, ],
424
417
  [ nil, nil, nil, nil, nil, nil, 8, nil, ],
@@ -469,9 +462,9 @@ class CSTBuilderExtension_postlhs < Depager::LALR::Basis #:nodoc:all
469
462
  ]
470
463
  ### Goto Table
471
464
  goto_table = [
472
- [ 2, nil, nil, ],
473
- [ nil, 3, 4, ],
465
+ [ 1, nil, nil, ],
474
466
  [ nil, nil, nil, ],
467
+ [ nil, 3, 4, ],
475
468
  [ nil, nil, nil, ],
476
469
  [ nil, nil, nil, ],
477
470
  [ nil, nil, nil, ],
@@ -561,8 +554,7 @@ end
561
554
 
562
555
  class D4CSTBuilderExtension_postlhs::NVAction < Depager::LALR::Action #:nodoc:all
563
556
  include Depager::DecoratorUtils
564
- include ActionParser
565
-
557
+ [" include ActionParser\n"]
566
558
  on_reduce = [
567
559
  nil,
568
560
  :_act_0,
@@ -580,9 +572,9 @@ class D4CSTBuilderExtension_postlhs::NVAction < Depager::LALR::Action #:nodoc:al
580
572
  end
581
573
 
582
574
 
583
- module_eval <<-'.,.,118754107847682.,.,', 'cst.dr', 155
584
- def _act_0 val
585
- _, _pair, _ = *val
575
+ module_eval <<-'.,.,120998292354439.,.,', 'cst.dr', 155
576
+ def _act_0 val
577
+ _, _pair, _, = *val
586
578
 
587
579
  args = []; code = ''
588
580
  _pair.each do |id, lit|
@@ -600,45 +592,40 @@ module_eval <<-'.,.,118754107847682.,.,', 'cst.dr', 155
600
592
  end
601
593
  }; #code
602
594
 
603
- end
604
-
605
- .,.,118754107847682.,.,
595
+ end
596
+ .,.,120998292354439.,.,
606
597
 
607
- module_eval <<-'.,.,118754107817648.,.,', 'cst.dr', 174
608
- def _act_1 val
609
- _expr = *val
598
+ module_eval <<-'.,.,120998292355813.,.,', 'cst.dr', 174
599
+ def _act_1 val
600
+ _expr, = *val
610
601
  [ _expr ]
611
602
 
612
- end
613
-
614
- .,.,118754107817648.,.,
603
+ end
604
+ .,.,120998292355813.,.,
615
605
 
616
- module_eval <<-'.,.,118754107822421.,.,', 'cst.dr', 175
617
- def _act_2 val
618
- _pair, _, _expr = *val
606
+ module_eval <<-'.,.,120998292324404.,.,', 'cst.dr', 175
607
+ def _act_2 val
608
+ _pair, _, _expr, = *val
619
609
  _pair << _expr
620
610
 
621
- end
622
-
623
- .,.,118754107822421.,.,
611
+ end
612
+ .,.,120998292324404.,.,
624
613
 
625
- module_eval <<-'.,.,118754107863218.,.,', 'cst.dr', 178
626
- def _act_3 val
627
- _ID = *val
614
+ module_eval <<-'.,.,12099829236180.,.,', 'cst.dr', 178
615
+ def _act_3 val
616
+ _ID, = *val
628
617
  [ _ID.value, nil]
629
618
 
630
- end
631
-
632
- .,.,118754107863218.,.,
619
+ end
620
+ .,.,12099829236180.,.,
633
621
 
634
- module_eval <<-'.,.,118754107828193.,.,', 'cst.dr', 179
635
- def _act_4 val
636
- _ID, _, _LIT = *val
622
+ module_eval <<-'.,.,12099829233028.,.,', 'cst.dr', 179
623
+ def _act_4 val
624
+ _ID, _, _LIT, = *val
637
625
  [ _ID.value, _LIT.value ]
638
626
 
639
- end
640
-
641
- .,.,118754107828193.,.,
627
+ end
628
+ .,.,12099829233028.,.,
642
629
 
643
630
  end
644
631