kpeg 0.8.1 → 0.8.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.
- data/lib/kpeg.rb +3 -1
- data/lib/kpeg/code_generator.rb +6 -0
- data/lib/kpeg/format_parser.rb +1953 -1908
- data/lib/kpeg/grammar.rb +26 -0
- data/lib/kpeg/grammar_renderer.rb +4 -0
- data/lib/kpeg/version.rb +1 -1
- data/test/test_kpeg_code_generator.rb +50 -0
- data/test/test_kpeg_format.rb +16 -0
- metadata +4 -4
data/lib/kpeg.rb
CHANGED
data/lib/kpeg/code_generator.rb
CHANGED
@@ -296,6 +296,12 @@ module KPeg
|
|
296
296
|
code << indentify("if _tmp\n", indent)
|
297
297
|
code << indentify(" text = get_text(_text_start)\n", indent)
|
298
298
|
code << indentify("end\n", indent)
|
299
|
+
when Bounds
|
300
|
+
code << indentify("_bounds_start = self.pos\n", indent)
|
301
|
+
output_op code, op.op, indent
|
302
|
+
code << indentify("if _tmp\n", indent)
|
303
|
+
code << indentify(" bounds = [_bounds_start, self.pos]\n", indent)
|
304
|
+
code << indentify("end\n", indent)
|
299
305
|
else
|
300
306
|
raise "Unknown op - #{op.class}"
|
301
307
|
end
|
data/lib/kpeg/format_parser.rb
CHANGED
@@ -339,37 +339,37 @@ class KPeg::FormatParser
|
|
339
339
|
|
340
340
|
_save = self.pos
|
341
341
|
while true # sequence
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
342
|
+
_tmp = match_string("#")
|
343
|
+
unless _tmp
|
344
|
+
self.pos = _save
|
345
|
+
break
|
346
|
+
end
|
347
|
+
while true
|
348
348
|
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
349
|
+
_save2 = self.pos
|
350
|
+
while true # sequence
|
351
|
+
_save3 = self.pos
|
352
|
+
_tmp = apply(:_eof)
|
353
|
+
_tmp = _tmp ? nil : true
|
354
|
+
self.pos = _save3
|
355
|
+
unless _tmp
|
356
|
+
self.pos = _save2
|
357
|
+
break
|
358
|
+
end
|
359
|
+
_tmp = get_byte
|
360
|
+
unless _tmp
|
361
|
+
self.pos = _save2
|
362
|
+
end
|
363
|
+
break
|
364
|
+
end # end sequence
|
365
365
|
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
366
|
+
break unless _tmp
|
367
|
+
end
|
368
|
+
_tmp = true
|
369
|
+
unless _tmp
|
370
|
+
self.pos = _save
|
371
|
+
end
|
372
|
+
break
|
373
373
|
end # end sequence
|
374
374
|
|
375
375
|
set_failed_rule :_eof_comment unless _tmp
|
@@ -381,42 +381,42 @@ class KPeg::FormatParser
|
|
381
381
|
|
382
382
|
_save = self.pos
|
383
383
|
while true # sequence
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
384
|
+
_tmp = match_string("#")
|
385
|
+
unless _tmp
|
386
|
+
self.pos = _save
|
387
|
+
break
|
388
|
+
end
|
389
|
+
while true
|
390
390
|
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
391
|
+
_save2 = self.pos
|
392
|
+
while true # sequence
|
393
|
+
_save3 = self.pos
|
394
|
+
_tmp = apply(:_eol)
|
395
|
+
_tmp = _tmp ? nil : true
|
396
|
+
self.pos = _save3
|
397
|
+
unless _tmp
|
398
|
+
self.pos = _save2
|
399
|
+
break
|
400
|
+
end
|
401
|
+
_tmp = get_byte
|
402
|
+
unless _tmp
|
403
|
+
self.pos = _save2
|
404
|
+
end
|
405
|
+
break
|
406
|
+
end # end sequence
|
407
407
|
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
408
|
+
break unless _tmp
|
409
|
+
end
|
410
|
+
_tmp = true
|
411
|
+
unless _tmp
|
412
|
+
self.pos = _save
|
413
|
+
break
|
414
|
+
end
|
415
|
+
_tmp = apply(:_eol)
|
416
|
+
unless _tmp
|
417
|
+
self.pos = _save
|
418
|
+
end
|
413
419
|
break
|
414
|
-
end
|
415
|
-
_tmp = apply(:_eol)
|
416
|
-
unless _tmp
|
417
|
-
self.pos = _save
|
418
|
-
end
|
419
|
-
break
|
420
420
|
end # end sequence
|
421
421
|
|
422
422
|
set_failed_rule :_comment unless _tmp
|
@@ -428,16 +428,16 @@ class KPeg::FormatParser
|
|
428
428
|
|
429
429
|
_save = self.pos
|
430
430
|
while true # choice
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
431
|
+
_tmp = match_string(" ")
|
432
|
+
break if _tmp
|
433
|
+
self.pos = _save
|
434
|
+
_tmp = match_string("\t")
|
435
|
+
break if _tmp
|
436
|
+
self.pos = _save
|
437
|
+
_tmp = apply(:_eol)
|
438
|
+
break if _tmp
|
439
|
+
self.pos = _save
|
440
|
+
break
|
441
441
|
end # end choice
|
442
442
|
|
443
443
|
set_failed_rule :_space unless _tmp
|
@@ -448,18 +448,18 @@ class KPeg::FormatParser
|
|
448
448
|
def __hyphen_
|
449
449
|
while true
|
450
450
|
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
451
|
+
_save1 = self.pos
|
452
|
+
while true # choice
|
453
|
+
_tmp = apply(:_space)
|
454
|
+
break if _tmp
|
455
|
+
self.pos = _save1
|
456
|
+
_tmp = apply(:_comment)
|
457
|
+
break if _tmp
|
458
|
+
self.pos = _save1
|
459
|
+
break
|
460
|
+
end # end choice
|
461
461
|
|
462
|
-
|
462
|
+
break unless _tmp
|
463
463
|
end
|
464
464
|
_tmp = true
|
465
465
|
set_failed_rule :__hyphen_ unless _tmp
|
@@ -478,32 +478,32 @@ class KPeg::FormatParser
|
|
478
478
|
|
479
479
|
_save = self.pos
|
480
480
|
while true # sequence
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
481
|
+
_text_start = self.pos
|
482
|
+
|
483
|
+
_save1 = self.pos
|
484
|
+
while true # choice
|
485
|
+
_tmp = match_string("-")
|
486
|
+
break if _tmp
|
487
|
+
self.pos = _save1
|
488
|
+
_tmp = scan(/\A(?-mix:[a-zA-Z][\-_a-zA-Z0-9]*)/)
|
489
|
+
break if _tmp
|
490
|
+
self.pos = _save1
|
491
|
+
break
|
492
|
+
end # end choice
|
493
|
+
|
494
|
+
if _tmp
|
495
|
+
text = get_text(_text_start)
|
496
|
+
end
|
497
|
+
unless _tmp
|
498
|
+
self.pos = _save
|
499
|
+
break
|
500
|
+
end
|
501
|
+
@result = begin; text ; end
|
502
|
+
_tmp = true
|
503
|
+
unless _tmp
|
504
|
+
self.pos = _save
|
505
|
+
end
|
499
506
|
break
|
500
|
-
end
|
501
|
-
@result = begin; text ; end
|
502
|
-
_tmp = true
|
503
|
-
unless _tmp
|
504
|
-
self.pos = _save
|
505
|
-
end
|
506
|
-
break
|
507
507
|
end # end sequence
|
508
508
|
|
509
509
|
set_failed_rule :_var unless _tmp
|
@@ -515,21 +515,21 @@ class KPeg::FormatParser
|
|
515
515
|
|
516
516
|
_save = self.pos
|
517
517
|
while true # sequence
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
518
|
+
_text_start = self.pos
|
519
|
+
_tmp = scan(/\A(?-mix:[a-zA-Z_][a-zA-Z0-9_]*)/)
|
520
|
+
if _tmp
|
521
|
+
text = get_text(_text_start)
|
522
|
+
end
|
523
|
+
unless _tmp
|
524
|
+
self.pos = _save
|
525
|
+
break
|
526
|
+
end
|
527
|
+
@result = begin; text ; end
|
528
|
+
_tmp = true
|
529
|
+
unless _tmp
|
530
|
+
self.pos = _save
|
531
|
+
end
|
525
532
|
break
|
526
|
-
end
|
527
|
-
@result = begin; text ; end
|
528
|
-
_tmp = true
|
529
|
-
unless _tmp
|
530
|
-
self.pos = _save
|
531
|
-
end
|
532
|
-
break
|
533
533
|
end # end sequence
|
534
534
|
|
535
535
|
set_failed_rule :_method unless _tmp
|
@@ -542,96 +542,96 @@ class KPeg::FormatParser
|
|
542
542
|
_save = self.pos
|
543
543
|
while true # choice
|
544
544
|
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
545
|
+
_save1 = self.pos
|
546
|
+
while true # sequence
|
547
|
+
_tmp = match_string("\\\"")
|
548
|
+
unless _tmp
|
549
|
+
self.pos = _save1
|
550
|
+
break
|
551
|
+
end
|
552
|
+
@result = begin; '"' ; end
|
553
|
+
_tmp = true
|
554
|
+
unless _tmp
|
555
|
+
self.pos = _save1
|
556
|
+
end
|
557
|
+
break
|
558
|
+
end # end sequence
|
559
559
|
|
560
|
-
|
561
|
-
|
560
|
+
break if _tmp
|
561
|
+
self.pos = _save
|
562
562
|
|
563
|
-
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
563
|
+
_save2 = self.pos
|
564
|
+
while true # sequence
|
565
|
+
_tmp = match_string("\\n")
|
566
|
+
unless _tmp
|
567
|
+
self.pos = _save2
|
568
|
+
break
|
569
|
+
end
|
570
|
+
@result = begin; "\n" ; end
|
571
|
+
_tmp = true
|
572
|
+
unless _tmp
|
573
|
+
self.pos = _save2
|
574
|
+
end
|
575
|
+
break
|
576
|
+
end # end sequence
|
577
577
|
|
578
|
-
|
579
|
-
|
578
|
+
break if _tmp
|
579
|
+
self.pos = _save
|
580
580
|
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
581
|
+
_save3 = self.pos
|
582
|
+
while true # sequence
|
583
|
+
_tmp = match_string("\\t")
|
584
|
+
unless _tmp
|
585
|
+
self.pos = _save3
|
586
|
+
break
|
587
|
+
end
|
588
|
+
@result = begin; "\t" ; end
|
589
|
+
_tmp = true
|
590
|
+
unless _tmp
|
591
|
+
self.pos = _save3
|
592
|
+
end
|
593
|
+
break
|
594
|
+
end # end sequence
|
595
595
|
|
596
|
-
|
597
|
-
|
596
|
+
break if _tmp
|
597
|
+
self.pos = _save
|
598
598
|
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
599
|
+
_save4 = self.pos
|
600
|
+
while true # sequence
|
601
|
+
_tmp = match_string("\\b")
|
602
|
+
unless _tmp
|
603
|
+
self.pos = _save4
|
604
|
+
break
|
605
|
+
end
|
606
|
+
@result = begin; "\b" ; end
|
607
|
+
_tmp = true
|
608
|
+
unless _tmp
|
609
|
+
self.pos = _save4
|
610
|
+
end
|
611
|
+
break
|
612
|
+
end # end sequence
|
613
613
|
|
614
|
-
|
615
|
-
|
614
|
+
break if _tmp
|
615
|
+
self.pos = _save
|
616
616
|
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
617
|
+
_save5 = self.pos
|
618
|
+
while true # sequence
|
619
|
+
_tmp = match_string("\\\\")
|
620
|
+
unless _tmp
|
621
|
+
self.pos = _save5
|
622
|
+
break
|
623
|
+
end
|
624
|
+
@result = begin; "\\" ; end
|
625
|
+
_tmp = true
|
626
|
+
unless _tmp
|
627
|
+
self.pos = _save5
|
628
|
+
end
|
629
|
+
break
|
630
|
+
end # end sequence
|
631
631
|
|
632
|
-
|
633
|
-
|
634
|
-
|
632
|
+
break if _tmp
|
633
|
+
self.pos = _save
|
634
|
+
break
|
635
635
|
end # end choice
|
636
636
|
|
637
637
|
set_failed_rule :_dbl_escapes unless _tmp
|
@@ -643,21 +643,21 @@ class KPeg::FormatParser
|
|
643
643
|
|
644
644
|
_save = self.pos
|
645
645
|
while true # sequence
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
646
|
+
_text_start = self.pos
|
647
|
+
_tmp = scan(/\A(?-mix:[^\\"]+)/)
|
648
|
+
if _tmp
|
649
|
+
text = get_text(_text_start)
|
650
|
+
end
|
651
|
+
unless _tmp
|
652
|
+
self.pos = _save
|
653
|
+
break
|
654
|
+
end
|
655
|
+
@result = begin; text ; end
|
656
|
+
_tmp = true
|
657
|
+
unless _tmp
|
658
|
+
self.pos = _save
|
659
|
+
end
|
653
660
|
break
|
654
|
-
end
|
655
|
-
@result = begin; text ; end
|
656
|
-
_tmp = true
|
657
|
-
unless _tmp
|
658
|
-
self.pos = _save
|
659
|
-
end
|
660
|
-
break
|
661
661
|
end # end sequence
|
662
662
|
|
663
663
|
set_failed_rule :_dbl_seq unless _tmp
|
@@ -669,58 +669,58 @@ class KPeg::FormatParser
|
|
669
669
|
|
670
670
|
_save = self.pos
|
671
671
|
while true # sequence
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
_save2 = self.pos
|
676
|
-
while true # choice
|
677
|
-
_tmp = apply(:_dbl_escapes)
|
678
|
-
s = @result
|
679
|
-
break if _tmp
|
680
|
-
self.pos = _save2
|
681
|
-
_tmp = apply(:_dbl_seq)
|
682
|
-
s = @result
|
683
|
-
break if _tmp
|
684
|
-
self.pos = _save2
|
685
|
-
break
|
686
|
-
end # end choice
|
672
|
+
_save1 = self.pos
|
673
|
+
_ary = []
|
687
674
|
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
675
|
+
_save2 = self.pos
|
676
|
+
while true # choice
|
677
|
+
_tmp = apply(:_dbl_escapes)
|
678
|
+
s = @result
|
679
|
+
break if _tmp
|
680
|
+
self.pos = _save2
|
681
|
+
_tmp = apply(:_dbl_seq)
|
682
|
+
s = @result
|
683
|
+
break if _tmp
|
684
|
+
self.pos = _save2
|
685
|
+
break
|
686
|
+
end # end choice
|
687
|
+
|
688
|
+
if _tmp
|
689
|
+
_ary << @result
|
690
|
+
while true
|
691
|
+
|
692
|
+
_save3 = self.pos
|
693
|
+
while true # choice
|
694
|
+
_tmp = apply(:_dbl_escapes)
|
695
|
+
s = @result
|
696
|
+
break if _tmp
|
697
|
+
self.pos = _save3
|
698
|
+
_tmp = apply(:_dbl_seq)
|
699
|
+
s = @result
|
700
|
+
break if _tmp
|
701
|
+
self.pos = _save3
|
702
|
+
break
|
703
|
+
end # end choice
|
704
|
+
|
705
|
+
_ary << @result if _tmp
|
706
|
+
break unless _tmp
|
707
|
+
end
|
708
|
+
_tmp = true
|
709
|
+
@result = _ary
|
710
|
+
else
|
711
|
+
self.pos = _save1
|
707
712
|
end
|
713
|
+
ary = @result
|
714
|
+
unless _tmp
|
715
|
+
self.pos = _save
|
716
|
+
break
|
717
|
+
end
|
718
|
+
@result = begin; ary ; end
|
708
719
|
_tmp = true
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
end
|
713
|
-
ary = @result
|
714
|
-
unless _tmp
|
715
|
-
self.pos = _save
|
720
|
+
unless _tmp
|
721
|
+
self.pos = _save
|
722
|
+
end
|
716
723
|
break
|
717
|
-
end
|
718
|
-
@result = begin; ary ; end
|
719
|
-
_tmp = true
|
720
|
-
unless _tmp
|
721
|
-
self.pos = _save
|
722
|
-
end
|
723
|
-
break
|
724
724
|
end # end sequence
|
725
725
|
|
726
726
|
set_failed_rule :_dbl_not_quote unless _tmp
|
@@ -732,28 +732,28 @@ class KPeg::FormatParser
|
|
732
732
|
|
733
733
|
_save = self.pos
|
734
734
|
while true # sequence
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
735
|
+
_tmp = match_string("\"")
|
736
|
+
unless _tmp
|
737
|
+
self.pos = _save
|
738
|
+
break
|
739
|
+
end
|
740
|
+
_tmp = apply(:_dbl_not_quote)
|
741
|
+
s = @result
|
742
|
+
unless _tmp
|
743
|
+
self.pos = _save
|
744
|
+
break
|
745
|
+
end
|
746
|
+
_tmp = match_string("\"")
|
747
|
+
unless _tmp
|
748
|
+
self.pos = _save
|
749
|
+
break
|
750
|
+
end
|
751
|
+
@result = begin; @g.str(s.join) ; end
|
752
|
+
_tmp = true
|
753
|
+
unless _tmp
|
754
|
+
self.pos = _save
|
755
|
+
end
|
749
756
|
break
|
750
|
-
end
|
751
|
-
@result = begin; @g.str(s.join) ; end
|
752
|
-
_tmp = true
|
753
|
-
unless _tmp
|
754
|
-
self.pos = _save
|
755
|
-
end
|
756
|
-
break
|
757
757
|
end # end sequence
|
758
758
|
|
759
759
|
set_failed_rule :_dbl_string unless _tmp
|
@@ -765,17 +765,17 @@ class KPeg::FormatParser
|
|
765
765
|
|
766
766
|
_save = self.pos
|
767
767
|
while true # sequence
|
768
|
-
|
769
|
-
|
770
|
-
|
768
|
+
_tmp = match_string("\\'")
|
769
|
+
unless _tmp
|
770
|
+
self.pos = _save
|
771
|
+
break
|
772
|
+
end
|
773
|
+
@result = begin; "'" ; end
|
774
|
+
_tmp = true
|
775
|
+
unless _tmp
|
776
|
+
self.pos = _save
|
777
|
+
end
|
771
778
|
break
|
772
|
-
end
|
773
|
-
@result = begin; "'" ; end
|
774
|
-
_tmp = true
|
775
|
-
unless _tmp
|
776
|
-
self.pos = _save
|
777
|
-
end
|
778
|
-
break
|
779
779
|
end # end sequence
|
780
780
|
|
781
781
|
set_failed_rule :_sgl_escape_quote unless _tmp
|
@@ -787,21 +787,21 @@ class KPeg::FormatParser
|
|
787
787
|
|
788
788
|
_save = self.pos
|
789
789
|
while true # sequence
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
794
|
-
|
795
|
-
|
796
|
-
|
790
|
+
_text_start = self.pos
|
791
|
+
_tmp = scan(/\A(?-mix:[^'])/)
|
792
|
+
if _tmp
|
793
|
+
text = get_text(_text_start)
|
794
|
+
end
|
795
|
+
unless _tmp
|
796
|
+
self.pos = _save
|
797
|
+
break
|
798
|
+
end
|
799
|
+
@result = begin; text ; end
|
800
|
+
_tmp = true
|
801
|
+
unless _tmp
|
802
|
+
self.pos = _save
|
803
|
+
end
|
797
804
|
break
|
798
|
-
end
|
799
|
-
@result = begin; text ; end
|
800
|
-
_tmp = true
|
801
|
-
unless _tmp
|
802
|
-
self.pos = _save
|
803
|
-
end
|
804
|
-
break
|
805
805
|
end # end sequence
|
806
806
|
|
807
807
|
set_failed_rule :_sgl_seq unless _tmp
|
@@ -813,54 +813,54 @@ class KPeg::FormatParser
|
|
813
813
|
|
814
814
|
_save = self.pos
|
815
815
|
while true # sequence
|
816
|
-
|
817
|
-
|
816
|
+
_save1 = self.pos
|
817
|
+
_ary = []
|
818
818
|
|
819
|
-
|
820
|
-
|
821
|
-
|
822
|
-
|
823
|
-
|
824
|
-
|
825
|
-
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
833
|
-
|
834
|
-
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
842
|
-
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
819
|
+
_save2 = self.pos
|
820
|
+
while true # choice
|
821
|
+
_tmp = apply(:_sgl_escape_quote)
|
822
|
+
break if _tmp
|
823
|
+
self.pos = _save2
|
824
|
+
_tmp = apply(:_sgl_seq)
|
825
|
+
break if _tmp
|
826
|
+
self.pos = _save2
|
827
|
+
break
|
828
|
+
end # end choice
|
829
|
+
|
830
|
+
if _tmp
|
831
|
+
_ary << @result
|
832
|
+
while true
|
833
|
+
|
834
|
+
_save3 = self.pos
|
835
|
+
while true # choice
|
836
|
+
_tmp = apply(:_sgl_escape_quote)
|
837
|
+
break if _tmp
|
838
|
+
self.pos = _save3
|
839
|
+
_tmp = apply(:_sgl_seq)
|
840
|
+
break if _tmp
|
841
|
+
self.pos = _save3
|
842
|
+
break
|
843
|
+
end # end choice
|
844
|
+
|
845
|
+
_ary << @result if _tmp
|
846
|
+
break unless _tmp
|
847
|
+
end
|
848
|
+
_tmp = true
|
849
|
+
@result = _ary
|
850
|
+
else
|
851
|
+
self.pos = _save1
|
852
|
+
end
|
853
|
+
segs = @result
|
854
|
+
unless _tmp
|
855
|
+
self.pos = _save
|
856
|
+
break
|
847
857
|
end
|
858
|
+
@result = begin; segs.join ; end
|
848
859
|
_tmp = true
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
end
|
853
|
-
segs = @result
|
854
|
-
unless _tmp
|
855
|
-
self.pos = _save
|
860
|
+
unless _tmp
|
861
|
+
self.pos = _save
|
862
|
+
end
|
856
863
|
break
|
857
|
-
end
|
858
|
-
@result = begin; segs.join ; end
|
859
|
-
_tmp = true
|
860
|
-
unless _tmp
|
861
|
-
self.pos = _save
|
862
|
-
end
|
863
|
-
break
|
864
864
|
end # end sequence
|
865
865
|
|
866
866
|
set_failed_rule :_sgl_not_quote unless _tmp
|
@@ -872,28 +872,28 @@ class KPeg::FormatParser
|
|
872
872
|
|
873
873
|
_save = self.pos
|
874
874
|
while true # sequence
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
875
|
+
_tmp = match_string("'")
|
876
|
+
unless _tmp
|
877
|
+
self.pos = _save
|
878
|
+
break
|
879
|
+
end
|
880
|
+
_tmp = apply(:_sgl_not_quote)
|
881
|
+
s = @result
|
882
|
+
unless _tmp
|
883
|
+
self.pos = _save
|
884
|
+
break
|
885
|
+
end
|
886
|
+
_tmp = match_string("'")
|
887
|
+
unless _tmp
|
888
|
+
self.pos = _save
|
889
|
+
break
|
890
|
+
end
|
891
|
+
@result = begin; @g.str(s) ; end
|
892
|
+
_tmp = true
|
893
|
+
unless _tmp
|
894
|
+
self.pos = _save
|
895
|
+
end
|
889
896
|
break
|
890
|
-
end
|
891
|
-
@result = begin; @g.str(s) ; end
|
892
|
-
_tmp = true
|
893
|
-
unless _tmp
|
894
|
-
self.pos = _save
|
895
|
-
end
|
896
|
-
break
|
897
897
|
end # end sequence
|
898
898
|
|
899
899
|
set_failed_rule :_sgl_string unless _tmp
|
@@ -905,13 +905,13 @@ class KPeg::FormatParser
|
|
905
905
|
|
906
906
|
_save = self.pos
|
907
907
|
while true # choice
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
|
912
|
-
|
913
|
-
|
914
|
-
|
908
|
+
_tmp = apply(:_dbl_string)
|
909
|
+
break if _tmp
|
910
|
+
self.pos = _save
|
911
|
+
_tmp = apply(:_sgl_string)
|
912
|
+
break if _tmp
|
913
|
+
self.pos = _save
|
914
|
+
break
|
915
915
|
end # end choice
|
916
916
|
|
917
917
|
set_failed_rule :_string unless _tmp
|
@@ -923,53 +923,53 @@ class KPeg::FormatParser
|
|
923
923
|
|
924
924
|
_save = self.pos
|
925
925
|
while true # sequence
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
_save2 = self.pos
|
930
|
-
while true # choice
|
931
|
-
_tmp = match_string("\\/")
|
932
|
-
break if _tmp
|
933
|
-
self.pos = _save2
|
934
|
-
_tmp = scan(/\A(?-mix:[^\/])/)
|
935
|
-
break if _tmp
|
936
|
-
self.pos = _save2
|
937
|
-
break
|
938
|
-
end # end choice
|
926
|
+
_text_start = self.pos
|
927
|
+
_save1 = self.pos
|
939
928
|
|
940
|
-
|
941
|
-
while true
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
929
|
+
_save2 = self.pos
|
930
|
+
while true # choice
|
931
|
+
_tmp = match_string("\\/")
|
932
|
+
break if _tmp
|
933
|
+
self.pos = _save2
|
934
|
+
_tmp = scan(/\A(?-mix:[^\/])/)
|
935
|
+
break if _tmp
|
936
|
+
self.pos = _save2
|
937
|
+
break
|
938
|
+
end # end choice
|
939
|
+
|
940
|
+
if _tmp
|
941
|
+
while true
|
942
|
+
|
943
|
+
_save3 = self.pos
|
944
|
+
while true # choice
|
945
|
+
_tmp = match_string("\\/")
|
946
|
+
break if _tmp
|
947
|
+
self.pos = _save3
|
948
|
+
_tmp = scan(/\A(?-mix:[^\/])/)
|
949
|
+
break if _tmp
|
950
|
+
self.pos = _save3
|
951
|
+
break
|
952
|
+
end # end choice
|
953
|
+
|
954
|
+
break unless _tmp
|
955
|
+
end
|
956
|
+
_tmp = true
|
957
|
+
else
|
958
|
+
self.pos = _save1
|
959
|
+
end
|
960
|
+
if _tmp
|
961
|
+
text = get_text(_text_start)
|
962
|
+
end
|
963
|
+
unless _tmp
|
964
|
+
self.pos = _save
|
965
|
+
break
|
955
966
|
end
|
967
|
+
@result = begin; text ; end
|
956
968
|
_tmp = true
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
if _tmp
|
961
|
-
text = get_text(_text_start)
|
962
|
-
end
|
963
|
-
unless _tmp
|
964
|
-
self.pos = _save
|
969
|
+
unless _tmp
|
970
|
+
self.pos = _save
|
971
|
+
end
|
965
972
|
break
|
966
|
-
end
|
967
|
-
@result = begin; text ; end
|
968
|
-
_tmp = true
|
969
|
-
unless _tmp
|
970
|
-
self.pos = _save
|
971
|
-
end
|
972
|
-
break
|
973
973
|
end # end sequence
|
974
974
|
|
975
975
|
set_failed_rule :_not_slash unless _tmp
|
@@ -981,32 +981,32 @@ class KPeg::FormatParser
|
|
981
981
|
|
982
982
|
_save = self.pos
|
983
983
|
while true # sequence
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
984
|
+
_text_start = self.pos
|
985
|
+
while true
|
986
|
+
_save2 = self.pos
|
987
|
+
_tmp = get_byte
|
988
|
+
if _tmp
|
989
|
+
unless _tmp >= 97 and _tmp <= 122
|
990
|
+
self.pos = _save2
|
991
|
+
_tmp = nil
|
992
|
+
end
|
993
|
+
end
|
994
|
+
break unless _tmp
|
995
|
+
end
|
996
|
+
_tmp = true
|
997
|
+
if _tmp
|
998
|
+
text = get_text(_text_start)
|
999
|
+
end
|
1000
|
+
unless _tmp
|
1001
|
+
self.pos = _save
|
1002
|
+
break
|
1003
|
+
end
|
1004
|
+
@result = begin; text ; end
|
1005
|
+
_tmp = true
|
1006
|
+
unless _tmp
|
1007
|
+
self.pos = _save
|
992
1008
|
end
|
993
|
-
end
|
994
|
-
break unless _tmp
|
995
|
-
end
|
996
|
-
_tmp = true
|
997
|
-
if _tmp
|
998
|
-
text = get_text(_text_start)
|
999
|
-
end
|
1000
|
-
unless _tmp
|
1001
|
-
self.pos = _save
|
1002
1009
|
break
|
1003
|
-
end
|
1004
|
-
@result = begin; text ; end
|
1005
|
-
_tmp = true
|
1006
|
-
unless _tmp
|
1007
|
-
self.pos = _save
|
1008
|
-
end
|
1009
|
-
break
|
1010
1010
|
end # end sequence
|
1011
1011
|
|
1012
1012
|
set_failed_rule :_regexp_opts unless _tmp
|
@@ -1018,34 +1018,34 @@ class KPeg::FormatParser
|
|
1018
1018
|
|
1019
1019
|
_save = self.pos
|
1020
1020
|
while true # sequence
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1021
|
+
_tmp = match_string("/")
|
1022
|
+
unless _tmp
|
1023
|
+
self.pos = _save
|
1024
|
+
break
|
1025
|
+
end
|
1026
|
+
_tmp = apply(:_not_slash)
|
1027
|
+
body = @result
|
1028
|
+
unless _tmp
|
1029
|
+
self.pos = _save
|
1030
|
+
break
|
1031
|
+
end
|
1032
|
+
_tmp = match_string("/")
|
1033
|
+
unless _tmp
|
1034
|
+
self.pos = _save
|
1035
|
+
break
|
1036
|
+
end
|
1037
|
+
_tmp = apply(:_regexp_opts)
|
1038
|
+
opts = @result
|
1039
|
+
unless _tmp
|
1040
|
+
self.pos = _save
|
1041
|
+
break
|
1042
|
+
end
|
1043
|
+
@result = begin; @g.reg body, opts ; end
|
1044
|
+
_tmp = true
|
1045
|
+
unless _tmp
|
1046
|
+
self.pos = _save
|
1047
|
+
end
|
1041
1048
|
break
|
1042
|
-
end
|
1043
|
-
@result = begin; @g.reg body, opts ; end
|
1044
|
-
_tmp = true
|
1045
|
-
unless _tmp
|
1046
|
-
self.pos = _save
|
1047
|
-
end
|
1048
|
-
break
|
1049
1049
|
end # end sequence
|
1050
1050
|
|
1051
1051
|
set_failed_rule :_regexp unless _tmp
|
@@ -1057,21 +1057,21 @@ class KPeg::FormatParser
|
|
1057
1057
|
|
1058
1058
|
_save = self.pos
|
1059
1059
|
while true # sequence
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1060
|
+
_text_start = self.pos
|
1061
|
+
_tmp = scan(/\A(?-mix:[a-zA-Z0-9])/)
|
1062
|
+
if _tmp
|
1063
|
+
text = get_text(_text_start)
|
1064
|
+
end
|
1065
|
+
unless _tmp
|
1066
|
+
self.pos = _save
|
1067
|
+
break
|
1068
|
+
end
|
1069
|
+
@result = begin; text ; end
|
1070
|
+
_tmp = true
|
1071
|
+
unless _tmp
|
1072
|
+
self.pos = _save
|
1073
|
+
end
|
1067
1074
|
break
|
1068
|
-
end
|
1069
|
-
@result = begin; text ; end
|
1070
|
-
_tmp = true
|
1071
|
-
unless _tmp
|
1072
|
-
self.pos = _save
|
1073
|
-
end
|
1074
|
-
break
|
1075
1075
|
end # end sequence
|
1076
1076
|
|
1077
1077
|
set_failed_rule :_char unless _tmp
|
@@ -1083,39 +1083,39 @@ class KPeg::FormatParser
|
|
1083
1083
|
|
1084
1084
|
_save = self.pos
|
1085
1085
|
while true # sequence
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1086
|
+
_tmp = match_string("[")
|
1087
|
+
unless _tmp
|
1088
|
+
self.pos = _save
|
1089
|
+
break
|
1090
|
+
end
|
1091
|
+
_tmp = apply(:_char)
|
1092
|
+
l = @result
|
1093
|
+
unless _tmp
|
1094
|
+
self.pos = _save
|
1095
|
+
break
|
1096
|
+
end
|
1097
|
+
_tmp = match_string("-")
|
1098
|
+
unless _tmp
|
1099
|
+
self.pos = _save
|
1100
|
+
break
|
1101
|
+
end
|
1102
|
+
_tmp = apply(:_char)
|
1103
|
+
r = @result
|
1104
|
+
unless _tmp
|
1105
|
+
self.pos = _save
|
1106
|
+
break
|
1107
|
+
end
|
1108
|
+
_tmp = match_string("]")
|
1109
|
+
unless _tmp
|
1110
|
+
self.pos = _save
|
1111
|
+
break
|
1112
|
+
end
|
1113
|
+
@result = begin; @g.range(l,r) ; end
|
1114
|
+
_tmp = true
|
1115
|
+
unless _tmp
|
1116
|
+
self.pos = _save
|
1117
|
+
end
|
1111
1118
|
break
|
1112
|
-
end
|
1113
|
-
@result = begin; @g.range(l,r) ; end
|
1114
|
-
_tmp = true
|
1115
|
-
unless _tmp
|
1116
|
-
self.pos = _save
|
1117
|
-
end
|
1118
|
-
break
|
1119
1119
|
end # end sequence
|
1120
1120
|
|
1121
1121
|
set_failed_rule :_char_range unless _tmp
|
@@ -1127,21 +1127,21 @@ class KPeg::FormatParser
|
|
1127
1127
|
|
1128
1128
|
_save = self.pos
|
1129
1129
|
while true # sequence
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1130
|
+
_text_start = self.pos
|
1131
|
+
_tmp = scan(/\A(?-mix:[1-9][0-9]*)/)
|
1132
|
+
if _tmp
|
1133
|
+
text = get_text(_text_start)
|
1134
|
+
end
|
1135
|
+
unless _tmp
|
1136
|
+
self.pos = _save
|
1137
|
+
break
|
1138
|
+
end
|
1139
|
+
@result = begin; text ; end
|
1140
|
+
_tmp = true
|
1141
|
+
unless _tmp
|
1142
|
+
self.pos = _save
|
1143
|
+
end
|
1137
1144
|
break
|
1138
|
-
end
|
1139
|
-
@result = begin; text ; end
|
1140
|
-
_tmp = true
|
1141
|
-
unless _tmp
|
1142
|
-
self.pos = _save
|
1143
|
-
end
|
1144
|
-
break
|
1145
1145
|
end # end sequence
|
1146
1146
|
|
1147
1147
|
set_failed_rule :_range_num unless _tmp
|
@@ -1153,32 +1153,32 @@ class KPeg::FormatParser
|
|
1153
1153
|
|
1154
1154
|
_save = self.pos
|
1155
1155
|
while true # sequence
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1156
|
+
_text_start = self.pos
|
1157
|
+
|
1158
|
+
_save1 = self.pos
|
1159
|
+
while true # choice
|
1160
|
+
_tmp = apply(:_range_num)
|
1161
|
+
break if _tmp
|
1162
|
+
self.pos = _save1
|
1163
|
+
_tmp = apply(:_kleene)
|
1164
|
+
break if _tmp
|
1165
|
+
self.pos = _save1
|
1166
|
+
break
|
1167
|
+
end # end choice
|
1168
|
+
|
1169
|
+
if _tmp
|
1170
|
+
text = get_text(_text_start)
|
1171
|
+
end
|
1172
|
+
unless _tmp
|
1173
|
+
self.pos = _save
|
1174
|
+
break
|
1175
|
+
end
|
1176
|
+
@result = begin; text ; end
|
1177
|
+
_tmp = true
|
1178
|
+
unless _tmp
|
1179
|
+
self.pos = _save
|
1180
|
+
end
|
1174
1181
|
break
|
1175
|
-
end
|
1176
|
-
@result = begin; text ; end
|
1177
|
-
_tmp = true
|
1178
|
-
unless _tmp
|
1179
|
-
self.pos = _save
|
1180
|
-
end
|
1181
|
-
break
|
1182
1182
|
end # end sequence
|
1183
1183
|
|
1184
1184
|
set_failed_rule :_range_elem unless _tmp
|
@@ -1191,105 +1191,105 @@ class KPeg::FormatParser
|
|
1191
1191
|
_save = self.pos
|
1192
1192
|
while true # choice
|
1193
1193
|
|
1194
|
-
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
|
1221
|
-
|
1222
|
-
|
1223
|
-
|
1224
|
-
|
1225
|
-
|
1226
|
-
|
1227
|
-
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1194
|
+
_save1 = self.pos
|
1195
|
+
while true # sequence
|
1196
|
+
_tmp = match_string("[")
|
1197
|
+
unless _tmp
|
1198
|
+
self.pos = _save1
|
1199
|
+
break
|
1200
|
+
end
|
1201
|
+
_tmp = apply(:__hyphen_)
|
1202
|
+
unless _tmp
|
1203
|
+
self.pos = _save1
|
1204
|
+
break
|
1205
|
+
end
|
1206
|
+
_tmp = apply(:_range_elem)
|
1207
|
+
l = @result
|
1208
|
+
unless _tmp
|
1209
|
+
self.pos = _save1
|
1210
|
+
break
|
1211
|
+
end
|
1212
|
+
_tmp = apply(:__hyphen_)
|
1213
|
+
unless _tmp
|
1214
|
+
self.pos = _save1
|
1215
|
+
break
|
1216
|
+
end
|
1217
|
+
_tmp = match_string(",")
|
1218
|
+
unless _tmp
|
1219
|
+
self.pos = _save1
|
1220
|
+
break
|
1221
|
+
end
|
1222
|
+
_tmp = apply(:__hyphen_)
|
1223
|
+
unless _tmp
|
1224
|
+
self.pos = _save1
|
1225
|
+
break
|
1226
|
+
end
|
1227
|
+
_tmp = apply(:_range_elem)
|
1228
|
+
r = @result
|
1229
|
+
unless _tmp
|
1230
|
+
self.pos = _save1
|
1231
|
+
break
|
1232
|
+
end
|
1233
|
+
_tmp = apply(:__hyphen_)
|
1234
|
+
unless _tmp
|
1235
|
+
self.pos = _save1
|
1236
|
+
break
|
1237
|
+
end
|
1238
|
+
_tmp = match_string("]")
|
1239
|
+
unless _tmp
|
1240
|
+
self.pos = _save1
|
1241
|
+
break
|
1242
|
+
end
|
1243
|
+
@result = begin; [l == "*" ? nil : l.to_i, r == "*" ? nil : r.to_i] ; end
|
1244
|
+
_tmp = true
|
1245
|
+
unless _tmp
|
1246
|
+
self.pos = _save1
|
1247
|
+
end
|
1248
|
+
break
|
1249
|
+
end # end sequence
|
1250
1250
|
|
1251
|
-
|
1252
|
-
|
1251
|
+
break if _tmp
|
1252
|
+
self.pos = _save
|
1253
1253
|
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1254
|
+
_save2 = self.pos
|
1255
|
+
while true # sequence
|
1256
|
+
_tmp = match_string("[")
|
1257
|
+
unless _tmp
|
1258
|
+
self.pos = _save2
|
1259
|
+
break
|
1260
|
+
end
|
1261
|
+
_tmp = apply(:__hyphen_)
|
1262
|
+
unless _tmp
|
1263
|
+
self.pos = _save2
|
1264
|
+
break
|
1265
|
+
end
|
1266
|
+
_tmp = apply(:_range_num)
|
1267
|
+
e = @result
|
1268
|
+
unless _tmp
|
1269
|
+
self.pos = _save2
|
1270
|
+
break
|
1271
|
+
end
|
1272
|
+
_tmp = apply(:__hyphen_)
|
1273
|
+
unless _tmp
|
1274
|
+
self.pos = _save2
|
1275
|
+
break
|
1276
|
+
end
|
1277
|
+
_tmp = match_string("]")
|
1278
|
+
unless _tmp
|
1279
|
+
self.pos = _save2
|
1280
|
+
break
|
1281
|
+
end
|
1282
|
+
@result = begin; [e.to_i, e.to_i] ; end
|
1283
|
+
_tmp = true
|
1284
|
+
unless _tmp
|
1285
|
+
self.pos = _save2
|
1286
|
+
end
|
1287
|
+
break
|
1288
|
+
end # end sequence
|
1289
1289
|
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1290
|
+
break if _tmp
|
1291
|
+
self.pos = _save
|
1292
|
+
break
|
1293
1293
|
end # end choice
|
1294
1294
|
|
1295
1295
|
set_failed_rule :_mult_range unless _tmp
|
@@ -1303,613 +1303,658 @@ class KPeg::FormatParser
|
|
1303
1303
|
return _tmp
|
1304
1304
|
end
|
1305
1305
|
|
1306
|
-
# curly = "{" < (/[^{}]+/ | curly)* > "}" { @g.action(text) }
|
1306
|
+
# curly = "{" < (/[^{}"']+/ | string | curly)* > "}" { @g.action(text) }
|
1307
1307
|
def _curly
|
1308
1308
|
|
1309
1309
|
_save = self.pos
|
1310
1310
|
while true # sequence
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1311
|
+
_tmp = match_string("{")
|
1312
|
+
unless _tmp
|
1313
|
+
self.pos = _save
|
1314
|
+
break
|
1315
|
+
end
|
1316
|
+
_text_start = self.pos
|
1317
|
+
while true
|
1318
1318
|
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1327
|
-
|
1328
|
-
|
1319
|
+
_save2 = self.pos
|
1320
|
+
while true # choice
|
1321
|
+
_tmp = scan(/\A(?-mix:[^{}"']+)/)
|
1322
|
+
break if _tmp
|
1323
|
+
self.pos = _save2
|
1324
|
+
_tmp = apply(:_string)
|
1325
|
+
break if _tmp
|
1326
|
+
self.pos = _save2
|
1327
|
+
_tmp = apply(:_curly)
|
1328
|
+
break if _tmp
|
1329
|
+
self.pos = _save2
|
1330
|
+
break
|
1331
|
+
end # end choice
|
1329
1332
|
|
1330
|
-
|
1331
|
-
|
1332
|
-
|
1333
|
-
|
1334
|
-
|
1335
|
-
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
|
1340
|
-
|
1341
|
-
|
1342
|
-
|
1333
|
+
break unless _tmp
|
1334
|
+
end
|
1335
|
+
_tmp = true
|
1336
|
+
if _tmp
|
1337
|
+
text = get_text(_text_start)
|
1338
|
+
end
|
1339
|
+
unless _tmp
|
1340
|
+
self.pos = _save
|
1341
|
+
break
|
1342
|
+
end
|
1343
|
+
_tmp = match_string("}")
|
1344
|
+
unless _tmp
|
1345
|
+
self.pos = _save
|
1346
|
+
break
|
1347
|
+
end
|
1348
|
+
@result = begin; @g.action(text) ; end
|
1349
|
+
_tmp = true
|
1350
|
+
unless _tmp
|
1351
|
+
self.pos = _save
|
1352
|
+
end
|
1343
1353
|
break
|
1344
|
-
end
|
1345
|
-
@result = begin; @g.action(text) ; end
|
1346
|
-
_tmp = true
|
1347
|
-
unless _tmp
|
1348
|
-
self.pos = _save
|
1349
|
-
end
|
1350
|
-
break
|
1351
1354
|
end # end sequence
|
1352
1355
|
|
1353
1356
|
set_failed_rule :_curly unless _tmp
|
1354
1357
|
return _tmp
|
1355
1358
|
end
|
1356
1359
|
|
1357
|
-
# nested_paren = "(" (/[^()]+/ | nested_paren)* ")"
|
1360
|
+
# nested_paren = "(" (/[^()"']+/ | string | nested_paren)* ")"
|
1358
1361
|
def _nested_paren
|
1359
1362
|
|
1360
1363
|
_save = self.pos
|
1361
1364
|
while true # sequence
|
1362
|
-
|
1363
|
-
|
1364
|
-
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1365
|
+
_tmp = match_string("(")
|
1366
|
+
unless _tmp
|
1367
|
+
self.pos = _save
|
1368
|
+
break
|
1369
|
+
end
|
1370
|
+
while true
|
1368
1371
|
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
|
1375
|
-
|
1376
|
-
|
1377
|
-
|
1378
|
-
|
1372
|
+
_save2 = self.pos
|
1373
|
+
while true # choice
|
1374
|
+
_tmp = scan(/\A(?-mix:[^()"']+)/)
|
1375
|
+
break if _tmp
|
1376
|
+
self.pos = _save2
|
1377
|
+
_tmp = apply(:_string)
|
1378
|
+
break if _tmp
|
1379
|
+
self.pos = _save2
|
1380
|
+
_tmp = apply(:_nested_paren)
|
1381
|
+
break if _tmp
|
1382
|
+
self.pos = _save2
|
1383
|
+
break
|
1384
|
+
end # end choice
|
1379
1385
|
|
1380
|
-
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1386
|
+
break unless _tmp
|
1387
|
+
end
|
1388
|
+
_tmp = true
|
1389
|
+
unless _tmp
|
1390
|
+
self.pos = _save
|
1391
|
+
break
|
1392
|
+
end
|
1393
|
+
_tmp = match_string(")")
|
1394
|
+
unless _tmp
|
1395
|
+
self.pos = _save
|
1396
|
+
end
|
1385
1397
|
break
|
1386
|
-
end
|
1387
|
-
_tmp = match_string(")")
|
1388
|
-
unless _tmp
|
1389
|
-
self.pos = _save
|
1390
|
-
end
|
1391
|
-
break
|
1392
1398
|
end # end sequence
|
1393
1399
|
|
1394
1400
|
set_failed_rule :_nested_paren unless _tmp
|
1395
1401
|
return _tmp
|
1396
1402
|
end
|
1397
1403
|
|
1398
|
-
# value = (value:v ":" var:n { @g.t(v,n) } | value:v "?" { @g.maybe(v) } | value:v "+" { @g.many(v) } | value:v "*" { @g.kleene(v) } | value:v mult_range:r { @g.multiple(v, *r) } | "&" value:v { @g.andp(v) } | "!" value:v { @g.notp(v) } | "(" - expression:o - ")" { o } | "<" - expression:o - ">" { @g.collect(o) } | curly_block | "~" method:m < nested_paren? > { @g.action("#{m}#{text}") } | "." { @g.dot } | "@" var:name !(- "=") { @g.invoke(name) } | "^" var:name < nested_paren? > { @g.foreign_invoke("parent", name, text) } | "%" var:gram "." var:name < nested_paren? > { @g.foreign_invoke(gram, name, text) } | var:name < nested_paren? > !(- "=") { text.empty? ? @g.ref(name) : @g.invoke(name, text) } | char_range | regexp | string)
|
1404
|
+
# value = (value:v ":" var:n { @g.t(v,n) } | value:v "?" { @g.maybe(v) } | value:v "+" { @g.many(v) } | value:v "*" { @g.kleene(v) } | value:v mult_range:r { @g.multiple(v, *r) } | "&" value:v { @g.andp(v) } | "!" value:v { @g.notp(v) } | "(" - expression:o - ")" { o } | "@<" - expression:o - ">" { @g.bounds(o) } | "<" - expression:o - ">" { @g.collect(o) } | curly_block | "~" method:m < nested_paren? > { @g.action("#{m}#{text}") } | "." { @g.dot } | "@" var:name !(- "=") { @g.invoke(name) } | "^" var:name < nested_paren? > { @g.foreign_invoke("parent", name, text) } | "%" var:gram "." var:name < nested_paren? > { @g.foreign_invoke(gram, name, text) } | var:name < nested_paren? > !(- "=") { text.empty? ? @g.ref(name) : @g.invoke(name, text) } | char_range | regexp | string)
|
1399
1405
|
def _value
|
1400
1406
|
|
1401
1407
|
_save = self.pos
|
1402
1408
|
while true # choice
|
1403
1409
|
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
|
1429
|
-
|
1430
|
-
|
1431
|
-
break if _tmp
|
1432
|
-
self.pos = _save
|
1410
|
+
_save1 = self.pos
|
1411
|
+
while true # sequence
|
1412
|
+
_tmp = apply(:_value)
|
1413
|
+
v = @result
|
1414
|
+
unless _tmp
|
1415
|
+
self.pos = _save1
|
1416
|
+
break
|
1417
|
+
end
|
1418
|
+
_tmp = match_string(":")
|
1419
|
+
unless _tmp
|
1420
|
+
self.pos = _save1
|
1421
|
+
break
|
1422
|
+
end
|
1423
|
+
_tmp = apply(:_var)
|
1424
|
+
n = @result
|
1425
|
+
unless _tmp
|
1426
|
+
self.pos = _save1
|
1427
|
+
break
|
1428
|
+
end
|
1429
|
+
@result = begin; @g.t(v,n) ; end
|
1430
|
+
_tmp = true
|
1431
|
+
unless _tmp
|
1432
|
+
self.pos = _save1
|
1433
|
+
end
|
1434
|
+
break
|
1435
|
+
end # end sequence
|
1433
1436
|
|
1434
|
-
|
1435
|
-
|
1436
|
-
_tmp = apply(:_value)
|
1437
|
-
v = @result
|
1438
|
-
unless _tmp
|
1439
|
-
self.pos = _save2
|
1440
|
-
break
|
1441
|
-
end
|
1442
|
-
_tmp = match_string("?")
|
1443
|
-
unless _tmp
|
1444
|
-
self.pos = _save2
|
1445
|
-
break
|
1446
|
-
end
|
1447
|
-
@result = begin; @g.maybe(v) ; end
|
1448
|
-
_tmp = true
|
1449
|
-
unless _tmp
|
1450
|
-
self.pos = _save2
|
1451
|
-
end
|
1452
|
-
break
|
1453
|
-
end # end sequence
|
1437
|
+
break if _tmp
|
1438
|
+
self.pos = _save
|
1454
1439
|
|
1455
|
-
|
1456
|
-
|
1440
|
+
_save2 = self.pos
|
1441
|
+
while true # sequence
|
1442
|
+
_tmp = apply(:_value)
|
1443
|
+
v = @result
|
1444
|
+
unless _tmp
|
1445
|
+
self.pos = _save2
|
1446
|
+
break
|
1447
|
+
end
|
1448
|
+
_tmp = match_string("?")
|
1449
|
+
unless _tmp
|
1450
|
+
self.pos = _save2
|
1451
|
+
break
|
1452
|
+
end
|
1453
|
+
@result = begin; @g.maybe(v) ; end
|
1454
|
+
_tmp = true
|
1455
|
+
unless _tmp
|
1456
|
+
self.pos = _save2
|
1457
|
+
end
|
1458
|
+
break
|
1459
|
+
end # end sequence
|
1457
1460
|
|
1458
|
-
|
1459
|
-
|
1460
|
-
_tmp = apply(:_value)
|
1461
|
-
v = @result
|
1462
|
-
unless _tmp
|
1463
|
-
self.pos = _save3
|
1464
|
-
break
|
1465
|
-
end
|
1466
|
-
_tmp = match_string("+")
|
1467
|
-
unless _tmp
|
1468
|
-
self.pos = _save3
|
1469
|
-
break
|
1470
|
-
end
|
1471
|
-
@result = begin; @g.many(v) ; end
|
1472
|
-
_tmp = true
|
1473
|
-
unless _tmp
|
1474
|
-
self.pos = _save3
|
1475
|
-
end
|
1476
|
-
break
|
1477
|
-
end # end sequence
|
1461
|
+
break if _tmp
|
1462
|
+
self.pos = _save
|
1478
1463
|
|
1479
|
-
|
1480
|
-
|
1464
|
+
_save3 = self.pos
|
1465
|
+
while true # sequence
|
1466
|
+
_tmp = apply(:_value)
|
1467
|
+
v = @result
|
1468
|
+
unless _tmp
|
1469
|
+
self.pos = _save3
|
1470
|
+
break
|
1471
|
+
end
|
1472
|
+
_tmp = match_string("+")
|
1473
|
+
unless _tmp
|
1474
|
+
self.pos = _save3
|
1475
|
+
break
|
1476
|
+
end
|
1477
|
+
@result = begin; @g.many(v) ; end
|
1478
|
+
_tmp = true
|
1479
|
+
unless _tmp
|
1480
|
+
self.pos = _save3
|
1481
|
+
end
|
1482
|
+
break
|
1483
|
+
end # end sequence
|
1481
1484
|
|
1482
|
-
|
1483
|
-
|
1484
|
-
_tmp = apply(:_value)
|
1485
|
-
v = @result
|
1486
|
-
unless _tmp
|
1487
|
-
self.pos = _save4
|
1488
|
-
break
|
1489
|
-
end
|
1490
|
-
_tmp = match_string("*")
|
1491
|
-
unless _tmp
|
1492
|
-
self.pos = _save4
|
1493
|
-
break
|
1494
|
-
end
|
1495
|
-
@result = begin; @g.kleene(v) ; end
|
1496
|
-
_tmp = true
|
1497
|
-
unless _tmp
|
1498
|
-
self.pos = _save4
|
1499
|
-
end
|
1500
|
-
break
|
1501
|
-
end # end sequence
|
1485
|
+
break if _tmp
|
1486
|
+
self.pos = _save
|
1502
1487
|
|
1503
|
-
|
1504
|
-
|
1488
|
+
_save4 = self.pos
|
1489
|
+
while true # sequence
|
1490
|
+
_tmp = apply(:_value)
|
1491
|
+
v = @result
|
1492
|
+
unless _tmp
|
1493
|
+
self.pos = _save4
|
1494
|
+
break
|
1495
|
+
end
|
1496
|
+
_tmp = match_string("*")
|
1497
|
+
unless _tmp
|
1498
|
+
self.pos = _save4
|
1499
|
+
break
|
1500
|
+
end
|
1501
|
+
@result = begin; @g.kleene(v) ; end
|
1502
|
+
_tmp = true
|
1503
|
+
unless _tmp
|
1504
|
+
self.pos = _save4
|
1505
|
+
end
|
1506
|
+
break
|
1507
|
+
end # end sequence
|
1505
1508
|
|
1506
|
-
|
1507
|
-
|
1508
|
-
_tmp = apply(:_value)
|
1509
|
-
v = @result
|
1510
|
-
unless _tmp
|
1511
|
-
self.pos = _save5
|
1512
|
-
break
|
1513
|
-
end
|
1514
|
-
_tmp = apply(:_mult_range)
|
1515
|
-
r = @result
|
1516
|
-
unless _tmp
|
1517
|
-
self.pos = _save5
|
1518
|
-
break
|
1519
|
-
end
|
1520
|
-
@result = begin; @g.multiple(v, *r) ; end
|
1521
|
-
_tmp = true
|
1522
|
-
unless _tmp
|
1523
|
-
self.pos = _save5
|
1524
|
-
end
|
1525
|
-
break
|
1526
|
-
end # end sequence
|
1509
|
+
break if _tmp
|
1510
|
+
self.pos = _save
|
1527
1511
|
|
1528
|
-
|
1529
|
-
|
1512
|
+
_save5 = self.pos
|
1513
|
+
while true # sequence
|
1514
|
+
_tmp = apply(:_value)
|
1515
|
+
v = @result
|
1516
|
+
unless _tmp
|
1517
|
+
self.pos = _save5
|
1518
|
+
break
|
1519
|
+
end
|
1520
|
+
_tmp = apply(:_mult_range)
|
1521
|
+
r = @result
|
1522
|
+
unless _tmp
|
1523
|
+
self.pos = _save5
|
1524
|
+
break
|
1525
|
+
end
|
1526
|
+
@result = begin; @g.multiple(v, *r) ; end
|
1527
|
+
_tmp = true
|
1528
|
+
unless _tmp
|
1529
|
+
self.pos = _save5
|
1530
|
+
end
|
1531
|
+
break
|
1532
|
+
end # end sequence
|
1530
1533
|
|
1531
|
-
|
1532
|
-
|
1533
|
-
_tmp = match_string("&")
|
1534
|
-
unless _tmp
|
1535
|
-
self.pos = _save6
|
1536
|
-
break
|
1537
|
-
end
|
1538
|
-
_tmp = apply(:_value)
|
1539
|
-
v = @result
|
1540
|
-
unless _tmp
|
1541
|
-
self.pos = _save6
|
1542
|
-
break
|
1543
|
-
end
|
1544
|
-
@result = begin; @g.andp(v) ; end
|
1545
|
-
_tmp = true
|
1546
|
-
unless _tmp
|
1547
|
-
self.pos = _save6
|
1548
|
-
end
|
1549
|
-
break
|
1550
|
-
end # end sequence
|
1534
|
+
break if _tmp
|
1535
|
+
self.pos = _save
|
1551
1536
|
|
1552
|
-
|
1553
|
-
|
1537
|
+
_save6 = self.pos
|
1538
|
+
while true # sequence
|
1539
|
+
_tmp = match_string("&")
|
1540
|
+
unless _tmp
|
1541
|
+
self.pos = _save6
|
1542
|
+
break
|
1543
|
+
end
|
1544
|
+
_tmp = apply(:_value)
|
1545
|
+
v = @result
|
1546
|
+
unless _tmp
|
1547
|
+
self.pos = _save6
|
1548
|
+
break
|
1549
|
+
end
|
1550
|
+
@result = begin; @g.andp(v) ; end
|
1551
|
+
_tmp = true
|
1552
|
+
unless _tmp
|
1553
|
+
self.pos = _save6
|
1554
|
+
end
|
1555
|
+
break
|
1556
|
+
end # end sequence
|
1554
1557
|
|
1555
|
-
|
1556
|
-
|
1557
|
-
_tmp = match_string("!")
|
1558
|
-
unless _tmp
|
1559
|
-
self.pos = _save7
|
1560
|
-
break
|
1561
|
-
end
|
1562
|
-
_tmp = apply(:_value)
|
1563
|
-
v = @result
|
1564
|
-
unless _tmp
|
1565
|
-
self.pos = _save7
|
1566
|
-
break
|
1567
|
-
end
|
1568
|
-
@result = begin; @g.notp(v) ; end
|
1569
|
-
_tmp = true
|
1570
|
-
unless _tmp
|
1571
|
-
self.pos = _save7
|
1572
|
-
end
|
1573
|
-
break
|
1574
|
-
end # end sequence
|
1558
|
+
break if _tmp
|
1559
|
+
self.pos = _save
|
1575
1560
|
|
1576
|
-
|
1577
|
-
|
1561
|
+
_save7 = self.pos
|
1562
|
+
while true # sequence
|
1563
|
+
_tmp = match_string("!")
|
1564
|
+
unless _tmp
|
1565
|
+
self.pos = _save7
|
1566
|
+
break
|
1567
|
+
end
|
1568
|
+
_tmp = apply(:_value)
|
1569
|
+
v = @result
|
1570
|
+
unless _tmp
|
1571
|
+
self.pos = _save7
|
1572
|
+
break
|
1573
|
+
end
|
1574
|
+
@result = begin; @g.notp(v) ; end
|
1575
|
+
_tmp = true
|
1576
|
+
unless _tmp
|
1577
|
+
self.pos = _save7
|
1578
|
+
end
|
1579
|
+
break
|
1580
|
+
end # end sequence
|
1578
1581
|
|
1579
|
-
|
1580
|
-
|
1581
|
-
_tmp = match_string("(")
|
1582
|
-
unless _tmp
|
1583
|
-
self.pos = _save8
|
1584
|
-
break
|
1585
|
-
end
|
1586
|
-
_tmp = apply(:__hyphen_)
|
1587
|
-
unless _tmp
|
1588
|
-
self.pos = _save8
|
1589
|
-
break
|
1590
|
-
end
|
1591
|
-
_tmp = apply(:_expression)
|
1592
|
-
o = @result
|
1593
|
-
unless _tmp
|
1594
|
-
self.pos = _save8
|
1595
|
-
break
|
1596
|
-
end
|
1597
|
-
_tmp = apply(:__hyphen_)
|
1598
|
-
unless _tmp
|
1599
|
-
self.pos = _save8
|
1600
|
-
break
|
1601
|
-
end
|
1602
|
-
_tmp = match_string(")")
|
1603
|
-
unless _tmp
|
1604
|
-
self.pos = _save8
|
1605
|
-
break
|
1606
|
-
end
|
1607
|
-
@result = begin; o ; end
|
1608
|
-
_tmp = true
|
1609
|
-
unless _tmp
|
1610
|
-
self.pos = _save8
|
1611
|
-
end
|
1612
|
-
break
|
1613
|
-
end # end sequence
|
1582
|
+
break if _tmp
|
1583
|
+
self.pos = _save
|
1614
1584
|
|
1615
|
-
|
1616
|
-
|
1585
|
+
_save8 = self.pos
|
1586
|
+
while true # sequence
|
1587
|
+
_tmp = match_string("(")
|
1588
|
+
unless _tmp
|
1589
|
+
self.pos = _save8
|
1590
|
+
break
|
1591
|
+
end
|
1592
|
+
_tmp = apply(:__hyphen_)
|
1593
|
+
unless _tmp
|
1594
|
+
self.pos = _save8
|
1595
|
+
break
|
1596
|
+
end
|
1597
|
+
_tmp = apply(:_expression)
|
1598
|
+
o = @result
|
1599
|
+
unless _tmp
|
1600
|
+
self.pos = _save8
|
1601
|
+
break
|
1602
|
+
end
|
1603
|
+
_tmp = apply(:__hyphen_)
|
1604
|
+
unless _tmp
|
1605
|
+
self.pos = _save8
|
1606
|
+
break
|
1607
|
+
end
|
1608
|
+
_tmp = match_string(")")
|
1609
|
+
unless _tmp
|
1610
|
+
self.pos = _save8
|
1611
|
+
break
|
1612
|
+
end
|
1613
|
+
@result = begin; o ; end
|
1614
|
+
_tmp = true
|
1615
|
+
unless _tmp
|
1616
|
+
self.pos = _save8
|
1617
|
+
end
|
1618
|
+
break
|
1619
|
+
end # end sequence
|
1617
1620
|
|
1618
|
-
|
1619
|
-
|
1620
|
-
_tmp = match_string("<")
|
1621
|
-
unless _tmp
|
1622
|
-
self.pos = _save9
|
1623
|
-
break
|
1624
|
-
end
|
1625
|
-
_tmp = apply(:__hyphen_)
|
1626
|
-
unless _tmp
|
1627
|
-
self.pos = _save9
|
1628
|
-
break
|
1629
|
-
end
|
1630
|
-
_tmp = apply(:_expression)
|
1631
|
-
o = @result
|
1632
|
-
unless _tmp
|
1633
|
-
self.pos = _save9
|
1634
|
-
break
|
1635
|
-
end
|
1636
|
-
_tmp = apply(:__hyphen_)
|
1637
|
-
unless _tmp
|
1638
|
-
self.pos = _save9
|
1639
|
-
break
|
1640
|
-
end
|
1641
|
-
_tmp = match_string(">")
|
1642
|
-
unless _tmp
|
1643
|
-
self.pos = _save9
|
1644
|
-
break
|
1645
|
-
end
|
1646
|
-
@result = begin; @g.collect(o) ; end
|
1647
|
-
_tmp = true
|
1648
|
-
unless _tmp
|
1649
|
-
self.pos = _save9
|
1650
|
-
end
|
1651
|
-
break
|
1652
|
-
end # end sequence
|
1621
|
+
break if _tmp
|
1622
|
+
self.pos = _save
|
1653
1623
|
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1624
|
+
_save9 = self.pos
|
1625
|
+
while true # sequence
|
1626
|
+
_tmp = match_string("@<")
|
1627
|
+
unless _tmp
|
1628
|
+
self.pos = _save9
|
1629
|
+
break
|
1630
|
+
end
|
1631
|
+
_tmp = apply(:__hyphen_)
|
1632
|
+
unless _tmp
|
1633
|
+
self.pos = _save9
|
1634
|
+
break
|
1635
|
+
end
|
1636
|
+
_tmp = apply(:_expression)
|
1637
|
+
o = @result
|
1638
|
+
unless _tmp
|
1639
|
+
self.pos = _save9
|
1640
|
+
break
|
1641
|
+
end
|
1642
|
+
_tmp = apply(:__hyphen_)
|
1643
|
+
unless _tmp
|
1644
|
+
self.pos = _save9
|
1645
|
+
break
|
1646
|
+
end
|
1647
|
+
_tmp = match_string(">")
|
1648
|
+
unless _tmp
|
1649
|
+
self.pos = _save9
|
1650
|
+
break
|
1651
|
+
end
|
1652
|
+
@result = begin; @g.bounds(o) ; end
|
1653
|
+
_tmp = true
|
1654
|
+
unless _tmp
|
1655
|
+
self.pos = _save9
|
1656
|
+
end
|
1657
|
+
break
|
1658
|
+
end # end sequence
|
1659
1659
|
|
1660
|
-
|
1661
|
-
|
1662
|
-
_tmp = match_string("~")
|
1663
|
-
unless _tmp
|
1664
|
-
self.pos = _save10
|
1665
|
-
break
|
1666
|
-
end
|
1667
|
-
_tmp = apply(:_method)
|
1668
|
-
m = @result
|
1669
|
-
unless _tmp
|
1670
|
-
self.pos = _save10
|
1671
|
-
break
|
1672
|
-
end
|
1673
|
-
_text_start = self.pos
|
1674
|
-
_save11 = self.pos
|
1675
|
-
_tmp = apply(:_nested_paren)
|
1676
|
-
unless _tmp
|
1677
|
-
_tmp = true
|
1678
|
-
self.pos = _save11
|
1679
|
-
end
|
1680
|
-
if _tmp
|
1681
|
-
text = get_text(_text_start)
|
1682
|
-
end
|
1683
|
-
unless _tmp
|
1684
|
-
self.pos = _save10
|
1685
|
-
break
|
1686
|
-
end
|
1687
|
-
@result = begin; @g.action("#{m}#{text}") ; end
|
1688
|
-
_tmp = true
|
1689
|
-
unless _tmp
|
1690
|
-
self.pos = _save10
|
1691
|
-
end
|
1692
|
-
break
|
1693
|
-
end # end sequence
|
1660
|
+
break if _tmp
|
1661
|
+
self.pos = _save
|
1694
1662
|
|
1695
|
-
|
1696
|
-
|
1663
|
+
_save10 = self.pos
|
1664
|
+
while true # sequence
|
1665
|
+
_tmp = match_string("<")
|
1666
|
+
unless _tmp
|
1667
|
+
self.pos = _save10
|
1668
|
+
break
|
1669
|
+
end
|
1670
|
+
_tmp = apply(:__hyphen_)
|
1671
|
+
unless _tmp
|
1672
|
+
self.pos = _save10
|
1673
|
+
break
|
1674
|
+
end
|
1675
|
+
_tmp = apply(:_expression)
|
1676
|
+
o = @result
|
1677
|
+
unless _tmp
|
1678
|
+
self.pos = _save10
|
1679
|
+
break
|
1680
|
+
end
|
1681
|
+
_tmp = apply(:__hyphen_)
|
1682
|
+
unless _tmp
|
1683
|
+
self.pos = _save10
|
1684
|
+
break
|
1685
|
+
end
|
1686
|
+
_tmp = match_string(">")
|
1687
|
+
unless _tmp
|
1688
|
+
self.pos = _save10
|
1689
|
+
break
|
1690
|
+
end
|
1691
|
+
@result = begin; @g.collect(o) ; end
|
1692
|
+
_tmp = true
|
1693
|
+
unless _tmp
|
1694
|
+
self.pos = _save10
|
1695
|
+
end
|
1696
|
+
break
|
1697
|
+
end # end sequence
|
1697
1698
|
|
1698
|
-
|
1699
|
-
|
1700
|
-
|
1701
|
-
|
1702
|
-
self.pos =
|
1703
|
-
break
|
1704
|
-
end
|
1705
|
-
@result = begin; @g.dot ; end
|
1706
|
-
_tmp = true
|
1707
|
-
unless _tmp
|
1708
|
-
self.pos = _save12
|
1709
|
-
end
|
1710
|
-
break
|
1711
|
-
end # end sequence
|
1699
|
+
break if _tmp
|
1700
|
+
self.pos = _save
|
1701
|
+
_tmp = apply(:_curly_block)
|
1702
|
+
break if _tmp
|
1703
|
+
self.pos = _save
|
1712
1704
|
|
1713
|
-
|
1714
|
-
|
1705
|
+
_save11 = self.pos
|
1706
|
+
while true # sequence
|
1707
|
+
_tmp = match_string("~")
|
1708
|
+
unless _tmp
|
1709
|
+
self.pos = _save11
|
1710
|
+
break
|
1711
|
+
end
|
1712
|
+
_tmp = apply(:_method)
|
1713
|
+
m = @result
|
1714
|
+
unless _tmp
|
1715
|
+
self.pos = _save11
|
1716
|
+
break
|
1717
|
+
end
|
1718
|
+
_text_start = self.pos
|
1719
|
+
_save12 = self.pos
|
1720
|
+
_tmp = apply(:_nested_paren)
|
1721
|
+
unless _tmp
|
1722
|
+
_tmp = true
|
1723
|
+
self.pos = _save12
|
1724
|
+
end
|
1725
|
+
if _tmp
|
1726
|
+
text = get_text(_text_start)
|
1727
|
+
end
|
1728
|
+
unless _tmp
|
1729
|
+
self.pos = _save11
|
1730
|
+
break
|
1731
|
+
end
|
1732
|
+
@result = begin; @g.action("#{m}#{text}") ; end
|
1733
|
+
_tmp = true
|
1734
|
+
unless _tmp
|
1735
|
+
self.pos = _save11
|
1736
|
+
end
|
1737
|
+
break
|
1738
|
+
end # end sequence
|
1715
1739
|
|
1716
|
-
|
1717
|
-
|
1718
|
-
_tmp = match_string("@")
|
1719
|
-
unless _tmp
|
1720
|
-
self.pos = _save13
|
1721
|
-
break
|
1722
|
-
end
|
1723
|
-
_tmp = apply(:_var)
|
1724
|
-
name = @result
|
1725
|
-
unless _tmp
|
1726
|
-
self.pos = _save13
|
1727
|
-
break
|
1728
|
-
end
|
1729
|
-
_save14 = self.pos
|
1740
|
+
break if _tmp
|
1741
|
+
self.pos = _save
|
1730
1742
|
|
1731
|
-
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
|
1736
|
-
|
1737
|
-
|
1738
|
-
|
1739
|
-
|
1740
|
-
|
1741
|
-
|
1742
|
-
|
1743
|
-
|
1743
|
+
_save13 = self.pos
|
1744
|
+
while true # sequence
|
1745
|
+
_tmp = match_string(".")
|
1746
|
+
unless _tmp
|
1747
|
+
self.pos = _save13
|
1748
|
+
break
|
1749
|
+
end
|
1750
|
+
@result = begin; @g.dot ; end
|
1751
|
+
_tmp = true
|
1752
|
+
unless _tmp
|
1753
|
+
self.pos = _save13
|
1754
|
+
end
|
1755
|
+
break
|
1756
|
+
end # end sequence
|
1744
1757
|
|
1745
|
-
|
1746
|
-
|
1747
|
-
unless _tmp
|
1748
|
-
self.pos = _save13
|
1749
|
-
break
|
1750
|
-
end
|
1751
|
-
@result = begin; @g.invoke(name) ; end
|
1752
|
-
_tmp = true
|
1753
|
-
unless _tmp
|
1754
|
-
self.pos = _save13
|
1755
|
-
end
|
1756
|
-
break
|
1757
|
-
end # end sequence
|
1758
|
+
break if _tmp
|
1759
|
+
self.pos = _save
|
1758
1760
|
|
1759
|
-
|
1760
|
-
|
1761
|
+
_save14 = self.pos
|
1762
|
+
while true # sequence
|
1763
|
+
_tmp = match_string("@")
|
1764
|
+
unless _tmp
|
1765
|
+
self.pos = _save14
|
1766
|
+
break
|
1767
|
+
end
|
1768
|
+
_tmp = apply(:_var)
|
1769
|
+
name = @result
|
1770
|
+
unless _tmp
|
1771
|
+
self.pos = _save14
|
1772
|
+
break
|
1773
|
+
end
|
1774
|
+
_save15 = self.pos
|
1775
|
+
|
1776
|
+
_save16 = self.pos
|
1777
|
+
while true # sequence
|
1778
|
+
_tmp = apply(:__hyphen_)
|
1779
|
+
unless _tmp
|
1780
|
+
self.pos = _save16
|
1781
|
+
break
|
1782
|
+
end
|
1783
|
+
_tmp = match_string("=")
|
1784
|
+
unless _tmp
|
1785
|
+
self.pos = _save16
|
1786
|
+
end
|
1787
|
+
break
|
1788
|
+
end # end sequence
|
1789
|
+
|
1790
|
+
_tmp = _tmp ? nil : true
|
1791
|
+
self.pos = _save15
|
1792
|
+
unless _tmp
|
1793
|
+
self.pos = _save14
|
1794
|
+
break
|
1795
|
+
end
|
1796
|
+
@result = begin; @g.invoke(name) ; end
|
1797
|
+
_tmp = true
|
1798
|
+
unless _tmp
|
1799
|
+
self.pos = _save14
|
1800
|
+
end
|
1801
|
+
break
|
1802
|
+
end # end sequence
|
1761
1803
|
|
1762
|
-
|
1763
|
-
|
1764
|
-
_tmp = match_string("^")
|
1765
|
-
unless _tmp
|
1766
|
-
self.pos = _save16
|
1767
|
-
break
|
1768
|
-
end
|
1769
|
-
_tmp = apply(:_var)
|
1770
|
-
name = @result
|
1771
|
-
unless _tmp
|
1772
|
-
self.pos = _save16
|
1773
|
-
break
|
1774
|
-
end
|
1775
|
-
_text_start = self.pos
|
1776
|
-
_save17 = self.pos
|
1777
|
-
_tmp = apply(:_nested_paren)
|
1778
|
-
unless _tmp
|
1779
|
-
_tmp = true
|
1780
|
-
self.pos = _save17
|
1781
|
-
end
|
1782
|
-
if _tmp
|
1783
|
-
text = get_text(_text_start)
|
1784
|
-
end
|
1785
|
-
unless _tmp
|
1786
|
-
self.pos = _save16
|
1787
|
-
break
|
1788
|
-
end
|
1789
|
-
@result = begin; @g.foreign_invoke("parent", name, text) ; end
|
1790
|
-
_tmp = true
|
1791
|
-
unless _tmp
|
1792
|
-
self.pos = _save16
|
1793
|
-
end
|
1794
|
-
break
|
1795
|
-
end # end sequence
|
1804
|
+
break if _tmp
|
1805
|
+
self.pos = _save
|
1796
1806
|
|
1797
|
-
|
1798
|
-
|
1807
|
+
_save17 = self.pos
|
1808
|
+
while true # sequence
|
1809
|
+
_tmp = match_string("^")
|
1810
|
+
unless _tmp
|
1811
|
+
self.pos = _save17
|
1812
|
+
break
|
1813
|
+
end
|
1814
|
+
_tmp = apply(:_var)
|
1815
|
+
name = @result
|
1816
|
+
unless _tmp
|
1817
|
+
self.pos = _save17
|
1818
|
+
break
|
1819
|
+
end
|
1820
|
+
_text_start = self.pos
|
1821
|
+
_save18 = self.pos
|
1822
|
+
_tmp = apply(:_nested_paren)
|
1823
|
+
unless _tmp
|
1824
|
+
_tmp = true
|
1825
|
+
self.pos = _save18
|
1826
|
+
end
|
1827
|
+
if _tmp
|
1828
|
+
text = get_text(_text_start)
|
1829
|
+
end
|
1830
|
+
unless _tmp
|
1831
|
+
self.pos = _save17
|
1832
|
+
break
|
1833
|
+
end
|
1834
|
+
@result = begin; @g.foreign_invoke("parent", name, text) ; end
|
1835
|
+
_tmp = true
|
1836
|
+
unless _tmp
|
1837
|
+
self.pos = _save17
|
1838
|
+
end
|
1839
|
+
break
|
1840
|
+
end # end sequence
|
1799
1841
|
|
1800
|
-
|
1801
|
-
|
1802
|
-
_tmp = match_string("%")
|
1803
|
-
unless _tmp
|
1804
|
-
self.pos = _save18
|
1805
|
-
break
|
1806
|
-
end
|
1807
|
-
_tmp = apply(:_var)
|
1808
|
-
gram = @result
|
1809
|
-
unless _tmp
|
1810
|
-
self.pos = _save18
|
1811
|
-
break
|
1812
|
-
end
|
1813
|
-
_tmp = match_string(".")
|
1814
|
-
unless _tmp
|
1815
|
-
self.pos = _save18
|
1816
|
-
break
|
1817
|
-
end
|
1818
|
-
_tmp = apply(:_var)
|
1819
|
-
name = @result
|
1820
|
-
unless _tmp
|
1821
|
-
self.pos = _save18
|
1822
|
-
break
|
1823
|
-
end
|
1824
|
-
_text_start = self.pos
|
1825
|
-
_save19 = self.pos
|
1826
|
-
_tmp = apply(:_nested_paren)
|
1827
|
-
unless _tmp
|
1828
|
-
_tmp = true
|
1829
|
-
self.pos = _save19
|
1830
|
-
end
|
1831
|
-
if _tmp
|
1832
|
-
text = get_text(_text_start)
|
1833
|
-
end
|
1834
|
-
unless _tmp
|
1835
|
-
self.pos = _save18
|
1836
|
-
break
|
1837
|
-
end
|
1838
|
-
@result = begin; @g.foreign_invoke(gram, name, text) ; end
|
1839
|
-
_tmp = true
|
1840
|
-
unless _tmp
|
1841
|
-
self.pos = _save18
|
1842
|
-
end
|
1843
|
-
break
|
1844
|
-
end # end sequence
|
1842
|
+
break if _tmp
|
1843
|
+
self.pos = _save
|
1845
1844
|
|
1846
|
-
|
1847
|
-
|
1845
|
+
_save19 = self.pos
|
1846
|
+
while true # sequence
|
1847
|
+
_tmp = match_string("%")
|
1848
|
+
unless _tmp
|
1849
|
+
self.pos = _save19
|
1850
|
+
break
|
1851
|
+
end
|
1852
|
+
_tmp = apply(:_var)
|
1853
|
+
gram = @result
|
1854
|
+
unless _tmp
|
1855
|
+
self.pos = _save19
|
1856
|
+
break
|
1857
|
+
end
|
1858
|
+
_tmp = match_string(".")
|
1859
|
+
unless _tmp
|
1860
|
+
self.pos = _save19
|
1861
|
+
break
|
1862
|
+
end
|
1863
|
+
_tmp = apply(:_var)
|
1864
|
+
name = @result
|
1865
|
+
unless _tmp
|
1866
|
+
self.pos = _save19
|
1867
|
+
break
|
1868
|
+
end
|
1869
|
+
_text_start = self.pos
|
1870
|
+
_save20 = self.pos
|
1871
|
+
_tmp = apply(:_nested_paren)
|
1872
|
+
unless _tmp
|
1873
|
+
_tmp = true
|
1874
|
+
self.pos = _save20
|
1875
|
+
end
|
1876
|
+
if _tmp
|
1877
|
+
text = get_text(_text_start)
|
1878
|
+
end
|
1879
|
+
unless _tmp
|
1880
|
+
self.pos = _save19
|
1881
|
+
break
|
1882
|
+
end
|
1883
|
+
@result = begin; @g.foreign_invoke(gram, name, text) ; end
|
1884
|
+
_tmp = true
|
1885
|
+
unless _tmp
|
1886
|
+
self.pos = _save19
|
1887
|
+
end
|
1888
|
+
break
|
1889
|
+
end # end sequence
|
1848
1890
|
|
1849
|
-
|
1850
|
-
|
1851
|
-
_tmp = apply(:_var)
|
1852
|
-
name = @result
|
1853
|
-
unless _tmp
|
1854
|
-
self.pos = _save20
|
1855
|
-
break
|
1856
|
-
end
|
1857
|
-
_text_start = self.pos
|
1858
|
-
_save21 = self.pos
|
1859
|
-
_tmp = apply(:_nested_paren)
|
1860
|
-
unless _tmp
|
1861
|
-
_tmp = true
|
1862
|
-
self.pos = _save21
|
1863
|
-
end
|
1864
|
-
if _tmp
|
1865
|
-
text = get_text(_text_start)
|
1866
|
-
end
|
1867
|
-
unless _tmp
|
1868
|
-
self.pos = _save20
|
1869
|
-
break
|
1870
|
-
end
|
1871
|
-
_save22 = self.pos
|
1891
|
+
break if _tmp
|
1892
|
+
self.pos = _save
|
1872
1893
|
|
1873
|
-
|
1874
|
-
|
1875
|
-
|
1876
|
-
|
1877
|
-
|
1878
|
-
|
1879
|
-
|
1880
|
-
|
1881
|
-
|
1882
|
-
|
1883
|
-
|
1884
|
-
|
1885
|
-
|
1894
|
+
_save21 = self.pos
|
1895
|
+
while true # sequence
|
1896
|
+
_tmp = apply(:_var)
|
1897
|
+
name = @result
|
1898
|
+
unless _tmp
|
1899
|
+
self.pos = _save21
|
1900
|
+
break
|
1901
|
+
end
|
1902
|
+
_text_start = self.pos
|
1903
|
+
_save22 = self.pos
|
1904
|
+
_tmp = apply(:_nested_paren)
|
1905
|
+
unless _tmp
|
1906
|
+
_tmp = true
|
1907
|
+
self.pos = _save22
|
1908
|
+
end
|
1909
|
+
if _tmp
|
1910
|
+
text = get_text(_text_start)
|
1911
|
+
end
|
1912
|
+
unless _tmp
|
1913
|
+
self.pos = _save21
|
1914
|
+
break
|
1915
|
+
end
|
1916
|
+
_save23 = self.pos
|
1917
|
+
|
1918
|
+
_save24 = self.pos
|
1919
|
+
while true # sequence
|
1920
|
+
_tmp = apply(:__hyphen_)
|
1921
|
+
unless _tmp
|
1922
|
+
self.pos = _save24
|
1923
|
+
break
|
1924
|
+
end
|
1925
|
+
_tmp = match_string("=")
|
1926
|
+
unless _tmp
|
1927
|
+
self.pos = _save24
|
1928
|
+
end
|
1929
|
+
break
|
1930
|
+
end # end sequence
|
1931
|
+
|
1932
|
+
_tmp = _tmp ? nil : true
|
1933
|
+
self.pos = _save23
|
1934
|
+
unless _tmp
|
1935
|
+
self.pos = _save21
|
1936
|
+
break
|
1937
|
+
end
|
1938
|
+
@result = begin; text.empty? ? @g.ref(name) : @g.invoke(name, text) ; end
|
1939
|
+
_tmp = true
|
1940
|
+
unless _tmp
|
1941
|
+
self.pos = _save21
|
1942
|
+
end
|
1943
|
+
break
|
1944
|
+
end # end sequence
|
1886
1945
|
|
1887
|
-
|
1888
|
-
|
1889
|
-
|
1890
|
-
|
1946
|
+
break if _tmp
|
1947
|
+
self.pos = _save
|
1948
|
+
_tmp = apply(:_char_range)
|
1949
|
+
break if _tmp
|
1950
|
+
self.pos = _save
|
1951
|
+
_tmp = apply(:_regexp)
|
1952
|
+
break if _tmp
|
1953
|
+
self.pos = _save
|
1954
|
+
_tmp = apply(:_string)
|
1955
|
+
break if _tmp
|
1956
|
+
self.pos = _save
|
1891
1957
|
break
|
1892
|
-
end
|
1893
|
-
@result = begin; text.empty? ? @g.ref(name) : @g.invoke(name, text) ; end
|
1894
|
-
_tmp = true
|
1895
|
-
unless _tmp
|
1896
|
-
self.pos = _save20
|
1897
|
-
end
|
1898
|
-
break
|
1899
|
-
end # end sequence
|
1900
|
-
|
1901
|
-
break if _tmp
|
1902
|
-
self.pos = _save
|
1903
|
-
_tmp = apply(:_char_range)
|
1904
|
-
break if _tmp
|
1905
|
-
self.pos = _save
|
1906
|
-
_tmp = apply(:_regexp)
|
1907
|
-
break if _tmp
|
1908
|
-
self.pos = _save
|
1909
|
-
_tmp = apply(:_string)
|
1910
|
-
break if _tmp
|
1911
|
-
self.pos = _save
|
1912
|
-
break
|
1913
1958
|
end # end choice
|
1914
1959
|
|
1915
1960
|
set_failed_rule :_value unless _tmp
|
@@ -1922,28 +1967,28 @@ class KPeg::FormatParser
|
|
1922
1967
|
|
1923
1968
|
_save1 = self.pos
|
1924
1969
|
while true # choice
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
1931
|
-
|
1970
|
+
_tmp = apply(:_space)
|
1971
|
+
break if _tmp
|
1972
|
+
self.pos = _save1
|
1973
|
+
_tmp = apply(:_comment)
|
1974
|
+
break if _tmp
|
1975
|
+
self.pos = _save1
|
1976
|
+
break
|
1932
1977
|
end # end choice
|
1933
1978
|
|
1934
1979
|
if _tmp
|
1935
1980
|
while true
|
1936
|
-
|
1937
|
-
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1943
|
-
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1981
|
+
|
1982
|
+
_save2 = self.pos
|
1983
|
+
while true # choice
|
1984
|
+
_tmp = apply(:_space)
|
1985
|
+
break if _tmp
|
1986
|
+
self.pos = _save2
|
1987
|
+
_tmp = apply(:_comment)
|
1988
|
+
break if _tmp
|
1989
|
+
self.pos = _save2
|
1990
|
+
break
|
1991
|
+
end # end choice
|
1947
1992
|
|
1948
1993
|
break unless _tmp
|
1949
1994
|
end
|
@@ -1961,69 +2006,69 @@ class KPeg::FormatParser
|
|
1961
2006
|
_save = self.pos
|
1962
2007
|
while true # choice
|
1963
2008
|
|
1964
|
-
|
1965
|
-
|
1966
|
-
|
1967
|
-
|
1968
|
-
|
1969
|
-
|
1970
|
-
|
1971
|
-
|
1972
|
-
|
1973
|
-
|
1974
|
-
|
1975
|
-
|
1976
|
-
|
1977
|
-
|
1978
|
-
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
|
-
|
1983
|
-
|
1984
|
-
|
1985
|
-
|
1986
|
-
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
2009
|
+
_save1 = self.pos
|
2010
|
+
while true # sequence
|
2011
|
+
_tmp = apply(:_values)
|
2012
|
+
s = @result
|
2013
|
+
unless _tmp
|
2014
|
+
self.pos = _save1
|
2015
|
+
break
|
2016
|
+
end
|
2017
|
+
_tmp = apply(:_spaces)
|
2018
|
+
unless _tmp
|
2019
|
+
self.pos = _save1
|
2020
|
+
break
|
2021
|
+
end
|
2022
|
+
_tmp = apply(:_value)
|
2023
|
+
v = @result
|
2024
|
+
unless _tmp
|
2025
|
+
self.pos = _save1
|
2026
|
+
break
|
2027
|
+
end
|
2028
|
+
@result = begin; @g.seq(s, v) ; end
|
2029
|
+
_tmp = true
|
2030
|
+
unless _tmp
|
2031
|
+
self.pos = _save1
|
2032
|
+
end
|
2033
|
+
break
|
2034
|
+
end # end sequence
|
1990
2035
|
|
1991
|
-
|
1992
|
-
|
2036
|
+
break if _tmp
|
2037
|
+
self.pos = _save
|
1993
2038
|
|
1994
|
-
|
1995
|
-
|
1996
|
-
|
1997
|
-
|
1998
|
-
|
1999
|
-
|
2000
|
-
|
2001
|
-
|
2002
|
-
|
2003
|
-
|
2004
|
-
|
2005
|
-
|
2006
|
-
|
2007
|
-
|
2008
|
-
|
2009
|
-
|
2010
|
-
|
2011
|
-
|
2012
|
-
|
2013
|
-
|
2014
|
-
|
2015
|
-
|
2016
|
-
|
2017
|
-
|
2018
|
-
|
2019
|
-
|
2039
|
+
_save2 = self.pos
|
2040
|
+
while true # sequence
|
2041
|
+
_tmp = apply(:_value)
|
2042
|
+
l = @result
|
2043
|
+
unless _tmp
|
2044
|
+
self.pos = _save2
|
2045
|
+
break
|
2046
|
+
end
|
2047
|
+
_tmp = apply(:_spaces)
|
2048
|
+
unless _tmp
|
2049
|
+
self.pos = _save2
|
2050
|
+
break
|
2051
|
+
end
|
2052
|
+
_tmp = apply(:_value)
|
2053
|
+
r = @result
|
2054
|
+
unless _tmp
|
2055
|
+
self.pos = _save2
|
2056
|
+
break
|
2057
|
+
end
|
2058
|
+
@result = begin; @g.seq(l, r) ; end
|
2059
|
+
_tmp = true
|
2060
|
+
unless _tmp
|
2061
|
+
self.pos = _save2
|
2062
|
+
end
|
2063
|
+
break
|
2064
|
+
end # end sequence
|
2020
2065
|
|
2021
|
-
|
2022
|
-
|
2023
|
-
|
2024
|
-
|
2025
|
-
|
2026
|
-
|
2066
|
+
break if _tmp
|
2067
|
+
self.pos = _save
|
2068
|
+
_tmp = apply(:_value)
|
2069
|
+
break if _tmp
|
2070
|
+
self.pos = _save
|
2071
|
+
break
|
2027
2072
|
end # end choice
|
2028
2073
|
|
2029
2074
|
set_failed_rule :_values unless _tmp
|
@@ -2035,33 +2080,33 @@ class KPeg::FormatParser
|
|
2035
2080
|
|
2036
2081
|
_save = self.pos
|
2037
2082
|
while true # sequence
|
2038
|
-
|
2039
|
-
|
2040
|
-
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
|
2049
|
-
|
2050
|
-
|
2051
|
-
|
2052
|
-
|
2053
|
-
|
2054
|
-
|
2055
|
-
|
2056
|
-
|
2083
|
+
_tmp = apply(:__hyphen_)
|
2084
|
+
unless _tmp
|
2085
|
+
self.pos = _save
|
2086
|
+
break
|
2087
|
+
end
|
2088
|
+
_tmp = match_string("|")
|
2089
|
+
unless _tmp
|
2090
|
+
self.pos = _save
|
2091
|
+
break
|
2092
|
+
end
|
2093
|
+
_tmp = apply(:__hyphen_)
|
2094
|
+
unless _tmp
|
2095
|
+
self.pos = _save
|
2096
|
+
break
|
2097
|
+
end
|
2098
|
+
_tmp = apply(:_values)
|
2099
|
+
v = @result
|
2100
|
+
unless _tmp
|
2101
|
+
self.pos = _save
|
2102
|
+
break
|
2103
|
+
end
|
2104
|
+
@result = begin; v ; end
|
2105
|
+
_tmp = true
|
2106
|
+
unless _tmp
|
2107
|
+
self.pos = _save
|
2108
|
+
end
|
2057
2109
|
break
|
2058
|
-
end
|
2059
|
-
@result = begin; v ; end
|
2060
|
-
_tmp = true
|
2061
|
-
unless _tmp
|
2062
|
-
self.pos = _save
|
2063
|
-
end
|
2064
|
-
break
|
2065
2110
|
end # end sequence
|
2066
2111
|
|
2067
2112
|
set_failed_rule :_choose_cont unless _tmp
|
@@ -2074,48 +2119,48 @@ class KPeg::FormatParser
|
|
2074
2119
|
_save = self.pos
|
2075
2120
|
while true # choice
|
2076
2121
|
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2081
|
-
|
2082
|
-
|
2083
|
-
|
2084
|
-
|
2085
|
-
|
2086
|
-
|
2087
|
-
_tmp = apply(:_choose_cont)
|
2088
|
-
if _tmp
|
2089
|
-
_ary << @result
|
2090
|
-
while true
|
2122
|
+
_save1 = self.pos
|
2123
|
+
while true # sequence
|
2124
|
+
_tmp = apply(:_values)
|
2125
|
+
v = @result
|
2126
|
+
unless _tmp
|
2127
|
+
self.pos = _save1
|
2128
|
+
break
|
2129
|
+
end
|
2130
|
+
_save2 = self.pos
|
2131
|
+
_ary = []
|
2091
2132
|
_tmp = apply(:_choose_cont)
|
2092
|
-
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
|
2099
|
-
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
|
2104
|
-
|
2105
|
-
|
2106
|
-
|
2107
|
-
|
2108
|
-
|
2109
|
-
|
2110
|
-
|
2111
|
-
|
2133
|
+
if _tmp
|
2134
|
+
_ary << @result
|
2135
|
+
while true
|
2136
|
+
_tmp = apply(:_choose_cont)
|
2137
|
+
_ary << @result if _tmp
|
2138
|
+
break unless _tmp
|
2139
|
+
end
|
2140
|
+
_tmp = true
|
2141
|
+
@result = _ary
|
2142
|
+
else
|
2143
|
+
self.pos = _save2
|
2144
|
+
end
|
2145
|
+
alts = @result
|
2146
|
+
unless _tmp
|
2147
|
+
self.pos = _save1
|
2148
|
+
break
|
2149
|
+
end
|
2150
|
+
@result = begin; @g.any(v, *alts) ; end
|
2151
|
+
_tmp = true
|
2152
|
+
unless _tmp
|
2153
|
+
self.pos = _save1
|
2154
|
+
end
|
2155
|
+
break
|
2156
|
+
end # end sequence
|
2112
2157
|
|
2113
|
-
|
2114
|
-
|
2115
|
-
|
2116
|
-
|
2117
|
-
|
2118
|
-
|
2158
|
+
break if _tmp
|
2159
|
+
self.pos = _save
|
2160
|
+
_tmp = apply(:_values)
|
2161
|
+
break if _tmp
|
2162
|
+
self.pos = _save
|
2163
|
+
break
|
2119
2164
|
end # end choice
|
2120
2165
|
|
2121
2166
|
set_failed_rule :_expression unless _tmp
|
@@ -2128,75 +2173,75 @@ class KPeg::FormatParser
|
|
2128
2173
|
_save = self.pos
|
2129
2174
|
while true # choice
|
2130
2175
|
|
2131
|
-
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
|
2145
|
-
|
2146
|
-
|
2147
|
-
|
2148
|
-
|
2149
|
-
|
2150
|
-
|
2151
|
-
|
2152
|
-
|
2153
|
-
|
2154
|
-
|
2155
|
-
|
2156
|
-
|
2157
|
-
|
2158
|
-
|
2159
|
-
|
2160
|
-
|
2161
|
-
|
2162
|
-
|
2163
|
-
|
2164
|
-
|
2165
|
-
|
2166
|
-
|
2176
|
+
_save1 = self.pos
|
2177
|
+
while true # sequence
|
2178
|
+
_tmp = apply(:_args)
|
2179
|
+
a = @result
|
2180
|
+
unless _tmp
|
2181
|
+
self.pos = _save1
|
2182
|
+
break
|
2183
|
+
end
|
2184
|
+
_tmp = match_string(",")
|
2185
|
+
unless _tmp
|
2186
|
+
self.pos = _save1
|
2187
|
+
break
|
2188
|
+
end
|
2189
|
+
_tmp = apply(:__hyphen_)
|
2190
|
+
unless _tmp
|
2191
|
+
self.pos = _save1
|
2192
|
+
break
|
2193
|
+
end
|
2194
|
+
_tmp = apply(:_var)
|
2195
|
+
n = @result
|
2196
|
+
unless _tmp
|
2197
|
+
self.pos = _save1
|
2198
|
+
break
|
2199
|
+
end
|
2200
|
+
_tmp = apply(:__hyphen_)
|
2201
|
+
unless _tmp
|
2202
|
+
self.pos = _save1
|
2203
|
+
break
|
2204
|
+
end
|
2205
|
+
@result = begin; a + [n] ; end
|
2206
|
+
_tmp = true
|
2207
|
+
unless _tmp
|
2208
|
+
self.pos = _save1
|
2209
|
+
end
|
2210
|
+
break
|
2211
|
+
end # end sequence
|
2167
2212
|
|
2168
|
-
|
2169
|
-
|
2213
|
+
break if _tmp
|
2214
|
+
self.pos = _save
|
2170
2215
|
|
2171
|
-
|
2172
|
-
|
2173
|
-
|
2174
|
-
|
2175
|
-
|
2176
|
-
|
2177
|
-
|
2178
|
-
|
2179
|
-
|
2180
|
-
|
2181
|
-
|
2182
|
-
|
2183
|
-
|
2184
|
-
|
2185
|
-
|
2186
|
-
|
2187
|
-
|
2188
|
-
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2192
|
-
|
2193
|
-
|
2194
|
-
|
2195
|
-
|
2216
|
+
_save2 = self.pos
|
2217
|
+
while true # sequence
|
2218
|
+
_tmp = apply(:__hyphen_)
|
2219
|
+
unless _tmp
|
2220
|
+
self.pos = _save2
|
2221
|
+
break
|
2222
|
+
end
|
2223
|
+
_tmp = apply(:_var)
|
2224
|
+
n = @result
|
2225
|
+
unless _tmp
|
2226
|
+
self.pos = _save2
|
2227
|
+
break
|
2228
|
+
end
|
2229
|
+
_tmp = apply(:__hyphen_)
|
2230
|
+
unless _tmp
|
2231
|
+
self.pos = _save2
|
2232
|
+
break
|
2233
|
+
end
|
2234
|
+
@result = begin; [n] ; end
|
2235
|
+
_tmp = true
|
2236
|
+
unless _tmp
|
2237
|
+
self.pos = _save2
|
2238
|
+
end
|
2239
|
+
break
|
2240
|
+
end # end sequence
|
2196
2241
|
|
2197
|
-
|
2198
|
-
|
2199
|
-
|
2242
|
+
break if _tmp
|
2243
|
+
self.pos = _save
|
2244
|
+
break
|
2200
2245
|
end # end choice
|
2201
2246
|
|
2202
2247
|
set_failed_rule :_args unless _tmp
|
@@ -2209,301 +2254,301 @@ class KPeg::FormatParser
|
|
2209
2254
|
_save = self.pos
|
2210
2255
|
while true # choice
|
2211
2256
|
|
2212
|
-
|
2213
|
-
|
2214
|
-
|
2215
|
-
|
2216
|
-
|
2217
|
-
|
2218
|
-
|
2219
|
-
|
2220
|
-
|
2221
|
-
|
2222
|
-
|
2223
|
-
|
2224
|
-
|
2225
|
-
|
2226
|
-
|
2227
|
-
|
2228
|
-
|
2229
|
-
|
2230
|
-
|
2231
|
-
|
2232
|
-
|
2233
|
-
|
2234
|
-
|
2235
|
-
|
2236
|
-
|
2237
|
-
|
2238
|
-
|
2239
|
-
|
2240
|
-
|
2241
|
-
|
2242
|
-
|
2243
|
-
|
2244
|
-
|
2245
|
-
|
2246
|
-
|
2247
|
-
|
2248
|
-
|
2249
|
-
|
2250
|
-
|
2251
|
-
|
2252
|
-
|
2253
|
-
|
2254
|
-
|
2255
|
-
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2263
|
-
|
2264
|
-
|
2265
|
-
|
2266
|
-
|
2267
|
-
|
2268
|
-
|
2269
|
-
|
2270
|
-
break if _tmp
|
2271
|
-
self.pos = _save
|
2272
|
-
|
2273
|
-
_save2 = self.pos
|
2274
|
-
while true # sequence
|
2275
|
-
_tmp = apply(:__hyphen_)
|
2276
|
-
unless _tmp
|
2277
|
-
self.pos = _save2
|
2278
|
-
break
|
2279
|
-
end
|
2280
|
-
_tmp = apply(:_var)
|
2281
|
-
v = @result
|
2282
|
-
unless _tmp
|
2283
|
-
self.pos = _save2
|
2284
|
-
break
|
2285
|
-
end
|
2286
|
-
_tmp = apply(:__hyphen_)
|
2287
|
-
unless _tmp
|
2288
|
-
self.pos = _save2
|
2289
|
-
break
|
2290
|
-
end
|
2291
|
-
_tmp = match_string("=")
|
2292
|
-
unless _tmp
|
2293
|
-
self.pos = _save2
|
2294
|
-
break
|
2295
|
-
end
|
2296
|
-
_tmp = apply(:__hyphen_)
|
2297
|
-
unless _tmp
|
2298
|
-
self.pos = _save2
|
2299
|
-
break
|
2300
|
-
end
|
2301
|
-
_tmp = apply(:_expression)
|
2302
|
-
o = @result
|
2303
|
-
unless _tmp
|
2304
|
-
self.pos = _save2
|
2305
|
-
break
|
2306
|
-
end
|
2307
|
-
@result = begin; @g.set(v, o) ; end
|
2308
|
-
_tmp = true
|
2309
|
-
unless _tmp
|
2310
|
-
self.pos = _save2
|
2311
|
-
end
|
2312
|
-
break
|
2313
|
-
end # end sequence
|
2314
|
-
|
2315
|
-
break if _tmp
|
2316
|
-
self.pos = _save
|
2317
|
-
|
2318
|
-
_save3 = self.pos
|
2319
|
-
while true # sequence
|
2320
|
-
_tmp = apply(:__hyphen_)
|
2321
|
-
unless _tmp
|
2322
|
-
self.pos = _save3
|
2323
|
-
break
|
2324
|
-
end
|
2325
|
-
_tmp = match_string("%")
|
2326
|
-
unless _tmp
|
2327
|
-
self.pos = _save3
|
2328
|
-
break
|
2329
|
-
end
|
2330
|
-
_tmp = apply(:_var)
|
2331
|
-
name = @result
|
2332
|
-
unless _tmp
|
2333
|
-
self.pos = _save3
|
2334
|
-
break
|
2335
|
-
end
|
2336
|
-
_tmp = apply(:__hyphen_)
|
2337
|
-
unless _tmp
|
2338
|
-
self.pos = _save3
|
2339
|
-
break
|
2340
|
-
end
|
2341
|
-
_tmp = match_string("=")
|
2342
|
-
unless _tmp
|
2343
|
-
self.pos = _save3
|
2344
|
-
break
|
2345
|
-
end
|
2346
|
-
_tmp = apply(:__hyphen_)
|
2347
|
-
unless _tmp
|
2348
|
-
self.pos = _save3
|
2349
|
-
break
|
2350
|
-
end
|
2351
|
-
_text_start = self.pos
|
2352
|
-
_tmp = scan(/\A(?-mix:[::A-Za-z0-9_]+)/)
|
2353
|
-
if _tmp
|
2354
|
-
text = get_text(_text_start)
|
2355
|
-
end
|
2356
|
-
unless _tmp
|
2357
|
-
self.pos = _save3
|
2358
|
-
break
|
2359
|
-
end
|
2360
|
-
@result = begin; @g.add_foreign_grammar(name, text) ; end
|
2361
|
-
_tmp = true
|
2362
|
-
unless _tmp
|
2363
|
-
self.pos = _save3
|
2364
|
-
end
|
2365
|
-
break
|
2366
|
-
end # end sequence
|
2257
|
+
_save1 = self.pos
|
2258
|
+
while true # sequence
|
2259
|
+
_tmp = apply(:__hyphen_)
|
2260
|
+
unless _tmp
|
2261
|
+
self.pos = _save1
|
2262
|
+
break
|
2263
|
+
end
|
2264
|
+
_tmp = apply(:_var)
|
2265
|
+
v = @result
|
2266
|
+
unless _tmp
|
2267
|
+
self.pos = _save1
|
2268
|
+
break
|
2269
|
+
end
|
2270
|
+
_tmp = match_string("(")
|
2271
|
+
unless _tmp
|
2272
|
+
self.pos = _save1
|
2273
|
+
break
|
2274
|
+
end
|
2275
|
+
_tmp = apply(:_args)
|
2276
|
+
a = @result
|
2277
|
+
unless _tmp
|
2278
|
+
self.pos = _save1
|
2279
|
+
break
|
2280
|
+
end
|
2281
|
+
_tmp = match_string(")")
|
2282
|
+
unless _tmp
|
2283
|
+
self.pos = _save1
|
2284
|
+
break
|
2285
|
+
end
|
2286
|
+
_tmp = apply(:__hyphen_)
|
2287
|
+
unless _tmp
|
2288
|
+
self.pos = _save1
|
2289
|
+
break
|
2290
|
+
end
|
2291
|
+
_tmp = match_string("=")
|
2292
|
+
unless _tmp
|
2293
|
+
self.pos = _save1
|
2294
|
+
break
|
2295
|
+
end
|
2296
|
+
_tmp = apply(:__hyphen_)
|
2297
|
+
unless _tmp
|
2298
|
+
self.pos = _save1
|
2299
|
+
break
|
2300
|
+
end
|
2301
|
+
_tmp = apply(:_expression)
|
2302
|
+
o = @result
|
2303
|
+
unless _tmp
|
2304
|
+
self.pos = _save1
|
2305
|
+
break
|
2306
|
+
end
|
2307
|
+
@result = begin; @g.set(v, o, a) ; end
|
2308
|
+
_tmp = true
|
2309
|
+
unless _tmp
|
2310
|
+
self.pos = _save1
|
2311
|
+
end
|
2312
|
+
break
|
2313
|
+
end # end sequence
|
2367
2314
|
|
2368
|
-
|
2369
|
-
|
2315
|
+
break if _tmp
|
2316
|
+
self.pos = _save
|
2370
2317
|
|
2371
|
-
|
2372
|
-
|
2373
|
-
|
2374
|
-
|
2375
|
-
|
2376
|
-
|
2377
|
-
|
2378
|
-
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2382
|
-
|
2383
|
-
|
2384
|
-
|
2385
|
-
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
2391
|
-
|
2392
|
-
|
2393
|
-
|
2394
|
-
|
2395
|
-
|
2396
|
-
|
2397
|
-
|
2398
|
-
|
2399
|
-
|
2400
|
-
|
2318
|
+
_save2 = self.pos
|
2319
|
+
while true # sequence
|
2320
|
+
_tmp = apply(:__hyphen_)
|
2321
|
+
unless _tmp
|
2322
|
+
self.pos = _save2
|
2323
|
+
break
|
2324
|
+
end
|
2325
|
+
_tmp = apply(:_var)
|
2326
|
+
v = @result
|
2327
|
+
unless _tmp
|
2328
|
+
self.pos = _save2
|
2329
|
+
break
|
2330
|
+
end
|
2331
|
+
_tmp = apply(:__hyphen_)
|
2332
|
+
unless _tmp
|
2333
|
+
self.pos = _save2
|
2334
|
+
break
|
2335
|
+
end
|
2336
|
+
_tmp = match_string("=")
|
2337
|
+
unless _tmp
|
2338
|
+
self.pos = _save2
|
2339
|
+
break
|
2340
|
+
end
|
2341
|
+
_tmp = apply(:__hyphen_)
|
2342
|
+
unless _tmp
|
2343
|
+
self.pos = _save2
|
2344
|
+
break
|
2345
|
+
end
|
2346
|
+
_tmp = apply(:_expression)
|
2347
|
+
o = @result
|
2348
|
+
unless _tmp
|
2349
|
+
self.pos = _save2
|
2350
|
+
break
|
2351
|
+
end
|
2352
|
+
@result = begin; @g.set(v, o) ; end
|
2353
|
+
_tmp = true
|
2354
|
+
unless _tmp
|
2355
|
+
self.pos = _save2
|
2356
|
+
end
|
2357
|
+
break
|
2358
|
+
end # end sequence
|
2401
2359
|
|
2402
|
-
|
2403
|
-
|
2360
|
+
break if _tmp
|
2361
|
+
self.pos = _save
|
2404
2362
|
|
2405
|
-
|
2406
|
-
|
2407
|
-
|
2408
|
-
|
2409
|
-
|
2410
|
-
|
2411
|
-
|
2412
|
-
|
2413
|
-
|
2414
|
-
|
2415
|
-
|
2416
|
-
|
2417
|
-
|
2418
|
-
|
2419
|
-
|
2420
|
-
|
2421
|
-
|
2422
|
-
|
2423
|
-
|
2424
|
-
|
2425
|
-
|
2426
|
-
|
2427
|
-
|
2428
|
-
|
2429
|
-
|
2430
|
-
|
2431
|
-
|
2432
|
-
|
2433
|
-
|
2434
|
-
|
2435
|
-
|
2436
|
-
|
2437
|
-
|
2438
|
-
|
2439
|
-
|
2440
|
-
|
2441
|
-
|
2442
|
-
|
2443
|
-
|
2444
|
-
|
2363
|
+
_save3 = self.pos
|
2364
|
+
while true # sequence
|
2365
|
+
_tmp = apply(:__hyphen_)
|
2366
|
+
unless _tmp
|
2367
|
+
self.pos = _save3
|
2368
|
+
break
|
2369
|
+
end
|
2370
|
+
_tmp = match_string("%")
|
2371
|
+
unless _tmp
|
2372
|
+
self.pos = _save3
|
2373
|
+
break
|
2374
|
+
end
|
2375
|
+
_tmp = apply(:_var)
|
2376
|
+
name = @result
|
2377
|
+
unless _tmp
|
2378
|
+
self.pos = _save3
|
2379
|
+
break
|
2380
|
+
end
|
2381
|
+
_tmp = apply(:__hyphen_)
|
2382
|
+
unless _tmp
|
2383
|
+
self.pos = _save3
|
2384
|
+
break
|
2385
|
+
end
|
2386
|
+
_tmp = match_string("=")
|
2387
|
+
unless _tmp
|
2388
|
+
self.pos = _save3
|
2389
|
+
break
|
2390
|
+
end
|
2391
|
+
_tmp = apply(:__hyphen_)
|
2392
|
+
unless _tmp
|
2393
|
+
self.pos = _save3
|
2394
|
+
break
|
2395
|
+
end
|
2396
|
+
_text_start = self.pos
|
2397
|
+
_tmp = scan(/\A(?-mix:[::A-Za-z0-9_]+)/)
|
2398
|
+
if _tmp
|
2399
|
+
text = get_text(_text_start)
|
2400
|
+
end
|
2401
|
+
unless _tmp
|
2402
|
+
self.pos = _save3
|
2403
|
+
break
|
2404
|
+
end
|
2405
|
+
@result = begin; @g.add_foreign_grammar(name, text) ; end
|
2406
|
+
_tmp = true
|
2407
|
+
unless _tmp
|
2408
|
+
self.pos = _save3
|
2409
|
+
end
|
2410
|
+
break
|
2411
|
+
end # end sequence
|
2445
2412
|
|
2446
|
-
|
2447
|
-
|
2448
|
-
_save8 = self.pos
|
2449
|
-
_tmp = match_string("\n")
|
2450
|
-
_tmp = _tmp ? nil : true
|
2451
|
-
self.pos = _save8
|
2452
|
-
unless _tmp
|
2453
|
-
self.pos = _save7
|
2454
|
-
break
|
2455
|
-
end
|
2456
|
-
_tmp = get_byte
|
2457
|
-
unless _tmp
|
2458
|
-
self.pos = _save7
|
2459
|
-
end
|
2460
|
-
break
|
2461
|
-
end # end sequence
|
2413
|
+
break if _tmp
|
2414
|
+
self.pos = _save
|
2462
2415
|
|
2463
|
-
|
2464
|
-
while true
|
2465
|
-
|
2466
|
-
|
2467
|
-
|
2468
|
-
|
2469
|
-
|
2470
|
-
|
2471
|
-
|
2472
|
-
|
2473
|
-
|
2474
|
-
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
2481
|
-
|
2416
|
+
_save4 = self.pos
|
2417
|
+
while true # sequence
|
2418
|
+
_tmp = apply(:__hyphen_)
|
2419
|
+
unless _tmp
|
2420
|
+
self.pos = _save4
|
2421
|
+
break
|
2422
|
+
end
|
2423
|
+
_tmp = match_string("%%")
|
2424
|
+
unless _tmp
|
2425
|
+
self.pos = _save4
|
2426
|
+
break
|
2427
|
+
end
|
2428
|
+
_tmp = apply(:__hyphen_)
|
2429
|
+
unless _tmp
|
2430
|
+
self.pos = _save4
|
2431
|
+
break
|
2432
|
+
end
|
2433
|
+
_tmp = apply(:_curly)
|
2434
|
+
act = @result
|
2435
|
+
unless _tmp
|
2436
|
+
self.pos = _save4
|
2437
|
+
break
|
2438
|
+
end
|
2439
|
+
@result = begin; @g.add_setup act ; end
|
2440
|
+
_tmp = true
|
2441
|
+
unless _tmp
|
2442
|
+
self.pos = _save4
|
2443
|
+
end
|
2444
|
+
break
|
2445
|
+
end # end sequence
|
2482
2446
|
|
2483
|
-
|
2484
|
-
|
2485
|
-
_tmp = true
|
2486
|
-
else
|
2487
|
-
self.pos = _save6
|
2488
|
-
end
|
2489
|
-
if _tmp
|
2490
|
-
text = get_text(_text_start)
|
2491
|
-
end
|
2492
|
-
unless _tmp
|
2493
|
-
self.pos = _save5
|
2494
|
-
break
|
2495
|
-
end
|
2496
|
-
@result = begin; @g.set_variable(name, text) ; end
|
2497
|
-
_tmp = true
|
2498
|
-
unless _tmp
|
2499
|
-
self.pos = _save5
|
2500
|
-
end
|
2501
|
-
break
|
2502
|
-
end # end sequence
|
2447
|
+
break if _tmp
|
2448
|
+
self.pos = _save
|
2503
2449
|
|
2504
|
-
|
2505
|
-
|
2506
|
-
|
2450
|
+
_save5 = self.pos
|
2451
|
+
while true # sequence
|
2452
|
+
_tmp = apply(:__hyphen_)
|
2453
|
+
unless _tmp
|
2454
|
+
self.pos = _save5
|
2455
|
+
break
|
2456
|
+
end
|
2457
|
+
_tmp = match_string("%%")
|
2458
|
+
unless _tmp
|
2459
|
+
self.pos = _save5
|
2460
|
+
break
|
2461
|
+
end
|
2462
|
+
_tmp = apply(:__hyphen_)
|
2463
|
+
unless _tmp
|
2464
|
+
self.pos = _save5
|
2465
|
+
break
|
2466
|
+
end
|
2467
|
+
_tmp = apply(:_var)
|
2468
|
+
name = @result
|
2469
|
+
unless _tmp
|
2470
|
+
self.pos = _save5
|
2471
|
+
break
|
2472
|
+
end
|
2473
|
+
_tmp = apply(:__hyphen_)
|
2474
|
+
unless _tmp
|
2475
|
+
self.pos = _save5
|
2476
|
+
break
|
2477
|
+
end
|
2478
|
+
_tmp = match_string("=")
|
2479
|
+
unless _tmp
|
2480
|
+
self.pos = _save5
|
2481
|
+
break
|
2482
|
+
end
|
2483
|
+
_tmp = apply(:__hyphen_)
|
2484
|
+
unless _tmp
|
2485
|
+
self.pos = _save5
|
2486
|
+
break
|
2487
|
+
end
|
2488
|
+
_text_start = self.pos
|
2489
|
+
_save6 = self.pos
|
2490
|
+
|
2491
|
+
_save7 = self.pos
|
2492
|
+
while true # sequence
|
2493
|
+
_save8 = self.pos
|
2494
|
+
_tmp = match_string("\n")
|
2495
|
+
_tmp = _tmp ? nil : true
|
2496
|
+
self.pos = _save8
|
2497
|
+
unless _tmp
|
2498
|
+
self.pos = _save7
|
2499
|
+
break
|
2500
|
+
end
|
2501
|
+
_tmp = get_byte
|
2502
|
+
unless _tmp
|
2503
|
+
self.pos = _save7
|
2504
|
+
end
|
2505
|
+
break
|
2506
|
+
end # end sequence
|
2507
|
+
|
2508
|
+
if _tmp
|
2509
|
+
while true
|
2510
|
+
|
2511
|
+
_save9 = self.pos
|
2512
|
+
while true # sequence
|
2513
|
+
_save10 = self.pos
|
2514
|
+
_tmp = match_string("\n")
|
2515
|
+
_tmp = _tmp ? nil : true
|
2516
|
+
self.pos = _save10
|
2517
|
+
unless _tmp
|
2518
|
+
self.pos = _save9
|
2519
|
+
break
|
2520
|
+
end
|
2521
|
+
_tmp = get_byte
|
2522
|
+
unless _tmp
|
2523
|
+
self.pos = _save9
|
2524
|
+
end
|
2525
|
+
break
|
2526
|
+
end # end sequence
|
2527
|
+
|
2528
|
+
break unless _tmp
|
2529
|
+
end
|
2530
|
+
_tmp = true
|
2531
|
+
else
|
2532
|
+
self.pos = _save6
|
2533
|
+
end
|
2534
|
+
if _tmp
|
2535
|
+
text = get_text(_text_start)
|
2536
|
+
end
|
2537
|
+
unless _tmp
|
2538
|
+
self.pos = _save5
|
2539
|
+
break
|
2540
|
+
end
|
2541
|
+
@result = begin; @g.set_variable(name, text) ; end
|
2542
|
+
_tmp = true
|
2543
|
+
unless _tmp
|
2544
|
+
self.pos = _save5
|
2545
|
+
end
|
2546
|
+
break
|
2547
|
+
end # end sequence
|
2548
|
+
|
2549
|
+
break if _tmp
|
2550
|
+
self.pos = _save
|
2551
|
+
break
|
2507
2552
|
end # end choice
|
2508
2553
|
|
2509
2554
|
set_failed_rule :_statement unless _tmp
|
@@ -2515,35 +2560,35 @@ class KPeg::FormatParser
|
|
2515
2560
|
|
2516
2561
|
_save = self.pos
|
2517
2562
|
while true # sequence
|
2518
|
-
|
2519
|
-
|
2520
|
-
|
2521
|
-
|
2522
|
-
|
2523
|
-
|
2563
|
+
_tmp = apply(:_statement)
|
2564
|
+
unless _tmp
|
2565
|
+
self.pos = _save
|
2566
|
+
break
|
2567
|
+
end
|
2568
|
+
_save1 = self.pos
|
2569
|
+
|
2570
|
+
_save2 = self.pos
|
2571
|
+
while true # sequence
|
2572
|
+
_tmp = apply(:__hyphen_)
|
2573
|
+
unless _tmp
|
2574
|
+
self.pos = _save2
|
2575
|
+
break
|
2576
|
+
end
|
2577
|
+
_tmp = apply(:_statements)
|
2578
|
+
unless _tmp
|
2579
|
+
self.pos = _save2
|
2580
|
+
end
|
2581
|
+
break
|
2582
|
+
end # end sequence
|
2524
2583
|
|
2525
|
-
|
2526
|
-
|
2527
|
-
|
2528
|
-
|
2529
|
-
|
2584
|
+
unless _tmp
|
2585
|
+
_tmp = true
|
2586
|
+
self.pos = _save1
|
2587
|
+
end
|
2588
|
+
unless _tmp
|
2589
|
+
self.pos = _save
|
2590
|
+
end
|
2530
2591
|
break
|
2531
|
-
end
|
2532
|
-
_tmp = apply(:_statements)
|
2533
|
-
unless _tmp
|
2534
|
-
self.pos = _save2
|
2535
|
-
end
|
2536
|
-
break
|
2537
|
-
end # end sequence
|
2538
|
-
|
2539
|
-
unless _tmp
|
2540
|
-
_tmp = true
|
2541
|
-
self.pos = _save1
|
2542
|
-
end
|
2543
|
-
unless _tmp
|
2544
|
-
self.pos = _save
|
2545
|
-
end
|
2546
|
-
break
|
2547
2592
|
end # end sequence
|
2548
2593
|
|
2549
2594
|
set_failed_rule :_statements unless _tmp
|
@@ -2565,31 +2610,31 @@ class KPeg::FormatParser
|
|
2565
2610
|
|
2566
2611
|
_save = self.pos
|
2567
2612
|
while true # sequence
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2577
|
-
|
2578
|
-
|
2579
|
-
|
2580
|
-
|
2581
|
-
|
2582
|
-
|
2583
|
-
|
2584
|
-
|
2585
|
-
|
2613
|
+
_tmp = apply(:_statements)
|
2614
|
+
unless _tmp
|
2615
|
+
self.pos = _save
|
2616
|
+
break
|
2617
|
+
end
|
2618
|
+
_tmp = apply(:__hyphen_)
|
2619
|
+
unless _tmp
|
2620
|
+
self.pos = _save
|
2621
|
+
break
|
2622
|
+
end
|
2623
|
+
_save1 = self.pos
|
2624
|
+
_tmp = apply(:_eof_comment)
|
2625
|
+
unless _tmp
|
2626
|
+
_tmp = true
|
2627
|
+
self.pos = _save1
|
2628
|
+
end
|
2629
|
+
unless _tmp
|
2630
|
+
self.pos = _save
|
2631
|
+
break
|
2632
|
+
end
|
2633
|
+
_tmp = apply(:_eof)
|
2634
|
+
unless _tmp
|
2635
|
+
self.pos = _save
|
2636
|
+
end
|
2586
2637
|
break
|
2587
|
-
end
|
2588
|
-
_tmp = apply(:_eof)
|
2589
|
-
unless _tmp
|
2590
|
-
self.pos = _save
|
2591
|
-
end
|
2592
|
-
break
|
2593
2638
|
end # end sequence
|
2594
2639
|
|
2595
2640
|
set_failed_rule :_root unless _tmp
|
@@ -2601,21 +2646,21 @@ class KPeg::FormatParser
|
|
2601
2646
|
|
2602
2647
|
_save = self.pos
|
2603
2648
|
while true # sequence
|
2604
|
-
|
2605
|
-
|
2606
|
-
|
2607
|
-
|
2608
|
-
|
2609
|
-
|
2610
|
-
|
2649
|
+
_text_start = self.pos
|
2650
|
+
_tmp = scan(/\A(?-mix:[A-Z][A-Za-z0-9_]*)/)
|
2651
|
+
if _tmp
|
2652
|
+
text = get_text(_text_start)
|
2653
|
+
end
|
2654
|
+
unless _tmp
|
2655
|
+
self.pos = _save
|
2656
|
+
break
|
2657
|
+
end
|
2658
|
+
@result = begin; text ; end
|
2659
|
+
_tmp = true
|
2660
|
+
unless _tmp
|
2661
|
+
self.pos = _save
|
2662
|
+
end
|
2611
2663
|
break
|
2612
|
-
end
|
2613
|
-
@result = begin; text ; end
|
2614
|
-
_tmp = true
|
2615
|
-
unless _tmp
|
2616
|
-
self.pos = _save
|
2617
|
-
end
|
2618
|
-
break
|
2619
2664
|
end # end sequence
|
2620
2665
|
|
2621
2666
|
set_failed_rule :_ast_constant unless _tmp
|
@@ -2627,21 +2672,21 @@ class KPeg::FormatParser
|
|
2627
2672
|
|
2628
2673
|
_save = self.pos
|
2629
2674
|
while true # sequence
|
2630
|
-
|
2631
|
-
|
2632
|
-
|
2633
|
-
|
2634
|
-
|
2635
|
-
|
2636
|
-
|
2675
|
+
_text_start = self.pos
|
2676
|
+
_tmp = scan(/\A(?-mix:[A-Za-z_][A-Za-z0-9_]*)/)
|
2677
|
+
if _tmp
|
2678
|
+
text = get_text(_text_start)
|
2679
|
+
end
|
2680
|
+
unless _tmp
|
2681
|
+
self.pos = _save
|
2682
|
+
break
|
2683
|
+
end
|
2684
|
+
@result = begin; text ; end
|
2685
|
+
_tmp = true
|
2686
|
+
unless _tmp
|
2687
|
+
self.pos = _save
|
2688
|
+
end
|
2637
2689
|
break
|
2638
|
-
end
|
2639
|
-
@result = begin; text ; end
|
2640
|
-
_tmp = true
|
2641
|
-
unless _tmp
|
2642
|
-
self.pos = _save
|
2643
|
-
end
|
2644
|
-
break
|
2645
2690
|
end # end sequence
|
2646
2691
|
|
2647
2692
|
set_failed_rule :_ast_word unless _tmp
|
@@ -2652,18 +2697,18 @@ class KPeg::FormatParser
|
|
2652
2697
|
def _ast_sp
|
2653
2698
|
while true
|
2654
2699
|
|
2655
|
-
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2659
|
-
|
2660
|
-
|
2661
|
-
|
2662
|
-
|
2663
|
-
|
2664
|
-
|
2700
|
+
_save1 = self.pos
|
2701
|
+
while true # choice
|
2702
|
+
_tmp = match_string(" ")
|
2703
|
+
break if _tmp
|
2704
|
+
self.pos = _save1
|
2705
|
+
_tmp = match_string("\t")
|
2706
|
+
break if _tmp
|
2707
|
+
self.pos = _save1
|
2708
|
+
break
|
2709
|
+
end # end choice
|
2665
2710
|
|
2666
|
-
|
2711
|
+
break unless _tmp
|
2667
2712
|
end
|
2668
2713
|
_tmp = true
|
2669
2714
|
set_failed_rule :_ast_sp unless _tmp
|
@@ -2676,65 +2721,65 @@ class KPeg::FormatParser
|
|
2676
2721
|
_save = self.pos
|
2677
2722
|
while true # choice
|
2678
2723
|
|
2679
|
-
|
2680
|
-
|
2681
|
-
|
2682
|
-
|
2683
|
-
|
2684
|
-
|
2685
|
-
|
2686
|
-
|
2687
|
-
|
2688
|
-
|
2689
|
-
|
2690
|
-
|
2691
|
-
|
2692
|
-
|
2693
|
-
|
2694
|
-
|
2695
|
-
|
2696
|
-
|
2697
|
-
|
2698
|
-
|
2699
|
-
|
2700
|
-
|
2701
|
-
|
2702
|
-
|
2703
|
-
|
2704
|
-
|
2705
|
-
|
2706
|
-
|
2707
|
-
|
2708
|
-
|
2709
|
-
|
2710
|
-
|
2711
|
-
|
2712
|
-
|
2713
|
-
|
2714
|
-
|
2724
|
+
_save1 = self.pos
|
2725
|
+
while true # sequence
|
2726
|
+
_tmp = apply(:_ast_words)
|
2727
|
+
r = @result
|
2728
|
+
unless _tmp
|
2729
|
+
self.pos = _save1
|
2730
|
+
break
|
2731
|
+
end
|
2732
|
+
_tmp = apply(:_ast_sp)
|
2733
|
+
unless _tmp
|
2734
|
+
self.pos = _save1
|
2735
|
+
break
|
2736
|
+
end
|
2737
|
+
_tmp = match_string(",")
|
2738
|
+
unless _tmp
|
2739
|
+
self.pos = _save1
|
2740
|
+
break
|
2741
|
+
end
|
2742
|
+
_tmp = apply(:_ast_sp)
|
2743
|
+
unless _tmp
|
2744
|
+
self.pos = _save1
|
2745
|
+
break
|
2746
|
+
end
|
2747
|
+
_tmp = apply(:_ast_word)
|
2748
|
+
w = @result
|
2749
|
+
unless _tmp
|
2750
|
+
self.pos = _save1
|
2751
|
+
break
|
2752
|
+
end
|
2753
|
+
@result = begin; r + [w] ; end
|
2754
|
+
_tmp = true
|
2755
|
+
unless _tmp
|
2756
|
+
self.pos = _save1
|
2757
|
+
end
|
2758
|
+
break
|
2759
|
+
end # end sequence
|
2715
2760
|
|
2716
|
-
|
2717
|
-
|
2761
|
+
break if _tmp
|
2762
|
+
self.pos = _save
|
2718
2763
|
|
2719
|
-
|
2720
|
-
|
2721
|
-
|
2722
|
-
|
2723
|
-
|
2724
|
-
|
2725
|
-
|
2726
|
-
|
2727
|
-
|
2728
|
-
|
2729
|
-
|
2730
|
-
|
2731
|
-
|
2732
|
-
|
2733
|
-
|
2764
|
+
_save2 = self.pos
|
2765
|
+
while true # sequence
|
2766
|
+
_tmp = apply(:_ast_word)
|
2767
|
+
w = @result
|
2768
|
+
unless _tmp
|
2769
|
+
self.pos = _save2
|
2770
|
+
break
|
2771
|
+
end
|
2772
|
+
@result = begin; [w] ; end
|
2773
|
+
_tmp = true
|
2774
|
+
unless _tmp
|
2775
|
+
self.pos = _save2
|
2776
|
+
end
|
2777
|
+
break
|
2778
|
+
end # end sequence
|
2734
2779
|
|
2735
|
-
|
2736
|
-
|
2737
|
-
|
2780
|
+
break if _tmp
|
2781
|
+
self.pos = _save
|
2782
|
+
break
|
2738
2783
|
end # end choice
|
2739
2784
|
|
2740
2785
|
set_failed_rule :_ast_words unless _tmp
|
@@ -2747,70 +2792,70 @@ class KPeg::FormatParser
|
|
2747
2792
|
_save = self.pos
|
2748
2793
|
while true # choice
|
2749
2794
|
|
2750
|
-
|
2751
|
-
|
2752
|
-
|
2753
|
-
|
2754
|
-
|
2755
|
-
|
2756
|
-
|
2757
|
-
|
2758
|
-
|
2759
|
-
|
2760
|
-
|
2761
|
-
|
2762
|
-
|
2763
|
-
|
2764
|
-
|
2765
|
-
|
2766
|
-
|
2767
|
-
|
2768
|
-
|
2769
|
-
|
2770
|
-
|
2771
|
-
|
2772
|
-
|
2773
|
-
|
2774
|
-
|
2775
|
-
|
2776
|
-
|
2777
|
-
|
2778
|
-
|
2779
|
-
|
2780
|
-
|
2795
|
+
_save1 = self.pos
|
2796
|
+
while true # sequence
|
2797
|
+
_tmp = apply(:_ast_constant)
|
2798
|
+
c = @result
|
2799
|
+
unless _tmp
|
2800
|
+
self.pos = _save1
|
2801
|
+
break
|
2802
|
+
end
|
2803
|
+
_tmp = match_string("(")
|
2804
|
+
unless _tmp
|
2805
|
+
self.pos = _save1
|
2806
|
+
break
|
2807
|
+
end
|
2808
|
+
_tmp = apply(:_ast_words)
|
2809
|
+
w = @result
|
2810
|
+
unless _tmp
|
2811
|
+
self.pos = _save1
|
2812
|
+
break
|
2813
|
+
end
|
2814
|
+
_tmp = match_string(")")
|
2815
|
+
unless _tmp
|
2816
|
+
self.pos = _save1
|
2817
|
+
break
|
2818
|
+
end
|
2819
|
+
@result = begin; [c, w] ; end
|
2820
|
+
_tmp = true
|
2821
|
+
unless _tmp
|
2822
|
+
self.pos = _save1
|
2823
|
+
end
|
2824
|
+
break
|
2825
|
+
end # end sequence
|
2781
2826
|
|
2782
|
-
|
2783
|
-
|
2827
|
+
break if _tmp
|
2828
|
+
self.pos = _save
|
2784
2829
|
|
2785
|
-
|
2786
|
-
|
2787
|
-
|
2788
|
-
|
2789
|
-
|
2790
|
-
|
2791
|
-
|
2792
|
-
|
2793
|
-
|
2794
|
-
|
2795
|
-
|
2796
|
-
|
2797
|
-
|
2798
|
-
|
2799
|
-
|
2800
|
-
|
2801
|
-
|
2802
|
-
|
2803
|
-
|
2804
|
-
|
2805
|
-
|
2806
|
-
|
2807
|
-
|
2808
|
-
|
2809
|
-
|
2830
|
+
_save2 = self.pos
|
2831
|
+
while true # sequence
|
2832
|
+
_tmp = apply(:_ast_constant)
|
2833
|
+
c = @result
|
2834
|
+
unless _tmp
|
2835
|
+
self.pos = _save2
|
2836
|
+
break
|
2837
|
+
end
|
2838
|
+
_save3 = self.pos
|
2839
|
+
_tmp = match_string("()")
|
2840
|
+
unless _tmp
|
2841
|
+
_tmp = true
|
2842
|
+
self.pos = _save3
|
2843
|
+
end
|
2844
|
+
unless _tmp
|
2845
|
+
self.pos = _save2
|
2846
|
+
break
|
2847
|
+
end
|
2848
|
+
@result = begin; [c, []] ; end
|
2849
|
+
_tmp = true
|
2850
|
+
unless _tmp
|
2851
|
+
self.pos = _save2
|
2852
|
+
end
|
2853
|
+
break
|
2854
|
+
end # end sequence
|
2810
2855
|
|
2811
|
-
|
2812
|
-
|
2813
|
-
|
2856
|
+
break if _tmp
|
2857
|
+
self.pos = _save
|
2858
|
+
break
|
2814
2859
|
end # end choice
|
2815
2860
|
|
2816
2861
|
set_failed_rule :_ast_root unless _tmp
|
@@ -2844,9 +2889,9 @@ class KPeg::FormatParser
|
|
2844
2889
|
Rules[:_range_elem] = rule_info("range_elem", "< (range_num | kleene) > { text }")
|
2845
2890
|
Rules[:_mult_range] = rule_info("mult_range", "(\"[\" - range_elem:l - \",\" - range_elem:r - \"]\" { [l == \"*\" ? nil : l.to_i, r == \"*\" ? nil : r.to_i] } | \"[\" - range_num:e - \"]\" { [e.to_i, e.to_i] })")
|
2846
2891
|
Rules[:_curly_block] = rule_info("curly_block", "curly")
|
2847
|
-
Rules[:_curly] = rule_info("curly", "\"{\" < (/[^{}]+/ | curly)* > \"}\" { @g.action(text) }")
|
2848
|
-
Rules[:_nested_paren] = rule_info("nested_paren", "\"(\" (/[^()]+/ | nested_paren)* \")\"")
|
2849
|
-
Rules[:_value] = rule_info("value", "(value:v \":\" var:n { @g.t(v,n) } | value:v \"?\" { @g.maybe(v) } | value:v \"+\" { @g.many(v) } | value:v \"*\" { @g.kleene(v) } | value:v mult_range:r { @g.multiple(v, *r) } | \"&\" value:v { @g.andp(v) } | \"!\" value:v { @g.notp(v) } | \"(\" - expression:o - \")\" { o } | \"<\" - expression:o - \">\" { @g.collect(o) } | curly_block | \"~\" method:m < nested_paren? > { @g.action(\"\#{m}\#{text}\") } | \".\" { @g.dot } | \"@\" var:name !(- \"=\") { @g.invoke(name) } | \"^\" var:name < nested_paren? > { @g.foreign_invoke(\"parent\", name, text) } | \"%\" var:gram \".\" var:name < nested_paren? > { @g.foreign_invoke(gram, name, text) } | var:name < nested_paren? > !(- \"=\") { text.empty? ? @g.ref(name) : @g.invoke(name, text) } | char_range | regexp | string)")
|
2892
|
+
Rules[:_curly] = rule_info("curly", "\"{\" < (/[^{}\"']+/ | string | curly)* > \"}\" { @g.action(text) }")
|
2893
|
+
Rules[:_nested_paren] = rule_info("nested_paren", "\"(\" (/[^()\"']+/ | string | nested_paren)* \")\"")
|
2894
|
+
Rules[:_value] = rule_info("value", "(value:v \":\" var:n { @g.t(v,n) } | value:v \"?\" { @g.maybe(v) } | value:v \"+\" { @g.many(v) } | value:v \"*\" { @g.kleene(v) } | value:v mult_range:r { @g.multiple(v, *r) } | \"&\" value:v { @g.andp(v) } | \"!\" value:v { @g.notp(v) } | \"(\" - expression:o - \")\" { o } | \"@<\" - expression:o - \">\" { @g.bounds(o) } | \"<\" - expression:o - \">\" { @g.collect(o) } | curly_block | \"~\" method:m < nested_paren? > { @g.action(\"\#{m}\#{text}\") } | \".\" { @g.dot } | \"@\" var:name !(- \"=\") { @g.invoke(name) } | \"^\" var:name < nested_paren? > { @g.foreign_invoke(\"parent\", name, text) } | \"%\" var:gram \".\" var:name < nested_paren? > { @g.foreign_invoke(gram, name, text) } | var:name < nested_paren? > !(- \"=\") { text.empty? ? @g.ref(name) : @g.invoke(name, text) } | char_range | regexp | string)")
|
2850
2895
|
Rules[:_spaces] = rule_info("spaces", "(space | comment)+")
|
2851
2896
|
Rules[:_values] = rule_info("values", "(values:s spaces value:v { @g.seq(s, v) } | value:l spaces value:r { @g.seq(l, r) } | value)")
|
2852
2897
|
Rules[:_choose_cont] = rule_info("choose_cont", "- \"|\" - values:v { v }")
|