depager 0.2.0 → 0.2.2

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