depager 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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