depager 0.1.9 → 0.2.0

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 (63) hide show
  1. data/ChangeLog +4 -0
  2. data/bin/depager +1 -0
  3. data/data/depager/misc/depager-mode.el +35 -24
  4. data/data/depager/pre-setup.rb +3 -0
  5. data/examples/Rakefile +36 -0
  6. data/examples/c89/c89.dr +496 -0
  7. data/examples/c89/c89.tab.rb +2197 -0
  8. data/examples/c89/test.c89 +10 -0
  9. data/{data/depager/sample → examples}/extension/paction.dr +0 -0
  10. data/{data/depager/sample → examples}/extension/pactiontest.dr +0 -0
  11. data/{data/depager/sample → examples}/pl0d/pl0ds.dr +0 -0
  12. data/examples/pl0d/pl0ds.tab.rb +1702 -0
  13. data/{data/depager/sample/pl0d/pl0test.pl0 → examples/pl0d/test.pl0ds} +0 -0
  14. data/{data/depager/sample → examples}/sample_calc/calc.action.dr +0 -0
  15. data/examples/sample_calc/calc.action.tab.rb +283 -0
  16. data/{data/depager/sample → examples}/sample_calc/calc.astdf.dr +0 -0
  17. data/examples/sample_calc/calc.astdf.tab.rb +476 -0
  18. data/{data/depager/sample → examples}/sample_calc/calc.astl.action.dr +0 -0
  19. data/examples/sample_calc/calc.astl.action.tab.rb +593 -0
  20. data/{data/depager/sample → examples}/sample_calc/calc.astl.dr +0 -0
  21. data/examples/sample_calc/calc.astl.tab.rb +501 -0
  22. data/{data/depager/sample → examples}/sample_calc/calc.atree.dr +0 -0
  23. data/examples/sample_calc/calc.atree.tab.rb +277 -0
  24. data/{data/depager/sample → examples}/sample_calc/calc.cst.dr +0 -0
  25. data/examples/sample_calc/calc.cst.tab.rb +478 -0
  26. data/{data/depager/sample → examples}/sample_calc/calc.dr +0 -0
  27. data/{data/depager/sample → examples}/sample_calc/calc.lex.dr +0 -0
  28. data/examples/sample_calc/calc.lex.tab.rb +192 -0
  29. data/{data/depager/sample → examples}/sample_calc/calc.nvaction.dr +0 -0
  30. data/examples/sample_calc/calc.nvaction.tab.rb +291 -0
  31. data/examples/sample_calc/calc.tab.rb +183 -0
  32. data/{data/depager/sample → examples}/sample_calc/calc_prec.nvaction.dr +0 -0
  33. data/examples/sample_calc/calc_prec.nvaction.tab.rb +257 -0
  34. data/examples/sample_calc/test.calc +1 -0
  35. data/{data/depager/sample/slex_test/slextest1.dr → examples/slex_test/divreg.slex.dr} +3 -11
  36. data/examples/slex_test/divreg.slex.tab.rb +227 -0
  37. data/{data/depager/sample/slex_test/slextest2.dr → examples/slex_test/ljoin.slex.dr} +10 -7
  38. data/examples/slex_test/ljoin.slex.tab.rb +277 -0
  39. data/examples/slex_test/test.divreg +1 -0
  40. data/examples/slex_test/test.ljoin +3 -0
  41. data/lib/depager.rb +194 -127
  42. data/lib/depager/Rakefile +8 -4
  43. data/lib/depager/ast_base.dr +3 -3
  44. data/lib/depager/ast_base.rb +197 -144
  45. data/lib/depager/atree.rb +55 -36
  46. data/lib/depager/cst.dr +6 -4
  47. data/lib/depager/cst.rb +69 -49
  48. data/lib/depager/grammar.rb +136 -0
  49. data/lib/depager/lex.dr +22 -8
  50. data/lib/depager/lex.rb +94 -53
  51. data/lib/depager/lr.rb +101 -167
  52. data/lib/depager/parse_action.rb +1 -1
  53. data/lib/depager/parser.rb +34 -7
  54. data/lib/depager/slex.dr +76 -36
  55. data/lib/depager/slex.rb +345 -151
  56. data/lib/depager/srp.rb +3 -2
  57. data/lib/depager/template/extension_lalr_slave.erb +1 -1
  58. data/lib/depager/template/single_lalr_parser.erb +1 -1
  59. data/lib/depager/utils.rb +2 -1
  60. data/lib/depager/version.rb +2 -2
  61. metadata +42 -28
  62. data/Manifest.txt +0 -52
  63. data/lib/depager/psrtmpl.rb +0 -33
data/lib/depager/atree.rb CHANGED
@@ -53,7 +53,7 @@ end
53
53
  module D4ATreeBuilderExtension_postrhs #:nodoc:all
54
54
  end
55
55
 
56
- class ATreeBuilderExtension_postrhs < Basis #:nodoc:all
56
+ class ATreeBuilderExtension_postrhs < Depager::LALR::Basis #:nodoc:all
57
57
  include Depager::ExtensionUtils
58
58
 
59
59
 
@@ -201,30 +201,49 @@ class ATreeBuilderExtension_postrhs < Basis #:nodoc:all
201
201
 
202
202
  def lex
203
203
  begin
204
- until @line.empty? do
204
+ until @line.empty?
205
205
  case @line
206
- when /\A[ \t]+/
207
-
208
- when /\A\n/
209
- yield nil, nil
210
- when /\A[a-zA-Z][a-zA-Z0-9_]*/
211
- yield :ID, Token[$&, lineno]
212
- when /\A'(.+)'/
213
- yield :STR, Token[$1, lineno]
214
- when /\A::/
215
- yield :CC, Token[$&, lineno]
216
- when /\A=>/
217
- yield :EG, Token[$&, lineno]
218
- when /\A./
219
- yield $&, Token[$&, lineno]
206
+
207
+ when /\A[ \t]+/
208
+ @oldline = @line; @line = $'
209
+
220
210
 
211
+
212
+ when /\A\n/
213
+ @oldline = @line; @line = $'
214
+ yield nil, nil
215
+
216
+
217
+ when /\A[a-zA-Z][a-zA-Z0-9_]*/
218
+ @oldline = @line; @line = $'
219
+ yield :ID, Token[$&, lineno]
220
+
221
+
222
+ when /\A'(.+)'/
223
+ @oldline = @line; @line = $'
224
+ yield :STR, Token[$1, lineno]
225
+
226
+
227
+ when /\A::/
228
+ @oldline = @line; @line = $'
229
+ yield :CC, Token[$&, lineno]
230
+
231
+
232
+ when /\A=>/
233
+ @oldline = @line; @line = $'
234
+ yield :EG, Token[$&, lineno]
235
+
236
+
237
+ when /\A./
238
+ @oldline = @line; @line = $'
239
+ yield $&, Token[$&, lineno]
240
+
241
+
221
242
  else
222
243
  raise RuntimeError, "must not happen #{@line}"
223
244
  end
224
- @oldline = @line
225
- @line = $'
226
245
  end
227
- end while @line = getline
246
+ end while @line0 = @line = getline
228
247
  yield nil, nil
229
248
  end
230
249
 
@@ -232,7 +251,7 @@ end
232
251
 
233
252
  ### Outer Code
234
253
 
235
- class D4ATreeBuilderExtension_postrhs::NVAction < Depager::Action #:nodoc:all
254
+ class D4ATreeBuilderExtension_postrhs::NVAction < Depager::LALR::Action #:nodoc:all
236
255
  include Depager::DecoratorUtils
237
256
 
238
257
  on_reduce = [
@@ -255,7 +274,7 @@ class D4ATreeBuilderExtension_postrhs::NVAction < Depager::Action #:nodoc:all
255
274
  end
256
275
 
257
276
 
258
- module_eval <<-'.,.,118028145923483.,.,', 'atree.dr', 32
277
+ module_eval <<-'.,.,118754107734084.,.,', 'atree.dr', 32
259
278
  def _act_0 val
260
279
  _EG, _ast = *val
261
280
 
@@ -266,70 +285,70 @@ module_eval <<-'.,.,118028145923483.,.,', 'atree.dr', 32
266
285
 
267
286
  end
268
287
 
269
- .,.,118028145923483.,.,
288
+ .,.,118754107734084.,.,
270
289
 
271
- module_eval <<-'.,.,11802814596513.,.,', 'atree.dr', 40
290
+ module_eval <<-'.,.,11875410773078.,.,', 'atree.dr', 40
272
291
  def _act_1 val
273
292
  _ID, _, _ = *val
274
293
  "[:#{_ID.value}]"
275
294
 
276
295
  end
277
296
 
278
- .,.,11802814596513.,.,
297
+ .,.,11875410773078.,.,
279
298
 
280
- module_eval <<-'.,.,1180281459631.,.,', 'atree.dr', 41
299
+ module_eval <<-'.,.,118754107728685.,.,', 'atree.dr', 41
281
300
  def _act_2 val
282
301
  _ID, _, _fact_list, _ = *val
283
302
  "[:#{_ID.value}, #{_fact_list.join(',')}]"
284
303
 
285
304
  end
286
305
 
287
- .,.,1180281459631.,.,
306
+ .,.,118754107728685.,.,
288
307
 
289
- module_eval <<-'.,.,11802814596304.,.,', 'atree.dr', 42
308
+ module_eval <<-'.,.,118754107760030.,.,', 'atree.dr', 42
290
309
  def _act_3 val
291
310
  _ID = *val
292
311
  "val[#{g_parser.name_to_rhs_index(_ID.value)}]"
293
312
 
294
313
  end
295
314
 
296
- .,.,11802814596304.,.,
315
+ .,.,118754107760030.,.,
297
316
 
298
- module_eval <<-'.,.,11802814593265.,.,', 'atree.dr', 45
317
+ module_eval <<-'.,.,118754107732642.,.,', 'atree.dr', 45
299
318
  def _act_4 val
300
319
  _fact = *val
301
320
  [ _fact ]
302
321
 
303
322
  end
304
323
 
305
- .,.,11802814593265.,.,
324
+ .,.,118754107732642.,.,
306
325
 
307
- module_eval <<-'.,.,11802814599160.,.,', 'atree.dr', 46
326
+ module_eval <<-'.,.,118754107753843.,.,', 'atree.dr', 46
308
327
  def _act_5 val
309
328
  _fact_list, _, _fact = *val
310
329
  _fact_list.push _fact
311
330
 
312
331
  end
313
332
 
314
- .,.,11802814599160.,.,
333
+ .,.,118754107753843.,.,
315
334
 
316
- module_eval <<-'.,.,11802814594299.,.,', 'atree.dr', 49
335
+ module_eval <<-'.,.,118754107752237.,.,', 'atree.dr', 49
317
336
  def _act_6 val
318
337
  _ID = *val
319
338
  "val[#{g_parser.name_to_rhs_index(_ID.value)}]"
320
339
 
321
340
  end
322
341
 
323
- .,.,11802814594299.,.,
342
+ .,.,118754107752237.,.,
324
343
 
325
- module_eval <<-'.,.,118028145927897.,.,', 'atree.dr', 50
344
+ module_eval <<-'.,.,118754107722958.,.,', 'atree.dr', 50
326
345
  def _act_7 val
327
346
  _STR = *val
328
347
  "'#{_STR.value}'"
329
348
 
330
349
  end
331
350
 
332
- .,.,118028145927897.,.,
351
+ .,.,118754107722958.,.,
333
352
 
334
353
  end
335
354
 
data/lib/depager/cst.dr CHANGED
@@ -95,9 +95,9 @@
95
95
 
96
96
  %LEX{
97
97
  /\s+/, /#.*/ { }
98
- /%\}\s*\Z/ { @line = $'; yield nil,nil }
98
+ /%\}\s*\Z/ { yield nil,nil }
99
99
  'Node' { yield _Token(:NODE, $&) }
100
- /\{/ { ln = lineno; yield _Token(:ACTION, parse_action, ln); //=~'' }
100
+ '{' ! { ln = lineno; yield _Token(:ACTION, parse_action, ln) }
101
101
  %}
102
102
 
103
103
  #begin-rule
@@ -117,10 +117,12 @@
117
117
  .sub!('$$!!@ VISITOR @!!$$', _opt_visitor)
118
118
  }
119
119
  ;
120
- opt_node: { '' }
120
+ opt_node:
121
+ { '' }
121
122
  | NODE ACTION { _ACTION.value }
122
123
  ;
123
- opt_visitor: { warn "VIS";'' }
124
+ opt_visitor:
125
+ { '' }
124
126
  | VISITOR ACTION { _ACTION.value }
125
127
  ;
126
128
  #end-rule
data/lib/depager/cst.rb CHANGED
@@ -131,7 +131,7 @@ end
131
131
  module D4CSTBuilderExtension_prerulelist #:nodoc:all
132
132
  end
133
133
 
134
- class CSTBuilderExtension_prerulelist < Basis #:nodoc:all
134
+ class CSTBuilderExtension_prerulelist < Depager::LALR::Basis #:nodoc:all
135
135
  include Depager::ExtensionUtils
136
136
 
137
137
  include ActionParser
@@ -254,24 +254,34 @@ class CSTBuilderExtension_prerulelist < Basis #:nodoc:all
254
254
 
255
255
  def lex
256
256
  begin
257
- until @line.empty? do
257
+ until @line.empty?
258
258
  case @line
259
- when /\A\s+/, /\A#.*/
260
-
261
- when /\A%\}\s*\Z/
262
- @line = $'; yield nil,nil
263
- when /\ANode/
264
- yield _Token(:NODE, $&)
265
- when /\A\{/
266
- ln = lineno; yield _Token(:ACTION, parse_action, ln); //=~''
259
+
260
+ when /\A\s+/, /\A#.*/
261
+ @oldline = @line; @line = $'
262
+
267
263
 
264
+
265
+ when /\A%\}\s*\Z/
266
+ @oldline = @line; @line = $'
267
+ yield nil,nil
268
+
269
+
270
+ when /\ANode/
271
+ @oldline = @line; @line = $'
272
+ yield _Token(:NODE, $&)
273
+
274
+
275
+ when /\A\{/
276
+ #
277
+ ln = lineno; yield _Token(:ACTION, parse_action, ln)
278
+
279
+
268
280
  else
269
281
  raise RuntimeError, "must not happen #{@line}"
270
282
  end
271
- @oldline = @line
272
- @line = $'
273
283
  end
274
- end while @line = getline
284
+ end while @line0 = @line = getline
275
285
  yield nil, nil
276
286
  end
277
287
 
@@ -279,7 +289,7 @@ end
279
289
 
280
290
  ### Outer Code
281
291
 
282
- class D4CSTBuilderExtension_prerulelist::NVAction < Depager::Action #:nodoc:all
292
+ class D4CSTBuilderExtension_prerulelist::NVAction < Depager::LALR::Action #:nodoc:all
283
293
  include Depager::DecoratorUtils
284
294
  include ActionParser
285
295
  include ActionParser
@@ -301,7 +311,7 @@ include ActionParser
301
311
  end
302
312
 
303
313
 
304
- module_eval <<-'.,.,118028145930197.,.,', 'cst.dr', 104
314
+ module_eval <<-'.,.,118754107719806.,.,', 'cst.dr', 104
305
315
  def _act_0 val
306
316
  _opt_node, _opt_visitor = *val
307
317
 
@@ -319,41 +329,41 @@ module_eval <<-'.,.,118028145930197.,.,', 'cst.dr', 104
319
329
 
320
330
  end
321
331
 
322
- .,.,118028145930197.,.,
332
+ .,.,118754107719806.,.,
323
333
 
324
- module_eval <<-'.,.,11802814596438.,.,', 'cst.dr', 118
334
+ module_eval <<-'.,.,118754107715644.,.,', 'cst.dr', 119
325
335
  def _act_1 val
326
336
  ''
327
337
 
328
338
  end
329
339
 
330
- .,.,11802814596438.,.,
340
+ .,.,118754107715644.,.,
331
341
 
332
- module_eval <<-'.,.,118028145919370.,.,', 'cst.dr', 119
342
+ module_eval <<-'.,.,118754107752569.,.,', 'cst.dr', 120
333
343
  def _act_2 val
334
344
  _NODE, _ACTION = *val
335
345
  _ACTION.value
336
346
 
337
347
  end
338
348
 
339
- .,.,118028145919370.,.,
349
+ .,.,118754107752569.,.,
340
350
 
341
- module_eval <<-'.,.,118028145927531.,.,', 'cst.dr', 121
351
+ module_eval <<-'.,.,118754107761602.,.,', 'cst.dr', 123
342
352
  def _act_3 val
343
- warn "VIS";''
353
+ ''
344
354
 
345
355
  end
346
356
 
347
- .,.,118028145927531.,.,
357
+ .,.,118754107761602.,.,
348
358
 
349
- module_eval <<-'.,.,118028145925004.,.,', 'cst.dr', 122
359
+ module_eval <<-'.,.,118754107741735.,.,', 'cst.dr', 124
350
360
  def _act_4 val
351
361
  _VISITOR, _ACTION = *val
352
362
  _ACTION.value
353
363
 
354
364
  end
355
365
 
356
- .,.,118028145925004.,.,
366
+ .,.,118754107741735.,.,
357
367
 
358
368
  end
359
369
 
@@ -364,7 +374,7 @@ end
364
374
  module D4CSTBuilderExtension_postlhs #:nodoc:all
365
375
  end
366
376
 
367
- class CSTBuilderExtension_postlhs < Basis #:nodoc:all
377
+ class CSTBuilderExtension_postlhs < Depager::LALR::Basis #:nodoc:all
368
378
  include Depager::ExtensionUtils
369
379
 
370
380
  include ActionParser
@@ -505,24 +515,34 @@ class CSTBuilderExtension_postlhs < Basis #:nodoc:all
505
515
 
506
516
  def lex
507
517
  begin
508
- until @line.empty? do
518
+ until @line.empty?
509
519
  case @line
510
- when /\A\A\s+/
511
-
512
- when /\A""/, /\A''/, /\A[0-9]+/, /\A\{\s*\}/, /\A\[\s*\]/, /\Anil/
513
- yield _Token(:LIT, $&)
514
- when /\A\A[a-z][a-z_]*/
515
- yield _Token(:ID, $&)
516
- when /\A\A(.)/
517
- yield _Token($&, $&)
520
+
521
+ when /\A\A\s+/
522
+ @oldline = @line; @line = $'
523
+
518
524
 
525
+
526
+ when /\A""/, /\A''/, /\A[0-9]+/, /\A\{\s*\}/, /\A\[\s*\]/, /\Anil/
527
+ @oldline = @line; @line = $'
528
+ yield _Token(:LIT, $&)
529
+
530
+
531
+ when /\A\A[a-z][a-z_]*/
532
+ @oldline = @line; @line = $'
533
+ yield _Token(:ID, $&)
534
+
535
+
536
+ when /\A\A(.)/
537
+ @oldline = @line; @line = $'
538
+ yield _Token($&, $&)
539
+
540
+
519
541
  else
520
542
  raise RuntimeError, "must not happen #{@line}"
521
543
  end
522
- @oldline = @line
523
- @line = $'
524
544
  end
525
- end while @line = getline
545
+ end while @line0 = @line = getline
526
546
  yield nil, nil
527
547
  end
528
548
  def do_default
@@ -539,7 +559,7 @@ end
539
559
 
540
560
  ### Outer Code
541
561
 
542
- class D4CSTBuilderExtension_postlhs::NVAction < Depager::Action #:nodoc:all
562
+ class D4CSTBuilderExtension_postlhs::NVAction < Depager::LALR::Action #:nodoc:all
543
563
  include Depager::DecoratorUtils
544
564
  include ActionParser
545
565
 
@@ -560,7 +580,7 @@ class D4CSTBuilderExtension_postlhs::NVAction < Depager::Action #:nodoc:all
560
580
  end
561
581
 
562
582
 
563
- module_eval <<-'.,.,118028145927473.,.,', 'cst.dr', 153
583
+ module_eval <<-'.,.,118754107847682.,.,', 'cst.dr', 155
564
584
  def _act_0 val
565
585
  _, _pair, _ = *val
566
586
 
@@ -582,43 +602,43 @@ module_eval <<-'.,.,118028145927473.,.,', 'cst.dr', 153
582
602
 
583
603
  end
584
604
 
585
- .,.,118028145927473.,.,
605
+ .,.,118754107847682.,.,
586
606
 
587
- module_eval <<-'.,.,118028145920598.,.,', 'cst.dr', 172
607
+ module_eval <<-'.,.,118754107817648.,.,', 'cst.dr', 174
588
608
  def _act_1 val
589
609
  _expr = *val
590
610
  [ _expr ]
591
611
 
592
612
  end
593
613
 
594
- .,.,118028145920598.,.,
614
+ .,.,118754107817648.,.,
595
615
 
596
- module_eval <<-'.,.,11802814597299.,.,', 'cst.dr', 173
616
+ module_eval <<-'.,.,118754107822421.,.,', 'cst.dr', 175
597
617
  def _act_2 val
598
618
  _pair, _, _expr = *val
599
619
  _pair << _expr
600
620
 
601
621
  end
602
622
 
603
- .,.,11802814597299.,.,
623
+ .,.,118754107822421.,.,
604
624
 
605
- module_eval <<-'.,.,118028145933452.,.,', 'cst.dr', 176
625
+ module_eval <<-'.,.,118754107863218.,.,', 'cst.dr', 178
606
626
  def _act_3 val
607
627
  _ID = *val
608
628
  [ _ID.value, nil]
609
629
 
610
630
  end
611
631
 
612
- .,.,118028145933452.,.,
632
+ .,.,118754107863218.,.,
613
633
 
614
- module_eval <<-'.,.,118028145946002.,.,', 'cst.dr', 177
634
+ module_eval <<-'.,.,118754107828193.,.,', 'cst.dr', 179
615
635
  def _act_4 val
616
636
  _ID, _, _LIT = *val
617
637
  [ _ID.value, _LIT.value ]
618
638
 
619
639
  end
620
640
 
621
- .,.,118028145946002.,.,
641
+ .,.,118754107828193.,.,
622
642
 
623
643
  end
624
644