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.
- data/ChangeLog +4 -0
- data/bin/depager +1 -0
- data/data/depager/misc/depager-mode.el +35 -24
- data/data/depager/pre-setup.rb +3 -0
- data/examples/Rakefile +36 -0
- data/examples/c89/c89.dr +496 -0
- data/examples/c89/c89.tab.rb +2197 -0
- data/examples/c89/test.c89 +10 -0
- data/{data/depager/sample → examples}/extension/paction.dr +0 -0
- data/{data/depager/sample → examples}/extension/pactiontest.dr +0 -0
- data/{data/depager/sample → examples}/pl0d/pl0ds.dr +0 -0
- data/examples/pl0d/pl0ds.tab.rb +1702 -0
- data/{data/depager/sample/pl0d/pl0test.pl0 → examples/pl0d/test.pl0ds} +0 -0
- data/{data/depager/sample → examples}/sample_calc/calc.action.dr +0 -0
- data/examples/sample_calc/calc.action.tab.rb +283 -0
- data/{data/depager/sample → examples}/sample_calc/calc.astdf.dr +0 -0
- data/examples/sample_calc/calc.astdf.tab.rb +476 -0
- data/{data/depager/sample → examples}/sample_calc/calc.astl.action.dr +0 -0
- data/examples/sample_calc/calc.astl.action.tab.rb +593 -0
- data/{data/depager/sample → examples}/sample_calc/calc.astl.dr +0 -0
- data/examples/sample_calc/calc.astl.tab.rb +501 -0
- data/{data/depager/sample → examples}/sample_calc/calc.atree.dr +0 -0
- data/examples/sample_calc/calc.atree.tab.rb +277 -0
- data/{data/depager/sample → examples}/sample_calc/calc.cst.dr +0 -0
- data/examples/sample_calc/calc.cst.tab.rb +478 -0
- data/{data/depager/sample → examples}/sample_calc/calc.dr +0 -0
- data/{data/depager/sample → examples}/sample_calc/calc.lex.dr +0 -0
- data/examples/sample_calc/calc.lex.tab.rb +192 -0
- data/{data/depager/sample → examples}/sample_calc/calc.nvaction.dr +0 -0
- data/examples/sample_calc/calc.nvaction.tab.rb +291 -0
- data/examples/sample_calc/calc.tab.rb +183 -0
- data/{data/depager/sample → examples}/sample_calc/calc_prec.nvaction.dr +0 -0
- data/examples/sample_calc/calc_prec.nvaction.tab.rb +257 -0
- data/examples/sample_calc/test.calc +1 -0
- data/{data/depager/sample/slex_test/slextest1.dr → examples/slex_test/divreg.slex.dr} +3 -11
- data/examples/slex_test/divreg.slex.tab.rb +227 -0
- data/{data/depager/sample/slex_test/slextest2.dr → examples/slex_test/ljoin.slex.dr} +10 -7
- data/examples/slex_test/ljoin.slex.tab.rb +277 -0
- data/examples/slex_test/test.divreg +1 -0
- data/examples/slex_test/test.ljoin +3 -0
- data/lib/depager.rb +194 -127
- data/lib/depager/Rakefile +8 -4
- data/lib/depager/ast_base.dr +3 -3
- data/lib/depager/ast_base.rb +197 -144
- data/lib/depager/atree.rb +55 -36
- data/lib/depager/cst.dr +6 -4
- data/lib/depager/cst.rb +69 -49
- data/lib/depager/grammar.rb +136 -0
- data/lib/depager/lex.dr +22 -8
- data/lib/depager/lex.rb +94 -53
- data/lib/depager/lr.rb +101 -167
- data/lib/depager/parse_action.rb +1 -1
- data/lib/depager/parser.rb +34 -7
- data/lib/depager/slex.dr +76 -36
- data/lib/depager/slex.rb +345 -151
- data/lib/depager/srp.rb +3 -2
- data/lib/depager/template/extension_lalr_slave.erb +1 -1
- data/lib/depager/template/single_lalr_parser.erb +1 -1
- data/lib/depager/utils.rb +2 -1
- data/lib/depager/version.rb +2 -2
- metadata +42 -28
- data/Manifest.txt +0 -52
- 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?
|
204
|
+
until @line.empty?
|
205
205
|
case @line
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
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 <<-'.,.,
|
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
|
-
.,.,
|
288
|
+
.,.,118754107734084.,.,
|
270
289
|
|
271
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
297
|
+
.,.,11875410773078.,.,
|
279
298
|
|
280
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
306
|
+
.,.,118754107728685.,.,
|
288
307
|
|
289
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
315
|
+
.,.,118754107760030.,.,
|
297
316
|
|
298
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
324
|
+
.,.,118754107732642.,.,
|
306
325
|
|
307
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
333
|
+
.,.,118754107753843.,.,
|
315
334
|
|
316
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
342
|
+
.,.,118754107752237.,.,
|
324
343
|
|
325
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
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/ {
|
98
|
+
/%\}\s*\Z/ { yield nil,nil }
|
99
99
|
'Node' { yield _Token(:NODE, $&) }
|
100
|
-
|
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:
|
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?
|
257
|
+
until @line.empty?
|
258
258
|
case @line
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
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 <<-'.,.,
|
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
|
-
.,.,
|
332
|
+
.,.,118754107719806.,.,
|
323
333
|
|
324
|
-
module_eval <<-'.,.,
|
334
|
+
module_eval <<-'.,.,118754107715644.,.,', 'cst.dr', 119
|
325
335
|
def _act_1 val
|
326
336
|
''
|
327
337
|
|
328
338
|
end
|
329
339
|
|
330
|
-
.,.,
|
340
|
+
.,.,118754107715644.,.,
|
331
341
|
|
332
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
349
|
+
.,.,118754107752569.,.,
|
340
350
|
|
341
|
-
module_eval <<-'.,.,
|
351
|
+
module_eval <<-'.,.,118754107761602.,.,', 'cst.dr', 123
|
342
352
|
def _act_3 val
|
343
|
-
|
353
|
+
''
|
344
354
|
|
345
355
|
end
|
346
356
|
|
347
|
-
.,.,
|
357
|
+
.,.,118754107761602.,.,
|
348
358
|
|
349
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
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?
|
518
|
+
until @line.empty?
|
509
519
|
case @line
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
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 <<-'.,.,
|
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
|
-
.,.,
|
605
|
+
.,.,118754107847682.,.,
|
586
606
|
|
587
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
614
|
+
.,.,118754107817648.,.,
|
595
615
|
|
596
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
623
|
+
.,.,118754107822421.,.,
|
604
624
|
|
605
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
632
|
+
.,.,118754107863218.,.,
|
613
633
|
|
614
|
-
module_eval <<-'.,.,
|
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
|
-
.,.,
|
641
|
+
.,.,118754107828193.,.,
|
622
642
|
|
623
643
|
end
|
624
644
|
|