lrama 0.5.8 → 0.5.9

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/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
  .,.,