lrama 0.5.8 → 0.5.9

Sign up to get free protection for your applications and to get access to all the features.
data/lib/lrama/parser.rb CHANGED
@@ -1,14 +1,13 @@
1
1
  #
2
2
  # DO NOT MODIFY!!!!
3
- # This file is automatically generated by Racc 1.7.1
4
- # from Racc grammar file "".
3
+ # This file is automatically generated by Racc 1.7.3
4
+ # from Racc grammar file "parser.y".
5
5
  #
6
6
 
7
7
  ###### racc/parser.rb begin
8
8
  unless $".find {|p| p.end_with?('/racc/parser.rb')}
9
9
  $".push "#{__dir__}/racc/parser.rb"
10
10
  self.class.module_eval(<<'...end racc/parser.rb/module_eval...', 'racc/parser.rb', 1)
11
- # frozen_string_literal: false
12
11
  #--
13
12
  # Copyright (c) 1999-2006 Minero Aoki
14
13
  #
@@ -22,20 +21,9 @@ self.class.module_eval(<<'...end racc/parser.rb/module_eval...', 'racc/parser.rb
22
21
 
23
22
  unless $".find {|p| p.end_with?('/racc/info.rb')}
24
23
  $".push "#{__dir__}/racc/info.rb"
25
- #--
26
- #
27
- #
28
- #
29
- # Copyright (c) 1999-2006 Minero Aoki
30
- #
31
- # This program is free software.
32
- # You can distribute/modify this program under the same terms of ruby.
33
- # see the file "COPYING".
34
- #
35
- #++
36
24
 
37
25
  module Racc
38
- VERSION = '1.7.1'
26
+ VERSION = '1.7.3'
39
27
  Version = VERSION
40
28
  Copyright = 'Copyright (c) 1999-2006 Minero Aoki'
41
29
  end
@@ -84,10 +72,12 @@ end
84
72
  # [-v, --verbose]
85
73
  # verbose mode. create +filename+.output file, like yacc's y.output file.
86
74
  # [-g, --debug]
87
- # add debug code to parser class. To display debuggin information,
75
+ # add debug code to parser class. To display debugging information,
88
76
  # use this '-g' option and set @yydebug true in parser class.
89
77
  # [-E, --embedded]
90
78
  # Output parser which doesn't need runtime files (racc/parser.rb).
79
+ # [-F, --frozen]
80
+ # Output parser which declares frozen_string_literals: true
91
81
  # [-C, --check-only]
92
82
  # Check syntax of racc grammar file and quit.
93
83
  # [-S, --output-status]
@@ -566,7 +556,7 @@ module Racc
566
556
  #
567
557
  # If this method returns, parsers enter "error recovering mode".
568
558
  def on_error(t, val, vstack)
569
- raise ParseError, sprintf("\nparse error on value %s (%s)",
559
+ raise ParseError, sprintf("parse error on value %s (%s)",
570
560
  val.inspect, token_to_str(t) || '?')
571
561
  end
572
562
 
@@ -668,13 +658,14 @@ end
668
658
  module Lrama
669
659
  class Parser < Racc::Parser
670
660
 
671
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 388)
661
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 383)
672
662
 
673
663
  include Lrama::Report::Duration
674
664
 
675
- def initialize(text, path)
665
+ def initialize(text, path, debug = false)
676
666
  @text = text
677
667
  @path = path
668
+ @yydebug = debug
678
669
  end
679
670
 
680
671
  def parse
@@ -682,8 +673,8 @@ def parse
682
673
  @lexer = Lrama::Lexer.new(@text)
683
674
  @grammar = Lrama::Grammar.new
684
675
  @precedence_number = 0
676
+ reset_precs
685
677
  do_parse
686
- @grammar.extract_references
687
678
  @grammar.prepare
688
679
  @grammar.compute_nullable
689
680
  @grammar.compute_first_set
@@ -697,253 +688,287 @@ def next_token
697
688
  end
698
689
 
699
690
  def on_error(error_token_id, error_value, value_stack)
700
- source = @text.split("\n")[error_value.line - 1]
691
+ if error_value.respond_to?(:line) && error_value.respond_to?(:column)
692
+ line = error_value.line
693
+ first_column = error_value.column
694
+ else
695
+ line = @lexer.line
696
+ first_column = @lexer.head_column
697
+ end
698
+
701
699
  raise ParseError, <<~ERROR
702
- #{@path}:#{@lexer.line}:#{@lexer.column}: parse error on value #{error_value.inspect} (#{token_to_str(error_token_id) || '?'})
703
- #{source}
704
- #{' ' * @lexer.column}^
700
+ #{@path}:#{line}:#{first_column}: parse error on value #{error_value.inspect} (#{token_to_str(error_token_id) || '?'})
701
+ #{@text.split("\n")[line - 1]}
702
+ #{carrets(first_column)}
705
703
  ERROR
706
704
  end
705
+
706
+ private
707
+
708
+ def reset_precs
709
+ @prec_seen = false
710
+ @code_after_prec = false
711
+ end
712
+
713
+ def begin_c_declaration(end_symbol)
714
+ @lexer.status = :c_declaration
715
+ @lexer.end_symbol = end_symbol
716
+ end
717
+
718
+ def end_c_declaration
719
+ @lexer.status = :initial
720
+ @lexer.end_symbol = nil
721
+ end
722
+
723
+ def carrets(first_column)
724
+ ' ' * (first_column + 1) + '^' * (@lexer.column - first_column)
725
+ end
707
726
  ...end parser.y/module_eval...
708
727
  ##### State transition tables begin ###
709
728
 
710
729
  racc_action_table = [
711
- 82, 132, 83, 42, 42, 41, 41, 65, 65, 42,
712
- 42, 41, 41, 131, 56, 68, 3, 8, 38, 134,
713
- 134, 42, 42, 41, 41, 65, 61, 68, 38, 6,
714
- 32, 7, 84, 77, 135, 135, 20, 22, 23, 24,
715
- 25, 26, 27, 28, 29, 30, 20, 22, 23, 24,
716
- 25, 26, 27, 28, 29, 30, 9, 39, 44, 14,
717
- 12, 13, 15, 16, 17, 18, 46, 46, 19, 20,
718
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 42,
719
- 42, 41, 41, 46, 68, 68, 42, 42, 41, 41,
720
- 65, 153, 42, 42, 41, 41, 65, 153, 42, 42,
721
- 41, 41, 65, 153, 42, 42, 41, 41, 65, 153,
722
- 42, 42, 41, 41, 65, 153, 42, 42, 41, 41,
723
- 65, 153, 42, 42, 41, 41, 65, 65, 42, 42,
724
- 41, 41, 65, 65, 42, 42, 41, 41, 65, 65,
725
- 42, 42, 41, 41, 42, 42, 41, 41, 42, 42,
726
- 41, 41, 42, 42, 41, 41, 49, 50, 51, 52,
727
- 53, 74, 78, 80, 85, 85, 85, 92, 96, 97,
728
- 105, 106, 108, 109, 110, 111, 112, 113, 116, 118,
729
- 119, 122, 123, 124, 138, 139, 140, 141, 142, 143,
730
- 122, 80, 148, 149, 156, 160, 161, 80, 80 ]
730
+ 84, 137, 85, 3, 6, 43, 7, 42, 39, 67,
731
+ 43, 8, 42, 136, 67, 43, 43, 42, 42, 33,
732
+ 58, 142, 43, 43, 42, 42, 142, 21, 23, 24,
733
+ 25, 26, 27, 28, 29, 30, 31, 86, 139, 140,
734
+ 141, 143, 39, 139, 140, 141, 143, 79, 43, 43,
735
+ 42, 42, 67, 63, 70, 43, 43, 42, 42, 40,
736
+ 70, 21, 23, 24, 25, 26, 27, 28, 29, 30,
737
+ 31, 9, 45, 47, 14, 12, 13, 15, 16, 17,
738
+ 18, 47, 47, 19, 20, 21, 23, 24, 25, 26,
739
+ 27, 28, 29, 30, 31, 43, 43, 42, 42, 50,
740
+ 70, 70, 43, 43, 42, 42, 67, 161, 43, 43,
741
+ 42, 42, 67, 161, 43, 43, 42, 42, 67, 161,
742
+ 43, 43, 42, 42, 67, 161, 43, 43, 42, 42,
743
+ 67, 161, 43, 43, 42, 42, 67, 161, 43, 43,
744
+ 42, 42, 67, 67, 43, 43, 42, 42, 67, 67,
745
+ 43, 43, 42, 42, 67, 67, 43, 43, 42, 42,
746
+ 43, 43, 42, 42, 51, 52, 53, 54, 55, 76,
747
+ 80, 82, 87, 87, 87, 89, 95, 99, 100, 108,
748
+ 109, 111, 113, 114, 115, 116, 117, 120, 122, 123,
749
+ 126, 127, 128, 130, 145, 147, 148, 149, 150, 151,
750
+ 126, 82, 156, 157, 164, 167, 82 ]
731
751
 
732
752
  racc_action_check = [
733
- 40, 120, 40, 121, 144, 121, 144, 121, 144, 25,
734
- 27, 25, 27, 120, 25, 27, 1, 3, 9, 121,
735
- 144, 26, 28, 26, 28, 26, 26, 28, 33, 2,
736
- 7, 2, 40, 33, 121, 144, 9, 9, 9, 9,
737
- 9, 9, 9, 9, 9, 9, 33, 33, 33, 33,
738
- 33, 33, 33, 33, 33, 33, 4, 12, 14, 4,
739
- 4, 4, 4, 4, 4, 4, 15, 16, 4, 4,
740
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 29,
741
- 30, 29, 30, 17, 29, 30, 141, 13, 141, 13,
742
- 141, 141, 142, 55, 142, 55, 142, 142, 143, 56,
743
- 143, 56, 143, 143, 150, 66, 150, 66, 150, 150,
744
- 154, 67, 154, 67, 154, 154, 155, 68, 155, 68,
745
- 155, 155, 60, 61, 60, 61, 60, 61, 97, 99,
746
- 97, 99, 97, 99, 117, 135, 117, 135, 117, 135,
747
- 71, 72, 71, 72, 73, 92, 73, 92, 94, 100,
748
- 94, 100, 102, 114, 102, 114, 18, 20, 22, 23,
749
- 24, 31, 36, 37, 45, 47, 48, 54, 58, 59,
750
- 79, 80, 86, 87, 88, 89, 90, 91, 95, 103,
751
- 104, 105, 106, 107, 125, 126, 127, 128, 129, 130,
752
- 131, 133, 136, 137, 146, 157, 159, 160, 161 ]
753
+ 41, 124, 41, 1, 2, 125, 2, 125, 9, 125,
754
+ 152, 3, 152, 124, 152, 26, 13, 26, 13, 7,
755
+ 26, 125, 57, 58, 57, 58, 152, 9, 9, 9,
756
+ 9, 9, 9, 9, 9, 9, 9, 41, 125, 125,
757
+ 125, 125, 34, 152, 152, 152, 152, 34, 27, 28,
758
+ 27, 28, 27, 27, 28, 29, 68, 29, 68, 12,
759
+ 29, 34, 34, 34, 34, 34, 34, 34, 34, 34,
760
+ 34, 4, 14, 15, 4, 4, 4, 4, 4, 4,
761
+ 4, 16, 17, 4, 4, 4, 4, 4, 4, 4,
762
+ 4, 4, 4, 4, 4, 30, 31, 30, 31, 18,
763
+ 30, 31, 149, 69, 149, 69, 149, 149, 150, 70,
764
+ 150, 70, 150, 150, 151, 73, 151, 73, 151, 151,
765
+ 158, 74, 158, 74, 158, 158, 162, 75, 162, 75,
766
+ 162, 162, 163, 95, 163, 95, 163, 163, 62, 63,
767
+ 62, 63, 62, 63, 100, 102, 100, 102, 100, 102,
768
+ 121, 143, 121, 143, 121, 143, 97, 103, 97, 103,
769
+ 105, 118, 105, 118, 19, 21, 23, 24, 25, 32,
770
+ 37, 38, 46, 48, 49, 50, 56, 60, 61, 81,
771
+ 82, 88, 90, 91, 92, 93, 94, 98, 106, 107,
772
+ 108, 109, 110, 112, 129, 131, 132, 133, 134, 135,
773
+ 136, 138, 144, 146, 154, 166, 167 ]
753
774
 
754
775
  racc_action_pointer = [
755
- nil, 16, 19, 17, 47, nil, nil, 23, nil, 14,
756
- nil, nil, 51, 84, 51, 47, 48, 64, 137, nil,
757
- 138, nil, 139, 140, 141, 6, 18, 7, 19, 76,
758
- 77, 159, nil, 24, nil, nil, 141, 128, nil, nil,
759
- -5, nil, nil, nil, nil, 145, nil, 146, 147, nil,
760
- nil, nil, nil, nil, 159, 90, 96, nil, 162, 161,
761
- 119, 120, nil, nil, nil, nil, 102, 108, 114, nil,
762
- nil, 137, 138, 141, nil, nil, nil, nil, nil, 138,
763
- 166, nil, nil, nil, nil, nil, 170, 171, 172, 173,
764
- 174, 175, 142, nil, 145, 171, nil, 125, nil, 126,
765
- 146, nil, 149, 168, 178, 162, 146, 181, nil, nil,
766
- nil, nil, nil, nil, 150, nil, nil, 131, nil, nil,
767
- -20, 0, nil, nil, nil, 164, 165, 166, 167, 168,
768
- 169, 171, nil, 156, nil, 132, 190, 173, nil, nil,
769
- nil, 83, 89, 95, 1, nil, 192, nil, nil, nil,
770
- 101, nil, nil, nil, 107, 113, nil, 175, nil, 176,
771
- 162, 163, nil, nil ]
776
+ nil, 3, -6, 11, 62, nil, nil, 12, nil, 4,
777
+ nil, nil, 53, 13, 65, 54, 62, 63, 94, 145,
778
+ nil, 146, nil, 147, 148, 149, 12, 45, 46, 52,
779
+ 92, 93, 167, nil, 38, nil, nil, 148, 131, nil,
780
+ nil, -5, nil, nil, nil, nil, 153, nil, 154, 155,
781
+ 156, nil, nil, nil, nil, nil, 168, 19, 20, nil,
782
+ 171, 170, 135, 136, nil, nil, nil, nil, 53, 100,
783
+ 106, nil, nil, 112, 118, 124, nil, nil, nil, nil,
784
+ nil, 146, 175, nil, nil, nil, nil, nil, 179, nil,
785
+ 180, 181, 182, 183, 184, 130, nil, 153, 180, nil,
786
+ 141, nil, 142, 154, nil, 157, 177, 187, 155, 150,
787
+ 190, nil, 191, nil, nil, nil, nil, nil, 158, nil,
788
+ nil, 147, nil, nil, -21, 2, nil, nil, nil, 174,
789
+ nil, 175, 176, 177, 178, 179, 165, nil, 161, nil,
790
+ nil, nil, nil, 148, 182, nil, 183, nil, nil, 99,
791
+ 105, 111, 7, nil, 202, nil, nil, nil, 117, nil,
792
+ nil, nil, 123, 129, nil, nil, 185, 166, nil ]
772
793
 
773
794
  racc_action_default = [
774
- -2, -104, -8, -104, -104, -3, -4, -104, 164, -104,
775
- -9, -10, -104, -104, -104, -104, -104, -104, -104, -20,
776
- -104, -24, -104, -104, -104, -104, -104, -104, -104, -104,
777
- -104, -104, -7, -91, -71, -73, -104, -88, -90, -11,
778
- -95, -69, -70, -94, -13, -14, -60, -15, -16, -17,
779
- -21, -25, -28, -31, -34, -40, -104, -43, -46, -35,
780
- -50, -104, -53, -55, -56, -103, -36, -63, -104, -66,
781
- -68, -37, -38, -39, -5, -1, -72, -92, -74, -104,
782
- -104, -12, -96, -97, -98, -57, -104, -104, -104, -104,
783
- -104, -104, -104, -44, -41, -48, -47, -104, -54, -51,
784
- -65, -67, -64, -104, -104, -79, -104, -104, -61, -18,
785
- -22, -26, -29, -32, -42, -45, -49, -52, -6, -93,
786
- -75, -76, -84, -89, -58, -104, -104, -104, -104, -104,
787
- -104, -79, -78, -88, -81, -104, -104, -104, -62, -19,
788
- -23, -104, -104, -104, -77, -80, -104, -87, -85, -59,
789
- -27, -99, -101, -102, -30, -33, -82, -104, -100, -104,
790
- -88, -88, -86, -83 ]
795
+ -2, -108, -8, -108, -108, -3, -4, -108, 169, -108,
796
+ -9, -10, -108, -108, -108, -108, -108, -108, -108, -108,
797
+ -23, -108, -27, -108, -108, -108, -108, -108, -108, -108,
798
+ -108, -108, -108, -7, -95, -74, -76, -108, -92, -94,
799
+ -11, -99, -72, -73, -98, -13, -14, -63, -15, -16,
800
+ -108, -20, -24, -28, -31, -34, -37, -43, -108, -46,
801
+ -49, -38, -53, -108, -56, -58, -59, -107, -39, -66,
802
+ -108, -69, -71, -40, -41, -42, -5, -1, -75, -96,
803
+ -77, -108, -108, -12, -100, -101, -102, -60, -108, -17,
804
+ -108, -108, -108, -108, -108, -108, -47, -44, -51, -50,
805
+ -108, -57, -54, -68, -70, -67, -108, -108, -82, -108,
806
+ -108, -64, -108, -21, -25, -29, -32, -35, -45, -48,
807
+ -52, -55, -6, -97, -78, -79, -83, -93, -61, -108,
808
+ -18, -108, -108, -108, -108, -108, -82, -81, -92, -85,
809
+ -86, -87, -88, -108, -108, -65, -108, -22, -26, -108,
810
+ -108, -108, -80, -84, -108, -91, -62, -19, -30, -103,
811
+ -105, -106, -33, -36, -89, -104, -108, -92, -90 ]
791
812
 
792
813
  racc_goto_table = [
793
- 79, 43, 62, 60, 55, 121, 93, 101, 34, 66,
794
- 71, 72, 73, 58, 1, 70, 70, 70, 70, 100,
795
- 2, 102, 4, 158, 100, 100, 100, 158, 158, 33,
796
- 75, 144, 76, 5, 31, 94, 98, 62, 99, 103,
797
- 101, 10, 101, 58, 58, 93, 45, 47, 48, 150,
798
- 154, 155, 11, 40, 70, 70, 70, 81, 87, 70,
799
- 70, 70, 126, 88, 127, 93, 89, 128, 90, 129,
800
- 91, 114, 130, 62, 117, 98, 54, 59, 95, 115,
801
- 58, 107, 58, 137, 86, 125, 120, 146, 70, 159,
802
- 70, 136, 157, 98, 104, nil, 145, 133, nil, nil,
803
- nil, nil, 58, nil, nil, nil, nil, nil, nil, nil,
804
- nil, 147, nil, nil, nil, nil, nil, nil, nil, nil,
805
- 133, nil, nil, 162, 163 ]
814
+ 81, 64, 44, 57, 62, 96, 125, 104, 35, 165,
815
+ 46, 48, 49, 165, 165, 60, 1, 72, 72, 72,
816
+ 72, 103, 2, 105, 4, 34, 103, 103, 103, 68,
817
+ 73, 74, 75, 78, 152, 97, 101, 64, 77, 5,
818
+ 102, 104, 32, 104, 106, 96, 60, 60, 158, 162,
819
+ 163, 10, 11, 41, 83, 112, 146, 72, 72, 72,
820
+ 90, 131, 72, 72, 72, 91, 96, 132, 92, 133,
821
+ 93, 134, 118, 94, 64, 135, 101, 121, 56, 61,
822
+ 98, 119, 110, 144, 60, 88, 60, 129, 124, 154,
823
+ 166, 107, 72, nil, 72, 101, nil, nil, nil, 138,
824
+ 153, nil, nil, nil, nil, nil, nil, 60, nil, nil,
825
+ nil, nil, nil, nil, nil, nil, nil, 155, nil, nil,
826
+ nil, nil, nil, nil, nil, nil, 138, nil, nil, 168 ]
806
827
 
807
828
  racc_goto_check = [
808
- 46, 31, 35, 34, 29, 48, 30, 42, 43, 28,
809
- 28, 28, 28, 31, 1, 31, 31, 31, 31, 41,
810
- 2, 41, 3, 54, 41, 41, 41, 54, 54, 4,
811
- 5, 48, 43, 6, 7, 29, 35, 35, 34, 8,
812
- 42, 9, 42, 31, 31, 30, 13, 13, 13, 17,
813
- 17, 17, 10, 11, 31, 31, 31, 12, 14, 31,
814
- 31, 31, 15, 18, 19, 30, 20, 21, 22, 23,
815
- 24, 29, 25, 35, 34, 35, 26, 27, 32, 33,
816
- 31, 37, 31, 38, 39, 40, 47, 49, 31, 50,
817
- 31, 51, 52, 35, 53, nil, 46, 35, nil, nil,
818
- nil, nil, 31, nil, nil, nil, nil, nil, nil, nil,
819
- nil, 35, nil, nil, nil, nil, nil, nil, nil, nil,
820
- 35, nil, nil, 46, 46 ]
829
+ 48, 37, 33, 31, 36, 32, 50, 44, 45, 54,
830
+ 13, 13, 13, 54, 54, 33, 1, 33, 33, 33,
831
+ 33, 43, 2, 43, 3, 4, 43, 43, 43, 30,
832
+ 30, 30, 30, 45, 50, 31, 37, 37, 5, 6,
833
+ 36, 44, 7, 44, 8, 32, 33, 33, 19, 19,
834
+ 19, 9, 10, 11, 12, 14, 15, 33, 33, 33,
835
+ 16, 17, 33, 33, 33, 20, 32, 21, 22, 23,
836
+ 24, 25, 31, 26, 37, 27, 37, 36, 28, 29,
837
+ 34, 35, 39, 40, 33, 41, 33, 42, 49, 51,
838
+ 52, 53, 33, nil, 33, 37, nil, nil, nil, 37,
839
+ 48, nil, nil, nil, nil, nil, nil, 33, nil, nil,
840
+ nil, nil, nil, nil, nil, nil, nil, 37, nil, nil,
841
+ nil, nil, nil, nil, nil, nil, 37, nil, nil, 48 ]
821
842
 
822
843
  racc_goto_pointer = [
823
- nil, 14, 20, 20, 20, -3, 31, 28, -35, 37,
824
- 48, 40, 17, 31, 9, -47, nil, -92, 13, -46,
825
- 15, -44, 16, -43, 17, -41, 51, 51, -18, -21,
826
- -49, -12, 20, -16, -23, -24, nil, -4, -41, 38,
827
- -23, -47, -60, -1, nil, nil, -37, -19, -100, -47,
828
- -67, -31, -56, 17, -127 ]
844
+ nil, 16, 22, 22, 16, 4, 37, 36, -32, 47,
845
+ 48, 40, 13, -5, -34, -74, 9, -52, nil, -101,
846
+ 13, -47, 15, -46, 16, -45, 18, -42, 52, 52,
847
+ 1, -23, -52, -11, 20, -17, -23, -26, nil, -5,
848
+ -45, 38, -24, -47, -62, -1, nil, nil, -38, -20,
849
+ -102, -53, -74, 12, -149 ]
829
850
 
830
851
  racc_goto_default = [
831
852
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
832
- 36, nil, nil, nil, nil, nil, 21, nil, nil, nil,
853
+ 37, nil, nil, nil, nil, nil, nil, nil, 22, nil,
833
854
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
834
- 57, 63, nil, nil, nil, 152, 64, nil, nil, nil,
835
- nil, 67, 69, nil, 35, 37, nil, nil, nil, nil,
836
- nil, nil, nil, nil, 151 ]
855
+ nil, nil, 59, 65, nil, nil, nil, 160, 66, nil,
856
+ nil, nil, nil, 69, 71, nil, 36, 38, nil, nil,
857
+ nil, nil, nil, nil, 159 ]
837
858
 
838
859
  racc_reduce_table = [
839
860
  0, 0, :racc_error,
840
- 5, 39, :_reduce_none,
841
- 0, 40, :_reduce_none,
842
- 2, 40, :_reduce_none,
843
- 0, 45, :_reduce_4,
844
- 0, 46, :_reduce_5,
845
- 5, 44, :_reduce_6,
846
- 2, 44, :_reduce_none,
847
- 0, 41, :_reduce_8,
848
- 2, 41, :_reduce_none,
849
- 1, 47, :_reduce_none,
850
- 2, 47, :_reduce_11,
851
- 3, 47, :_reduce_none,
852
- 2, 47, :_reduce_none,
853
- 2, 47, :_reduce_none,
854
- 2, 47, :_reduce_15,
855
- 2, 47, :_reduce_16,
856
- 0, 52, :_reduce_17,
857
- 0, 53, :_reduce_18,
858
- 6, 47, :_reduce_19,
859
- 1, 47, :_reduce_none,
860
- 0, 56, :_reduce_21,
861
- 0, 57, :_reduce_22,
862
- 6, 48, :_reduce_23,
863
- 1, 48, :_reduce_none,
864
- 0, 58, :_reduce_25,
865
- 0, 59, :_reduce_26,
866
- 7, 48, :_reduce_none,
867
- 0, 60, :_reduce_28,
868
- 0, 61, :_reduce_29,
869
- 7, 48, :_reduce_30,
870
- 0, 62, :_reduce_31,
871
- 0, 63, :_reduce_32,
872
- 7, 48, :_reduce_33,
873
- 2, 54, :_reduce_none,
874
- 2, 54, :_reduce_35,
875
- 2, 54, :_reduce_36,
876
- 2, 54, :_reduce_37,
877
- 2, 54, :_reduce_38,
878
- 2, 54, :_reduce_39,
879
- 1, 64, :_reduce_40,
880
- 2, 64, :_reduce_41,
881
- 3, 64, :_reduce_42,
882
- 1, 67, :_reduce_43,
883
- 2, 67, :_reduce_44,
884
- 3, 68, :_reduce_45,
885
- 0, 70, :_reduce_none,
886
- 1, 70, :_reduce_none,
887
- 0, 71, :_reduce_none,
888
- 1, 71, :_reduce_none,
889
- 1, 65, :_reduce_50,
890
- 2, 65, :_reduce_51,
891
- 3, 65, :_reduce_52,
861
+ 5, 44, :_reduce_none,
862
+ 0, 45, :_reduce_none,
863
+ 2, 45, :_reduce_none,
864
+ 0, 50, :_reduce_4,
865
+ 0, 51, :_reduce_5,
866
+ 5, 49, :_reduce_6,
867
+ 2, 49, :_reduce_none,
868
+ 0, 46, :_reduce_8,
869
+ 2, 46, :_reduce_none,
870
+ 1, 52, :_reduce_none,
871
+ 2, 52, :_reduce_11,
872
+ 3, 52, :_reduce_none,
873
+ 2, 52, :_reduce_none,
874
+ 2, 52, :_reduce_none,
875
+ 2, 52, :_reduce_15,
876
+ 2, 52, :_reduce_16,
877
+ 0, 57, :_reduce_17,
878
+ 0, 58, :_reduce_18,
879
+ 7, 52, :_reduce_19,
880
+ 0, 59, :_reduce_20,
881
+ 0, 60, :_reduce_21,
882
+ 6, 52, :_reduce_22,
883
+ 1, 52, :_reduce_none,
884
+ 0, 63, :_reduce_24,
885
+ 0, 64, :_reduce_25,
886
+ 6, 53, :_reduce_26,
887
+ 1, 53, :_reduce_none,
888
+ 0, 65, :_reduce_28,
889
+ 0, 66, :_reduce_29,
890
+ 7, 53, :_reduce_none,
891
+ 0, 67, :_reduce_31,
892
+ 0, 68, :_reduce_32,
893
+ 7, 53, :_reduce_33,
894
+ 0, 69, :_reduce_34,
895
+ 0, 70, :_reduce_35,
896
+ 7, 53, :_reduce_36,
897
+ 2, 61, :_reduce_none,
898
+ 2, 61, :_reduce_38,
899
+ 2, 61, :_reduce_39,
900
+ 2, 61, :_reduce_40,
901
+ 2, 61, :_reduce_41,
902
+ 2, 61, :_reduce_42,
903
+ 1, 71, :_reduce_43,
904
+ 2, 71, :_reduce_44,
905
+ 3, 71, :_reduce_45,
906
+ 1, 74, :_reduce_46,
907
+ 2, 74, :_reduce_47,
908
+ 3, 75, :_reduce_48,
909
+ 0, 77, :_reduce_none,
910
+ 1, 77, :_reduce_none,
911
+ 0, 78, :_reduce_none,
912
+ 1, 78, :_reduce_none,
892
913
  1, 72, :_reduce_53,
893
914
  2, 72, :_reduce_54,
894
- 1, 73, :_reduce_none,
895
- 1, 73, :_reduce_none,
896
- 0, 75, :_reduce_57,
897
- 0, 76, :_reduce_58,
898
- 6, 51, :_reduce_59,
899
- 0, 77, :_reduce_60,
900
- 0, 78, :_reduce_61,
901
- 5, 51, :_reduce_62,
902
- 1, 66, :_reduce_63,
903
- 2, 66, :_reduce_64,
904
- 2, 66, :_reduce_65,
905
- 1, 79, :_reduce_66,
906
- 2, 79, :_reduce_67,
915
+ 3, 72, :_reduce_55,
916
+ 1, 79, :_reduce_56,
917
+ 2, 79, :_reduce_57,
907
918
  1, 80, :_reduce_none,
908
- 1, 69, :_reduce_69,
909
- 1, 69, :_reduce_70,
910
- 1, 42, :_reduce_none,
911
- 2, 42, :_reduce_none,
912
- 1, 81, :_reduce_none,
913
- 2, 81, :_reduce_none,
914
- 4, 82, :_reduce_75,
915
- 1, 85, :_reduce_76,
916
- 3, 85, :_reduce_77,
917
- 2, 85, :_reduce_none,
918
- 0, 86, :_reduce_79,
919
- 3, 86, :_reduce_80,
920
- 0, 87, :_reduce_81,
921
- 0, 88, :_reduce_82,
922
- 7, 86, :_reduce_83,
923
- 0, 89, :_reduce_84,
924
- 0, 90, :_reduce_85,
925
- 6, 86, :_reduce_86,
926
- 3, 86, :_reduce_87,
927
- 0, 84, :_reduce_none,
928
- 3, 84, :_reduce_89,
929
- 1, 83, :_reduce_none,
930
- 0, 43, :_reduce_none,
931
- 0, 91, :_reduce_92,
932
- 3, 43, :_reduce_93,
933
- 1, 49, :_reduce_none,
934
- 0, 50, :_reduce_none,
935
- 1, 50, :_reduce_none,
936
- 1, 50, :_reduce_none,
937
- 1, 50, :_reduce_none,
938
- 1, 55, :_reduce_99,
939
- 2, 55, :_reduce_100,
940
- 1, 92, :_reduce_none,
941
- 1, 92, :_reduce_none,
942
- 1, 74, :_reduce_103 ]
943
-
944
- racc_reduce_n = 104
945
-
946
- racc_shift_n = 164
919
+ 1, 80, :_reduce_none,
920
+ 0, 82, :_reduce_60,
921
+ 0, 83, :_reduce_61,
922
+ 6, 56, :_reduce_62,
923
+ 0, 84, :_reduce_63,
924
+ 0, 85, :_reduce_64,
925
+ 5, 56, :_reduce_65,
926
+ 1, 73, :_reduce_66,
927
+ 2, 73, :_reduce_67,
928
+ 2, 73, :_reduce_68,
929
+ 1, 86, :_reduce_69,
930
+ 2, 86, :_reduce_70,
931
+ 1, 87, :_reduce_none,
932
+ 1, 76, :_reduce_72,
933
+ 1, 76, :_reduce_73,
934
+ 1, 47, :_reduce_none,
935
+ 2, 47, :_reduce_none,
936
+ 1, 88, :_reduce_none,
937
+ 2, 88, :_reduce_none,
938
+ 4, 89, :_reduce_78,
939
+ 1, 92, :_reduce_79,
940
+ 3, 92, :_reduce_80,
941
+ 2, 92, :_reduce_none,
942
+ 0, 93, :_reduce_82,
943
+ 1, 93, :_reduce_83,
944
+ 3, 93, :_reduce_84,
945
+ 2, 93, :_reduce_85,
946
+ 2, 93, :_reduce_86,
947
+ 2, 93, :_reduce_87,
948
+ 0, 94, :_reduce_88,
949
+ 0, 95, :_reduce_89,
950
+ 7, 93, :_reduce_90,
951
+ 3, 93, :_reduce_91,
952
+ 0, 91, :_reduce_none,
953
+ 3, 91, :_reduce_93,
954
+ 1, 90, :_reduce_none,
955
+ 0, 48, :_reduce_none,
956
+ 0, 96, :_reduce_96,
957
+ 3, 48, :_reduce_97,
958
+ 1, 54, :_reduce_none,
959
+ 0, 55, :_reduce_none,
960
+ 1, 55, :_reduce_none,
961
+ 1, 55, :_reduce_none,
962
+ 1, 55, :_reduce_none,
963
+ 1, 62, :_reduce_103,
964
+ 2, 62, :_reduce_104,
965
+ 1, 97, :_reduce_none,
966
+ 1, 97, :_reduce_none,
967
+ 1, 81, :_reduce_107 ]
968
+
969
+ racc_reduce_n = 108
970
+
971
+ racc_shift_n = 169
947
972
 
948
973
  racc_token_table = {
949
974
  false => 0,
@@ -964,28 +989,33 @@ racc_token_table = {
964
989
  "%param" => 15,
965
990
  "%lex-param" => 16,
966
991
  "%parse-param" => 17,
967
- "%initial-action" => 18,
992
+ "%code" => 18,
968
993
  "{" => 19,
969
994
  "}" => 20,
970
- ";" => 21,
971
- "%union" => 22,
972
- "%destructor" => 23,
973
- "%printer" => 24,
974
- "%error-token" => 25,
975
- "%token" => 26,
976
- "%type" => 27,
977
- "%left" => 28,
978
- "%right" => 29,
979
- "%precedence" => 30,
980
- "%nonassoc" => 31,
981
- ":" => 32,
982
- "|" => 33,
983
- "%prec" => 34,
984
- "[" => 35,
985
- "]" => 36,
986
- "{...}" => 37 }
987
-
988
- racc_nt_base = 38
995
+ "%initial-action" => 21,
996
+ ";" => 22,
997
+ "%union" => 23,
998
+ "%destructor" => 24,
999
+ "%printer" => 25,
1000
+ "%error-token" => 26,
1001
+ "%token" => 27,
1002
+ "%type" => 28,
1003
+ "%left" => 29,
1004
+ "%right" => 30,
1005
+ "%precedence" => 31,
1006
+ "%nonassoc" => 32,
1007
+ ":" => 33,
1008
+ "|" => 34,
1009
+ "%empty" => 35,
1010
+ "?" => 36,
1011
+ "+" => 37,
1012
+ "*" => 38,
1013
+ "%prec" => 39,
1014
+ "[" => 40,
1015
+ "]" => 41,
1016
+ "{...}" => 42 }
1017
+
1018
+ racc_nt_base = 43
989
1019
 
990
1020
  racc_use_result_var = true
991
1021
 
@@ -1025,9 +1055,10 @@ Racc_token_to_s_table = [
1025
1055
  "\"%param\"",
1026
1056
  "\"%lex-param\"",
1027
1057
  "\"%parse-param\"",
1028
- "\"%initial-action\"",
1058
+ "\"%code\"",
1029
1059
  "\"{\"",
1030
1060
  "\"}\"",
1061
+ "\"%initial-action\"",
1031
1062
  "\";\"",
1032
1063
  "\"%union\"",
1033
1064
  "\"%destructor\"",
@@ -1041,6 +1072,10 @@ Racc_token_to_s_table = [
1041
1072
  "\"%nonassoc\"",
1042
1073
  "\":\"",
1043
1074
  "\"|\"",
1075
+ "\"%empty\"",
1076
+ "\"?\"",
1077
+ "\"+\"",
1078
+ "\"*\"",
1044
1079
  "\"%prec\"",
1045
1080
  "\"[\"",
1046
1081
  "\"]\"",
@@ -1061,16 +1096,18 @@ Racc_token_to_s_table = [
1061
1096
  "params",
1062
1097
  "@3",
1063
1098
  "@4",
1064
- "symbol_declaration",
1065
- "generic_symlist",
1066
1099
  "@5",
1067
1100
  "@6",
1101
+ "symbol_declaration",
1102
+ "generic_symlist",
1068
1103
  "@7",
1069
1104
  "@8",
1070
1105
  "@9",
1071
1106
  "@10",
1072
1107
  "@11",
1073
1108
  "@12",
1109
+ "@13",
1110
+ "@14",
1074
1111
  "token_declarations",
1075
1112
  "symbol_declarations",
1076
1113
  "token_declarations_for_precedence",
@@ -1082,10 +1119,10 @@ Racc_token_to_s_table = [
1082
1119
  "symbol_declaration_list",
1083
1120
  "symbol",
1084
1121
  "string_as_id",
1085
- "@13",
1086
- "@14",
1087
1122
  "@15",
1088
1123
  "@16",
1124
+ "@17",
1125
+ "@18",
1089
1126
  "token_declaration_list_for_precedence",
1090
1127
  "token_declaration_for_precedence",
1091
1128
  "rules_or_grammar_declaration",
@@ -1094,15 +1131,13 @@ Racc_token_to_s_table = [
1094
1131
  "named_ref_opt",
1095
1132
  "rhs_list",
1096
1133
  "rhs",
1097
- "@17",
1098
- "@18",
1099
1134
  "@19",
1100
1135
  "@20",
1101
1136
  "@21",
1102
1137
  "generic_symlist_item" ]
1103
1138
  Ractor.make_shareable(Racc_token_to_s_table) if defined?(Ractor)
1104
1139
 
1105
- Racc_debug_parser = false
1140
+ Racc_debug_parser = true
1106
1141
 
1107
1142
  ##### State transition tables end #####
1108
1143
 
@@ -1114,26 +1149,24 @@ Racc_debug_parser = false
1114
1149
 
1115
1150
  # reduce 3 omitted
1116
1151
 
1117
- module_eval(<<'.,.,', 'parser.y', 10)
1152
+ module_eval(<<'.,.,', 'parser.y', 14)
1118
1153
  def _reduce_4(val, _values, result)
1119
- @lexer.status = :c_declaration
1120
- @lexer.end_symbol = '%}'
1154
+ begin_c_declaration("%}")
1121
1155
  @grammar.prologue_first_lineno = @lexer.line
1122
1156
 
1123
1157
  result
1124
1158
  end
1125
1159
  .,.,
1126
1160
 
1127
- module_eval(<<'.,.,', 'parser.y', 16)
1161
+ module_eval(<<'.,.,', 'parser.y', 19)
1128
1162
  def _reduce_5(val, _values, result)
1129
- @lexer.status = :initial
1130
- @lexer.end_symbol = nil
1163
+ end_c_declaration
1131
1164
 
1132
1165
  result
1133
1166
  end
1134
1167
  .,.,
1135
1168
 
1136
- module_eval(<<'.,.,', 'parser.y', 21)
1169
+ module_eval(<<'.,.,', 'parser.y', 23)
1137
1170
  def _reduce_6(val, _values, result)
1138
1171
  @grammar.prologue = val[2].s_value
1139
1172
 
@@ -1143,7 +1176,7 @@ module_eval(<<'.,.,', 'parser.y', 21)
1143
1176
 
1144
1177
  # reduce 7 omitted
1145
1178
 
1146
- module_eval(<<'.,.,', 'parser.y', 25)
1179
+ module_eval(<<'.,.,', 'parser.y', 27)
1147
1180
  def _reduce_8(val, _values, result)
1148
1181
  result = ""
1149
1182
  result
@@ -1154,7 +1187,7 @@ module_eval(<<'.,.,', 'parser.y', 25)
1154
1187
 
1155
1188
  # reduce 10 omitted
1156
1189
 
1157
- module_eval(<<'.,.,', 'parser.y', 29)
1190
+ module_eval(<<'.,.,', 'parser.y', 31)
1158
1191
  def _reduce_11(val, _values, result)
1159
1192
  @grammar.expect = val[1]
1160
1193
  result
@@ -1167,7 +1200,7 @@ module_eval(<<'.,.,', 'parser.y', 29)
1167
1200
 
1168
1201
  # reduce 14 omitted
1169
1202
 
1170
- module_eval(<<'.,.,', 'parser.y', 35)
1203
+ module_eval(<<'.,.,', 'parser.y', 37)
1171
1204
  def _reduce_15(val, _values, result)
1172
1205
  val[1].each {|token|
1173
1206
  token.references = []
@@ -1178,7 +1211,7 @@ module_eval(<<'.,.,', 'parser.y', 35)
1178
1211
  end
1179
1212
  .,.,
1180
1213
 
1181
- module_eval(<<'.,.,', 'parser.y', 42)
1214
+ module_eval(<<'.,.,', 'parser.y', 44)
1182
1215
  def _reduce_16(val, _values, result)
1183
1216
  val[1].each {|token|
1184
1217
  token.references = []
@@ -1189,19 +1222,17 @@ module_eval(<<'.,.,', 'parser.y', 42)
1189
1222
  end
1190
1223
  .,.,
1191
1224
 
1192
- module_eval(<<'.,.,', 'parser.y', 49)
1225
+ module_eval(<<'.,.,', 'parser.y', 51)
1193
1226
  def _reduce_17(val, _values, result)
1194
- @lexer.status = :c_declaration
1195
- @lexer.end_symbol = '}'
1227
+ begin_c_declaration("}")
1196
1228
 
1197
1229
  result
1198
1230
  end
1199
1231
  .,.,
1200
1232
 
1201
- module_eval(<<'.,.,', 'parser.y', 54)
1233
+ module_eval(<<'.,.,', 'parser.y', 55)
1202
1234
  def _reduce_18(val, _values, result)
1203
- @lexer.status = :initial
1204
- @lexer.end_symbol = nil
1235
+ end_c_declaration
1205
1236
 
1206
1237
  result
1207
1238
  end
@@ -1209,46 +1240,49 @@ module_eval(<<'.,.,', 'parser.y', 54)
1209
1240
 
1210
1241
  module_eval(<<'.,.,', 'parser.y', 59)
1211
1242
  def _reduce_19(val, _values, result)
1212
- @grammar.initial_action = @grammar.build_code(:initial_action, val[3])
1243
+ @grammar.add_percent_code(id: val[1], code: val[4])
1213
1244
 
1214
1245
  result
1215
1246
  end
1216
1247
  .,.,
1217
1248
 
1218
- # reduce 20 omitted
1249
+ module_eval(<<'.,.,', 'parser.y', 63)
1250
+ def _reduce_20(val, _values, result)
1251
+ begin_c_declaration("}")
1252
+
1253
+ result
1254
+ end
1255
+ .,.,
1219
1256
 
1220
- module_eval(<<'.,.,', 'parser.y', 65)
1257
+ module_eval(<<'.,.,', 'parser.y', 67)
1221
1258
  def _reduce_21(val, _values, result)
1222
- @lexer.status = :c_declaration
1223
- @lexer.end_symbol = '}'
1259
+ end_c_declaration
1224
1260
 
1225
1261
  result
1226
1262
  end
1227
1263
  .,.,
1228
1264
 
1229
- module_eval(<<'.,.,', 'parser.y', 70)
1265
+ module_eval(<<'.,.,', 'parser.y', 71)
1230
1266
  def _reduce_22(val, _values, result)
1231
- @lexer.status = :initial
1232
- @lexer.end_symbol = nil
1267
+ @grammar.initial_action = @grammar.build_code(:initial_action, val[3])
1233
1268
 
1234
1269
  result
1235
1270
  end
1236
1271
  .,.,
1237
1272
 
1238
- module_eval(<<'.,.,', 'parser.y', 75)
1239
- def _reduce_23(val, _values, result)
1240
- @grammar.set_union(@grammar.build_code(:union, val[3]), val[3].line)
1273
+ # reduce 23 omitted
1274
+
1275
+ module_eval(<<'.,.,', 'parser.y', 77)
1276
+ def _reduce_24(val, _values, result)
1277
+ begin_c_declaration("}")
1241
1278
 
1242
1279
  result
1243
1280
  end
1244
1281
  .,.,
1245
1282
 
1246
- # reduce 24 omitted
1247
-
1248
- module_eval(<<'.,.,', 'parser.y', 80)
1283
+ module_eval(<<'.,.,', 'parser.y', 81)
1249
1284
  def _reduce_25(val, _values, result)
1250
- @lexer.status = :c_declaration
1251
- @lexer.end_symbol = '}'
1285
+ end_c_declaration
1252
1286
 
1253
1287
  result
1254
1288
  end
@@ -1256,8 +1290,7 @@ module_eval(<<'.,.,', 'parser.y', 80)
1256
1290
 
1257
1291
  module_eval(<<'.,.,', 'parser.y', 85)
1258
1292
  def _reduce_26(val, _values, result)
1259
- @lexer.status = :initial
1260
- @lexer.end_symbol = nil
1293
+ @grammar.set_union(@grammar.build_code(:union, val[3]), val[3].line)
1261
1294
 
1262
1295
  result
1263
1296
  end
@@ -1265,62 +1298,76 @@ module_eval(<<'.,.,', 'parser.y', 85)
1265
1298
 
1266
1299
  # reduce 27 omitted
1267
1300
 
1268
- module_eval(<<'.,.,', 'parser.y', 91)
1301
+ module_eval(<<'.,.,', 'parser.y', 90)
1269
1302
  def _reduce_28(val, _values, result)
1270
- @lexer.status = :c_declaration
1271
- @lexer.end_symbol = '}'
1303
+ begin_c_declaration("}")
1272
1304
 
1273
1305
  result
1274
1306
  end
1275
1307
  .,.,
1276
1308
 
1277
- module_eval(<<'.,.,', 'parser.y', 96)
1309
+ module_eval(<<'.,.,', 'parser.y', 94)
1278
1310
  def _reduce_29(val, _values, result)
1279
- @lexer.status = :initial
1280
- @lexer.end_symbol = nil
1311
+ end_c_declaration
1281
1312
 
1282
1313
  result
1283
1314
  end
1284
1315
  .,.,
1285
1316
 
1286
- module_eval(<<'.,.,', 'parser.y', 101)
1287
- def _reduce_30(val, _values, result)
1288
- @grammar.add_printer(ident_or_tags: val[6], code: @grammar.build_code(:printer, val[3]), lineno: val[3].line)
1317
+ # reduce 30 omitted
1318
+
1319
+ module_eval(<<'.,.,', 'parser.y', 99)
1320
+ def _reduce_31(val, _values, result)
1321
+ begin_c_declaration("}")
1289
1322
 
1290
1323
  result
1291
1324
  end
1292
1325
  .,.,
1293
1326
 
1294
- module_eval(<<'.,.,', 'parser.y', 105)
1295
- def _reduce_31(val, _values, result)
1296
- @lexer.status = :c_declaration
1297
- @lexer.end_symbol = '}'
1327
+ module_eval(<<'.,.,', 'parser.y', 103)
1328
+ def _reduce_32(val, _values, result)
1329
+ end_c_declaration
1298
1330
 
1299
1331
  result
1300
1332
  end
1301
1333
  .,.,
1302
1334
 
1303
- module_eval(<<'.,.,', 'parser.y', 110)
1304
- def _reduce_32(val, _values, result)
1305
- @lexer.status = :initial
1306
- @lexer.end_symbol = nil
1335
+ module_eval(<<'.,.,', 'parser.y', 107)
1336
+ def _reduce_33(val, _values, result)
1337
+ @grammar.add_printer(ident_or_tags: val[6], code: @grammar.build_code(:printer, val[3]), lineno: val[3].line)
1338
+
1339
+ result
1340
+ end
1341
+ .,.,
1342
+
1343
+ module_eval(<<'.,.,', 'parser.y', 111)
1344
+ def _reduce_34(val, _values, result)
1345
+ begin_c_declaration("}")
1307
1346
 
1308
1347
  result
1309
1348
  end
1310
1349
  .,.,
1311
1350
 
1312
1351
  module_eval(<<'.,.,', 'parser.y', 115)
1313
- def _reduce_33(val, _values, result)
1352
+ def _reduce_35(val, _values, result)
1353
+ end_c_declaration
1354
+
1355
+ result
1356
+ end
1357
+ .,.,
1358
+
1359
+ module_eval(<<'.,.,', 'parser.y', 119)
1360
+ def _reduce_36(val, _values, result)
1314
1361
  @grammar.add_error_token(ident_or_tags: val[6], code: @grammar.build_code(:error_token, val[3]), lineno: val[3].line)
1315
1362
 
1316
1363
  result
1317
1364
  end
1318
1365
  .,.,
1319
1366
 
1320
- # reduce 34 omitted
1367
+ # reduce 37 omitted
1321
1368
 
1322
- module_eval(<<'.,.,', 'parser.y', 121)
1323
- def _reduce_35(val, _values, result)
1369
+ module_eval(<<'.,.,', 'parser.y', 125)
1370
+ def _reduce_38(val, _values, result)
1324
1371
  val[1].each {|hash|
1325
1372
  hash[:tokens].each {|id|
1326
1373
  @grammar.add_type(id: id, tag: hash[:tag])
@@ -1331,8 +1378,8 @@ module_eval(<<'.,.,', 'parser.y', 121)
1331
1378
  end
1332
1379
  .,.,
1333
1380
 
1334
- module_eval(<<'.,.,', 'parser.y', 129)
1335
- def _reduce_36(val, _values, result)
1381
+ module_eval(<<'.,.,', 'parser.y', 133)
1382
+ def _reduce_39(val, _values, result)
1336
1383
  val[1].each {|hash|
1337
1384
  hash[:tokens].each {|id|
1338
1385
  sym = @grammar.add_term(id: id)
@@ -1345,8 +1392,8 @@ module_eval(<<'.,.,', 'parser.y', 129)
1345
1392
  end
1346
1393
  .,.,
1347
1394
 
1348
- module_eval(<<'.,.,', 'parser.y', 139)
1349
- def _reduce_37(val, _values, result)
1395
+ module_eval(<<'.,.,', 'parser.y', 143)
1396
+ def _reduce_40(val, _values, result)
1350
1397
  val[1].each {|hash|
1351
1398
  hash[:tokens].each {|id|
1352
1399
  sym = @grammar.add_term(id: id)
@@ -1359,8 +1406,8 @@ module_eval(<<'.,.,', 'parser.y', 139)
1359
1406
  end
1360
1407
  .,.,
1361
1408
 
1362
- module_eval(<<'.,.,', 'parser.y', 149)
1363
- def _reduce_38(val, _values, result)
1409
+ module_eval(<<'.,.,', 'parser.y', 153)
1410
+ def _reduce_41(val, _values, result)
1364
1411
  val[1].each {|hash|
1365
1412
  hash[:tokens].each {|id|
1366
1413
  sym = @grammar.add_term(id: id)
@@ -1373,8 +1420,8 @@ module_eval(<<'.,.,', 'parser.y', 149)
1373
1420
  end
1374
1421
  .,.,
1375
1422
 
1376
- module_eval(<<'.,.,', 'parser.y', 159)
1377
- def _reduce_39(val, _values, result)
1423
+ module_eval(<<'.,.,', 'parser.y', 163)
1424
+ def _reduce_42(val, _values, result)
1378
1425
  val[1].each {|hash|
1379
1426
  hash[:tokens].each {|id|
1380
1427
  sym = @grammar.add_term(id: id)
@@ -1387,8 +1434,8 @@ module_eval(<<'.,.,', 'parser.y', 159)
1387
1434
  end
1388
1435
  .,.,
1389
1436
 
1390
- module_eval(<<'.,.,', 'parser.y', 170)
1391
- def _reduce_40(val, _values, result)
1437
+ module_eval(<<'.,.,', 'parser.y', 174)
1438
+ def _reduce_43(val, _values, result)
1392
1439
  val[0].each {|token_declaration|
1393
1440
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: nil, replace: true)
1394
1441
  }
@@ -1397,8 +1444,8 @@ module_eval(<<'.,.,', 'parser.y', 170)
1397
1444
  end
1398
1445
  .,.,
1399
1446
 
1400
- module_eval(<<'.,.,', 'parser.y', 176)
1401
- def _reduce_41(val, _values, result)
1447
+ module_eval(<<'.,.,', 'parser.y', 180)
1448
+ def _reduce_44(val, _values, result)
1402
1449
  val[1].each {|token_declaration|
1403
1450
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[0], replace: true)
1404
1451
  }
@@ -1407,8 +1454,8 @@ module_eval(<<'.,.,', 'parser.y', 176)
1407
1454
  end
1408
1455
  .,.,
1409
1456
 
1410
- module_eval(<<'.,.,', 'parser.y', 182)
1411
- def _reduce_42(val, _values, result)
1457
+ module_eval(<<'.,.,', 'parser.y', 186)
1458
+ def _reduce_45(val, _values, result)
1412
1459
  val[2].each {|token_declaration|
1413
1460
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[1], replace: true)
1414
1461
  }
@@ -1417,123 +1464,119 @@ module_eval(<<'.,.,', 'parser.y', 182)
1417
1464
  end
1418
1465
  .,.,
1419
1466
 
1420
- module_eval(<<'.,.,', 'parser.y', 187)
1421
- def _reduce_43(val, _values, result)
1467
+ module_eval(<<'.,.,', 'parser.y', 191)
1468
+ def _reduce_46(val, _values, result)
1422
1469
  result = [val[0]]
1423
1470
  result
1424
1471
  end
1425
1472
  .,.,
1426
1473
 
1427
- module_eval(<<'.,.,', 'parser.y', 188)
1428
- def _reduce_44(val, _values, result)
1474
+ module_eval(<<'.,.,', 'parser.y', 192)
1475
+ def _reduce_47(val, _values, result)
1429
1476
  result = val[0].append(val[1])
1430
1477
  result
1431
1478
  end
1432
1479
  .,.,
1433
1480
 
1434
- module_eval(<<'.,.,', 'parser.y', 190)
1435
- def _reduce_45(val, _values, result)
1481
+ module_eval(<<'.,.,', 'parser.y', 194)
1482
+ def _reduce_48(val, _values, result)
1436
1483
  result = val
1437
1484
  result
1438
1485
  end
1439
1486
  .,.,
1440
1487
 
1441
- # reduce 46 omitted
1488
+ # reduce 49 omitted
1442
1489
 
1443
- # reduce 47 omitted
1490
+ # reduce 50 omitted
1444
1491
 
1445
- # reduce 48 omitted
1492
+ # reduce 51 omitted
1446
1493
 
1447
- # reduce 49 omitted
1494
+ # reduce 52 omitted
1448
1495
 
1449
- module_eval(<<'.,.,', 'parser.y', 200)
1450
- def _reduce_50(val, _values, result)
1496
+ module_eval(<<'.,.,', 'parser.y', 204)
1497
+ def _reduce_53(val, _values, result)
1451
1498
  result = [{tag: nil, tokens: val[0]}]
1452
1499
 
1453
1500
  result
1454
1501
  end
1455
1502
  .,.,
1456
1503
 
1457
- module_eval(<<'.,.,', 'parser.y', 204)
1458
- def _reduce_51(val, _values, result)
1504
+ module_eval(<<'.,.,', 'parser.y', 208)
1505
+ def _reduce_54(val, _values, result)
1459
1506
  result = [{tag: val[0], tokens: val[1]}]
1460
1507
 
1461
1508
  result
1462
1509
  end
1463
1510
  .,.,
1464
1511
 
1465
- module_eval(<<'.,.,', 'parser.y', 208)
1466
- def _reduce_52(val, _values, result)
1512
+ module_eval(<<'.,.,', 'parser.y', 212)
1513
+ def _reduce_55(val, _values, result)
1467
1514
  result = val[0].append({tag: val[1], tokens: val[2]})
1468
1515
 
1469
1516
  result
1470
1517
  end
1471
1518
  .,.,
1472
1519
 
1473
- module_eval(<<'.,.,', 'parser.y', 211)
1474
- def _reduce_53(val, _values, result)
1520
+ module_eval(<<'.,.,', 'parser.y', 215)
1521
+ def _reduce_56(val, _values, result)
1475
1522
  result = [val[0]]
1476
1523
  result
1477
1524
  end
1478
1525
  .,.,
1479
1526
 
1480
- module_eval(<<'.,.,', 'parser.y', 212)
1481
- def _reduce_54(val, _values, result)
1527
+ module_eval(<<'.,.,', 'parser.y', 216)
1528
+ def _reduce_57(val, _values, result)
1482
1529
  result = val[0].append(val[1])
1483
1530
  result
1484
1531
  end
1485
1532
  .,.,
1486
1533
 
1487
- # reduce 55 omitted
1534
+ # reduce 58 omitted
1488
1535
 
1489
- # reduce 56 omitted
1536
+ # reduce 59 omitted
1490
1537
 
1491
- module_eval(<<'.,.,', 'parser.y', 219)
1492
- def _reduce_57(val, _values, result)
1493
- @lexer.status = :c_declaration
1494
- @lexer.end_symbol = '}'
1538
+ module_eval(<<'.,.,', 'parser.y', 223)
1539
+ def _reduce_60(val, _values, result)
1540
+ begin_c_declaration("}")
1495
1541
 
1496
1542
  result
1497
1543
  end
1498
1544
  .,.,
1499
1545
 
1500
- module_eval(<<'.,.,', 'parser.y', 224)
1501
- def _reduce_58(val, _values, result)
1502
- @lexer.status = :initial
1503
- @lexer.end_symbol = nil
1546
+ module_eval(<<'.,.,', 'parser.y', 227)
1547
+ def _reduce_61(val, _values, result)
1548
+ end_c_declaration
1504
1549
 
1505
1550
  result
1506
1551
  end
1507
1552
  .,.,
1508
1553
 
1509
- module_eval(<<'.,.,', 'parser.y', 229)
1510
- def _reduce_59(val, _values, result)
1554
+ module_eval(<<'.,.,', 'parser.y', 231)
1555
+ def _reduce_62(val, _values, result)
1511
1556
  result = val[0].append(val[3])
1512
1557
 
1513
1558
  result
1514
1559
  end
1515
1560
  .,.,
1516
1561
 
1517
- module_eval(<<'.,.,', 'parser.y', 233)
1518
- def _reduce_60(val, _values, result)
1519
- @lexer.status = :c_declaration
1520
- @lexer.end_symbol = '}'
1562
+ module_eval(<<'.,.,', 'parser.y', 235)
1563
+ def _reduce_63(val, _values, result)
1564
+ begin_c_declaration("}")
1521
1565
 
1522
1566
  result
1523
1567
  end
1524
1568
  .,.,
1525
1569
 
1526
- module_eval(<<'.,.,', 'parser.y', 238)
1527
- def _reduce_61(val, _values, result)
1528
- @lexer.status = :initial
1529
- @lexer.end_symbol = nil
1570
+ module_eval(<<'.,.,', 'parser.y', 239)
1571
+ def _reduce_64(val, _values, result)
1572
+ end_c_declaration
1530
1573
 
1531
1574
  result
1532
1575
  end
1533
1576
  .,.,
1534
1577
 
1535
1578
  module_eval(<<'.,.,', 'parser.y', 243)
1536
- def _reduce_62(val, _values, result)
1579
+ def _reduce_65(val, _values, result)
1537
1580
  result = [val[2]]
1538
1581
 
1539
1582
  result
@@ -1541,7 +1584,7 @@ module_eval(<<'.,.,', 'parser.y', 243)
1541
1584
  .,.,
1542
1585
 
1543
1586
  module_eval(<<'.,.,', 'parser.y', 248)
1544
- def _reduce_63(val, _values, result)
1587
+ def _reduce_66(val, _values, result)
1545
1588
  result = [{tag: nil, tokens: val[0]}]
1546
1589
 
1547
1590
  result
@@ -1549,7 +1592,7 @@ module_eval(<<'.,.,', 'parser.y', 248)
1549
1592
  .,.,
1550
1593
 
1551
1594
  module_eval(<<'.,.,', 'parser.y', 252)
1552
- def _reduce_64(val, _values, result)
1595
+ def _reduce_67(val, _values, result)
1553
1596
  result = [{tag: val[0], tokens: val[1]}]
1554
1597
 
1555
1598
  result
@@ -1557,7 +1600,7 @@ module_eval(<<'.,.,', 'parser.y', 252)
1557
1600
  .,.,
1558
1601
 
1559
1602
  module_eval(<<'.,.,', 'parser.y', 256)
1560
- def _reduce_65(val, _values, result)
1603
+ def _reduce_68(val, _values, result)
1561
1604
  result = val[0].append({tag: nil, tokens: val[1]})
1562
1605
 
1563
1606
  result
@@ -1565,47 +1608,47 @@ module_eval(<<'.,.,', 'parser.y', 256)
1565
1608
  .,.,
1566
1609
 
1567
1610
  module_eval(<<'.,.,', 'parser.y', 259)
1568
- def _reduce_66(val, _values, result)
1611
+ def _reduce_69(val, _values, result)
1569
1612
  result = [val[0]]
1570
1613
  result
1571
1614
  end
1572
1615
  .,.,
1573
1616
 
1574
1617
  module_eval(<<'.,.,', 'parser.y', 260)
1575
- def _reduce_67(val, _values, result)
1618
+ def _reduce_70(val, _values, result)
1576
1619
  result = val[0].append(val[1])
1577
1620
  result
1578
1621
  end
1579
1622
  .,.,
1580
1623
 
1581
- # reduce 68 omitted
1624
+ # reduce 71 omitted
1582
1625
 
1583
1626
  module_eval(<<'.,.,', 'parser.y', 264)
1584
- def _reduce_69(val, _values, result)
1627
+ def _reduce_72(val, _values, result)
1585
1628
  raise "Ident after %prec" if @prec_seen
1586
1629
  result
1587
1630
  end
1588
1631
  .,.,
1589
1632
 
1590
1633
  module_eval(<<'.,.,', 'parser.y', 265)
1591
- def _reduce_70(val, _values, result)
1634
+ def _reduce_73(val, _values, result)
1592
1635
  raise "Char after %prec" if @prec_seen
1593
1636
  result
1594
1637
  end
1595
1638
  .,.,
1596
1639
 
1597
- # reduce 71 omitted
1640
+ # reduce 74 omitted
1598
1641
 
1599
- # reduce 72 omitted
1642
+ # reduce 75 omitted
1600
1643
 
1601
- # reduce 73 omitted
1644
+ # reduce 76 omitted
1602
1645
 
1603
- # reduce 74 omitted
1646
+ # reduce 77 omitted
1604
1647
 
1605
1648
  module_eval(<<'.,.,', 'parser.y', 275)
1606
- def _reduce_75(val, _values, result)
1649
+ def _reduce_78(val, _values, result)
1607
1650
  lhs = val[0]
1608
- lhs.alias = val[1]
1651
+ lhs.alias_name = val[1]
1609
1652
  val[3].each {|hash|
1610
1653
  @grammar.add_rule(lhs: lhs, rhs: hash[:rhs], lineno: hash[:lineno])
1611
1654
  }
@@ -1615,7 +1658,7 @@ module_eval(<<'.,.,', 'parser.y', 275)
1615
1658
  .,.,
1616
1659
 
1617
1660
  module_eval(<<'.,.,', 'parser.y', 284)
1618
- def _reduce_76(val, _values, result)
1661
+ def _reduce_79(val, _values, result)
1619
1662
  result = [{rhs: val[0], lineno: val[0].first&.line || @lexer.line - 1}]
1620
1663
 
1621
1664
  result
@@ -1623,101 +1666,102 @@ module_eval(<<'.,.,', 'parser.y', 284)
1623
1666
  .,.,
1624
1667
 
1625
1668
  module_eval(<<'.,.,', 'parser.y', 288)
1626
- def _reduce_77(val, _values, result)
1669
+ def _reduce_80(val, _values, result)
1627
1670
  result = val[0].append({rhs: val[2], lineno: val[2].first&.line || @lexer.line - 1})
1628
1671
 
1629
1672
  result
1630
1673
  end
1631
1674
  .,.,
1632
1675
 
1633
- # reduce 78 omitted
1676
+ # reduce 81 omitted
1634
1677
 
1635
1678
  module_eval(<<'.,.,', 'parser.y', 294)
1636
- def _reduce_79(val, _values, result)
1637
- result = []
1638
- @prec_seen = false
1639
- @code_after_prec = false
1679
+ def _reduce_82(val, _values, result)
1680
+ reset_precs
1681
+ result = []
1640
1682
 
1641
1683
  result
1642
1684
  end
1643
1685
  .,.,
1644
1686
 
1645
- module_eval(<<'.,.,', 'parser.y', 300)
1646
- def _reduce_80(val, _values, result)
1687
+ module_eval(<<'.,.,', 'parser.y', 299)
1688
+ def _reduce_83(val, _values, result)
1689
+ reset_precs
1690
+ result = []
1691
+
1692
+ result
1693
+ end
1694
+ .,.,
1695
+
1696
+ module_eval(<<'.,.,', 'parser.y', 304)
1697
+ def _reduce_84(val, _values, result)
1647
1698
  token = val[1]
1648
- token.alias = val[2]
1699
+ token.alias_name = val[2]
1649
1700
  result = val[0].append(token)
1650
1701
 
1651
1702
  result
1652
1703
  end
1653
1704
  .,.,
1654
1705
 
1655
- module_eval(<<'.,.,', 'parser.y', 306)
1656
- def _reduce_81(val, _values, result)
1657
- if @prec_seen
1658
- raise "Multiple User_code after %prec" if @code_after_prec
1659
- @code_after_prec = true
1660
- end
1661
- @lexer.status = :c_declaration
1662
- @lexer.end_symbol = '}'
1706
+ module_eval(<<'.,.,', 'parser.y', 310)
1707
+ def _reduce_85(val, _values, result)
1708
+ token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[1])
1709
+ result = val[0].append(token)
1663
1710
 
1664
1711
  result
1665
1712
  end
1666
1713
  .,.,
1667
1714
 
1668
1715
  module_eval(<<'.,.,', 'parser.y', 315)
1669
- def _reduce_82(val, _values, result)
1670
- @lexer.status = :initial
1671
- @lexer.end_symbol = nil
1716
+ def _reduce_86(val, _values, result)
1717
+ token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[1])
1718
+ result = val[0].append(token)
1672
1719
 
1673
1720
  result
1674
1721
  end
1675
1722
  .,.,
1676
1723
 
1677
1724
  module_eval(<<'.,.,', 'parser.y', 320)
1678
- def _reduce_83(val, _values, result)
1679
- token = val[3]
1680
- token.alias = val[6]
1681
- result = val[0].append(token)
1725
+ def _reduce_87(val, _values, result)
1726
+ token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[1])
1727
+ result = val[0].append(token)
1682
1728
 
1683
1729
  result
1684
1730
  end
1685
1731
  .,.,
1686
1732
 
1687
- module_eval(<<'.,.,', 'parser.y', 326)
1688
- def _reduce_84(val, _values, result)
1733
+ module_eval(<<'.,.,', 'parser.y', 325)
1734
+ def _reduce_88(val, _values, result)
1689
1735
  if @prec_seen
1690
1736
  raise "Multiple User_code after %prec" if @code_after_prec
1691
1737
  @code_after_prec = true
1692
1738
  end
1693
- @lexer.status = :c_declaration
1694
- @lexer.end_symbol = '}'
1739
+ begin_c_declaration("}")
1695
1740
 
1696
1741
  result
1697
1742
  end
1698
1743
  .,.,
1699
1744
 
1700
- module_eval(<<'.,.,', 'parser.y', 335)
1701
- def _reduce_85(val, _values, result)
1702
- @lexer.status = :initial
1703
- @lexer.end_symbol = nil
1745
+ module_eval(<<'.,.,', 'parser.y', 333)
1746
+ def _reduce_89(val, _values, result)
1747
+ end_c_declaration
1704
1748
 
1705
1749
  result
1706
1750
  end
1707
1751
  .,.,
1708
1752
 
1709
- module_eval(<<'.,.,', 'parser.y', 340)
1710
- def _reduce_86(val, _values, result)
1711
- token = val[2]
1712
- token.alias = val[5]
1713
- result = [token]
1753
+ module_eval(<<'.,.,', 'parser.y', 337)
1754
+ def _reduce_90(val, _values, result)
1755
+ token = val[3]
1756
+ token.alias_name = val[6]
1757
+ result = val[0].append(token)
1714
1758
 
1715
1759
  result
1716
1760
  end
1717
1761
  .,.,
1718
1762
 
1719
- module_eval(<<'.,.,', 'parser.y', 346)
1720
- def _reduce_87(val, _values, result)
1763
+ module_eval(<<'.,.,', 'parser.y', 343)
1764
+ def _reduce_91(val, _values, result)
1721
1765
  sym = @grammar.find_symbol_by_id!(val[2])
1722
1766
  result = val[0].append(sym)
1723
1767
  @prec_seen = true
@@ -1726,70 +1770,68 @@ module_eval(<<'.,.,', 'parser.y', 346)
1726
1770
  end
1727
1771
  .,.,
1728
1772
 
1729
- # reduce 88 omitted
1773
+ # reduce 92 omitted
1730
1774
 
1731
- module_eval(<<'.,.,', 'parser.y', 352)
1732
- def _reduce_89(val, _values, result)
1775
+ module_eval(<<'.,.,', 'parser.y', 349)
1776
+ def _reduce_93(val, _values, result)
1733
1777
  result = val[1].s_value
1734
1778
  result
1735
1779
  end
1736
1780
  .,.,
1737
1781
 
1738
- # reduce 90 omitted
1782
+ # reduce 94 omitted
1739
1783
 
1740
- # reduce 91 omitted
1784
+ # reduce 95 omitted
1741
1785
 
1742
- module_eval(<<'.,.,', 'parser.y', 359)
1743
- def _reduce_92(val, _values, result)
1744
- @lexer.status = :c_declaration
1745
- @lexer.end_symbol = '\Z'
1786
+ module_eval(<<'.,.,', 'parser.y', 356)
1787
+ def _reduce_96(val, _values, result)
1788
+ begin_c_declaration('\Z')
1746
1789
  @grammar.epilogue_first_lineno = @lexer.line + 1
1747
1790
 
1748
1791
  result
1749
1792
  end
1750
1793
  .,.,
1751
1794
 
1752
- module_eval(<<'.,.,', 'parser.y', 365)
1753
- def _reduce_93(val, _values, result)
1754
- @lexer.status = :initial
1755
- @lexer.end_symbol = nil
1795
+ module_eval(<<'.,.,', 'parser.y', 361)
1796
+ def _reduce_97(val, _values, result)
1797
+ end_c_declaration
1756
1798
  @grammar.epilogue = val[2].s_value
1757
1799
 
1758
1800
  result
1759
1801
  end
1760
1802
  .,.,
1761
1803
 
1762
- # reduce 94 omitted
1804
+ # reduce 98 omitted
1763
1805
 
1764
- # reduce 95 omitted
1806
+ # reduce 99 omitted
1765
1807
 
1766
- # reduce 96 omitted
1808
+ # reduce 100 omitted
1767
1809
 
1768
- # reduce 97 omitted
1810
+ # reduce 101 omitted
1769
1811
 
1770
- # reduce 98 omitted
1812
+ # reduce 102 omitted
1771
1813
 
1772
- module_eval(<<'.,.,', 'parser.y', 377)
1773
- def _reduce_99(val, _values, result)
1814
+ module_eval(<<'.,.,', 'parser.y', 372)
1815
+ def _reduce_103(val, _values, result)
1774
1816
  result = [val[0]]
1775
1817
  result
1776
1818
  end
1777
1819
  .,.,
1778
1820
 
1779
- module_eval(<<'.,.,', 'parser.y', 378)
1780
- def _reduce_100(val, _values, result)
1821
+ module_eval(<<'.,.,', 'parser.y', 373)
1822
+ def _reduce_104(val, _values, result)
1781
1823
  result = val[0].append(val[1])
1782
1824
  result
1783
1825
  end
1784
1826
  .,.,
1785
1827
 
1786
- # reduce 101 omitted
1828
+ # reduce 105 omitted
1787
1829
 
1788
- # reduce 102 omitted
1830
+ # reduce 106 omitted
1789
1831
 
1790
- module_eval(<<'.,.,', 'parser.y', 383)
1791
- def _reduce_103(val, _values, result)
1792
- result = Lrama::Lexer::Token.new(type: Lrama::Lexer::Token::Ident, s_value: val[0])
1832
+ module_eval(<<'.,.,', 'parser.y', 378)
1833
+ def _reduce_107(val, _values, result)
1834
+ result = Lrama::Lexer::Token::Ident.new(s_value: val[0])
1793
1835
  result
1794
1836
  end
1795
1837
  .,.,