lrama 0.5.9 → 0.5.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yaml +25 -0
  3. data/.gitignore +7 -4
  4. data/Gemfile +9 -5
  5. data/Rakefile +13 -0
  6. data/Steepfile +13 -11
  7. data/lib/lrama/context.rb +1 -3
  8. data/lib/lrama/counterexamples/path.rb +0 -46
  9. data/lib/lrama/counterexamples/production_path.rb +17 -0
  10. data/lib/lrama/counterexamples/start_path.rb +21 -0
  11. data/lib/lrama/counterexamples/transition_path.rb +17 -0
  12. data/lib/lrama/counterexamples.rb +3 -0
  13. data/lib/lrama/grammar/code/initial_action_code.rb +28 -0
  14. data/lib/lrama/grammar/code/no_reference_code.rb +24 -0
  15. data/lib/lrama/grammar/code/printer_code.rb +34 -0
  16. data/lib/lrama/grammar/code/rule_action.rb +62 -0
  17. data/lib/lrama/grammar/code.rb +9 -93
  18. data/lib/lrama/grammar/counter.rb +15 -0
  19. data/lib/lrama/grammar/error_token.rb +3 -3
  20. data/lib/lrama/grammar/parameterizing_rules/builder/base.rb +36 -0
  21. data/lib/lrama/grammar/parameterizing_rules/builder/list.rb +28 -0
  22. data/lib/lrama/grammar/parameterizing_rules/builder/nonempty_list.rb +28 -0
  23. data/lib/lrama/grammar/parameterizing_rules/builder/option.rb +28 -0
  24. data/lib/lrama/grammar/parameterizing_rules/builder/separated_list.rb +39 -0
  25. data/lib/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rb +34 -0
  26. data/lib/lrama/grammar/parameterizing_rules/builder.rb +60 -0
  27. data/lib/lrama/grammar/printer.rb +3 -3
  28. data/lib/lrama/grammar/reference.rb +7 -16
  29. data/lib/lrama/grammar/rule.rb +19 -2
  30. data/lib/lrama/grammar/rule_builder.rb +177 -0
  31. data/lib/lrama/grammar/symbol.rb +16 -2
  32. data/lib/lrama/grammar/type.rb +6 -0
  33. data/lib/lrama/grammar.rb +115 -325
  34. data/lib/lrama/lexer/location.rb +22 -0
  35. data/lib/lrama/lexer/token/parameterizing.rb +18 -3
  36. data/lib/lrama/lexer/token/tag.rb +4 -0
  37. data/lib/lrama/lexer/token/user_code.rb +54 -4
  38. data/lib/lrama/lexer/token.rb +35 -10
  39. data/lib/lrama/lexer.rb +32 -31
  40. data/lib/lrama/options.rb +1 -2
  41. data/lib/lrama/output.rb +2 -2
  42. data/lib/lrama/parser.rb +514 -424
  43. data/lib/lrama/report/profile.rb +1 -12
  44. data/lib/lrama/version.rb +1 -1
  45. data/lib/lrama.rb +0 -1
  46. data/parser.y +111 -52
  47. data/rbs_collection.lock.yaml +6 -8
  48. data/rbs_collection.yaml +1 -0
  49. data/sig/lrama/grammar/code/printer_code.rbs +15 -0
  50. data/sig/lrama/grammar/code.rbs +24 -0
  51. data/sig/lrama/grammar/counter.rbs +11 -0
  52. data/sig/lrama/grammar/error_token.rbs +11 -0
  53. data/sig/lrama/grammar/parameterizing_rules/builder/base.rbs +26 -0
  54. data/sig/lrama/grammar/parameterizing_rules/builder/list.rbs +10 -0
  55. data/sig/lrama/grammar/parameterizing_rules/builder/nonempty_list.rbs +10 -0
  56. data/sig/lrama/grammar/parameterizing_rules/builder/option.rbs +10 -0
  57. data/sig/lrama/grammar/parameterizing_rules/builder/separated_list.rbs +11 -0
  58. data/sig/lrama/grammar/parameterizing_rules/builder/separated_nonempty_list.rbs +11 -0
  59. data/sig/lrama/grammar/parameterizing_rules/builder.rbs +23 -0
  60. data/sig/lrama/grammar/precedence.rbs +11 -0
  61. data/sig/lrama/grammar/printer.rbs +11 -0
  62. data/sig/lrama/grammar/reference.rbs +6 -6
  63. data/sig/lrama/grammar/rule.rbs +13 -0
  64. data/sig/lrama/grammar/rule_builder.rbs +42 -0
  65. data/sig/lrama/grammar/symbol.rbs +37 -0
  66. data/sig/lrama/lexer/location.rbs +14 -0
  67. data/sig/lrama/lexer/token/parameterizing.rbs +9 -0
  68. data/sig/lrama/lexer/token/tag.rbs +1 -0
  69. data/sig/lrama/lexer/token/user_code.rbs +8 -1
  70. data/sig/lrama/lexer/token.rbs +9 -4
  71. data/sig/stdlib/strscan/string_scanner.rbs +5 -0
  72. data/template/bison/yacc.c +5 -2
  73. metadata +38 -3
  74. data/lib/lrama/type.rb +0 -4
data/lib/lrama/parser.rb CHANGED
@@ -658,7 +658,7 @@ end
658
658
  module Lrama
659
659
  class Parser < Racc::Parser
660
660
 
661
- module_eval(<<'...end parser.y/module_eval...', 'parser.y', 383)
661
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 420)
662
662
 
663
663
  include Lrama::Report::Duration
664
664
 
@@ -666,18 +666,18 @@ def initialize(text, path, debug = false)
666
666
  @text = text
667
667
  @path = path
668
668
  @yydebug = debug
669
+ @rule_counter = Lrama::Grammar::Counter.new(0)
670
+ @midrule_action_counter = Lrama::Grammar::Counter.new(1)
669
671
  end
670
672
 
671
673
  def parse
672
674
  report_duration(:parse) do
673
675
  @lexer = Lrama::Lexer.new(@text)
674
- @grammar = Lrama::Grammar.new
676
+ @grammar = Lrama::Grammar.new(@rule_counter)
675
677
  @precedence_number = 0
676
678
  reset_precs
677
679
  do_parse
678
680
  @grammar.prepare
679
- @grammar.compute_nullable
680
- @grammar.compute_first_set
681
681
  @grammar.validate!
682
682
  @grammar
683
683
  end
@@ -688,18 +688,40 @@ def next_token
688
688
  end
689
689
 
690
690
  def on_error(error_token_id, error_value, value_stack)
691
- if error_value.respond_to?(:line) && error_value.respond_to?(:column)
692
- line = error_value.line
693
- first_column = error_value.column
691
+ if error_value.is_a?(Lrama::Lexer::Token)
692
+ line = error_value.first_line
693
+ first_column = error_value.first_column
694
+ last_column = error_value.last_column
695
+ value = "'#{error_value.s_value}'"
694
696
  else
695
697
  line = @lexer.line
696
698
  first_column = @lexer.head_column
699
+ last_column = @lexer.column
700
+ value = error_value.inspect
697
701
  end
698
702
 
699
703
  raise ParseError, <<~ERROR
700
- #{@path}:#{line}:#{first_column}: parse error on value #{error_value.inspect} (#{token_to_str(error_token_id) || '?'})
704
+ #{@path}:#{line}:#{first_column}: parse error on value #{value} (#{token_to_str(error_token_id) || '?'})
701
705
  #{@text.split("\n")[line - 1]}
702
- #{carrets(first_column)}
706
+ #{carrets(first_column, last_column)}
707
+ ERROR
708
+ end
709
+
710
+ def on_action_error(error_message, error_value)
711
+ if error_value.is_a?(Lrama::Lexer::Token)
712
+ line = error_value.first_line
713
+ first_column = error_value.first_column
714
+ last_column = error_value.last_column
715
+ else
716
+ line = @lexer.line
717
+ first_column = @lexer.head_column
718
+ last_column = @lexer.column
719
+ end
720
+
721
+ raise ParseError, <<~ERROR
722
+ #{@path}:#{line}: #{error_message}
723
+ #{@text.split("\n")[line - 1]}
724
+ #{carrets(first_column, last_column)}
703
725
  ERROR
704
726
  end
705
727
 
@@ -720,255 +742,268 @@ def end_c_declaration
720
742
  @lexer.end_symbol = nil
721
743
  end
722
744
 
723
- def carrets(first_column)
724
- ' ' * (first_column + 1) + '^' * (@lexer.column - first_column)
745
+ def carrets(first_column, last_column)
746
+ ' ' * (first_column + 1) + '^' * (last_column - first_column)
725
747
  end
726
748
  ...end parser.y/module_eval...
727
749
  ##### State transition tables begin ###
728
750
 
729
751
  racc_action_table = [
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 ]
752
+ 82, 42, 83, 137, 42, 65, 137, 38, 65, 136,
753
+ 42, 6, 41, 7, 42, 56, 41, 139, 65, 61,
754
+ 139, 135, 42, 42, 41, 41, 20, 22, 23, 24,
755
+ 25, 26, 27, 28, 29, 30, 140, 38, 3, 140,
756
+ 84, 42, 77, 41, 8, 42, 68, 41, 172, 42,
757
+ 68, 41, 32, 173, 68, 39, 20, 22, 23, 24,
758
+ 25, 26, 27, 28, 29, 30, 9, 42, 45, 41,
759
+ 12, 13, 14, 15, 16, 17, 45, 45, 18, 19,
760
+ 20, 22, 23, 24, 25, 26, 27, 28, 29, 30,
761
+ 42, 48, 41, 151, 49, 68, 152, 153, 154, 42,
762
+ 42, 41, 41, 65, 163, 42, 42, 41, 41, 65,
763
+ 163, 42, 42, 41, 41, 65, 163, 42, 42, 41,
764
+ 41, 65, 163, 42, 42, 41, 41, 65, 163, 42,
765
+ 42, 41, 41, 65, 163, 42, 42, 41, 41, 65,
766
+ 65, 42, 42, 41, 41, 65, 65, 42, 42, 41,
767
+ 41, 65, 65, 42, 42, 41, 41, 65, 65, 42,
768
+ 42, 41, 41, 50, 51, 52, 53, 74, 78, 80,
769
+ 85, 85, 85, 87, 93, 97, 98, 101, 101, 101,
770
+ 101, 106, 107, 109, 111, 112, 113, 114, 115, 118,
771
+ 121, 122, 125, 126, 127, 129, 142, 144, 145, 146,
772
+ 147, 148, 125, 80, 158, 159, 167, 170, 167, 177,
773
+ 80 ]
751
774
 
752
775
  racc_action_check = [
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 ]
776
+ 40, 124, 40, 124, 149, 124, 149, 9, 149, 123,
777
+ 25, 2, 25, 2, 26, 25, 26, 124, 26, 26,
778
+ 149, 123, 13, 55, 13, 55, 9, 9, 9, 9,
779
+ 9, 9, 9, 9, 9, 9, 124, 33, 1, 149,
780
+ 40, 27, 33, 27, 3, 28, 27, 28, 168, 29,
781
+ 28, 29, 7, 168, 29, 12, 33, 33, 33, 33,
782
+ 33, 33, 33, 33, 33, 33, 4, 56, 14, 56,
783
+ 4, 4, 4, 4, 4, 4, 15, 16, 4, 4,
784
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
785
+ 30, 17, 30, 137, 18, 30, 137, 137, 137, 146,
786
+ 67, 146, 67, 146, 146, 147, 68, 147, 68, 147,
787
+ 147, 148, 93, 148, 93, 148, 148, 160, 95, 160,
788
+ 95, 160, 160, 164, 101, 164, 101, 164, 164, 165,
789
+ 103, 165, 103, 165, 165, 60, 61, 60, 61, 60,
790
+ 61, 98, 100, 98, 100, 98, 100, 119, 140, 119,
791
+ 140, 119, 140, 151, 173, 151, 173, 151, 173, 116,
792
+ 120, 116, 120, 20, 22, 23, 24, 31, 36, 37,
793
+ 44, 46, 47, 48, 54, 58, 59, 66, 71, 72,
794
+ 73, 79, 80, 86, 88, 89, 90, 91, 92, 96,
795
+ 104, 105, 106, 107, 108, 110, 128, 130, 131, 132,
796
+ 133, 134, 135, 138, 141, 143, 150, 156, 172, 174,
797
+ 177 ]
774
798
 
775
799
  racc_action_pointer = [
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 ]
800
+ nil, 38, 1, 44, 57, nil, nil, 45, nil, 3,
801
+ nil, nil, 49, 19, 49, 57, 58, 86, 75, nil,
802
+ 144, nil, 145, 146, 147, 7, 11, 38, 42, 46,
803
+ 87, 165, nil, 33, nil, nil, 146, 126, nil, nil,
804
+ -5, nil, nil, nil, 151, nil, 152, 153, 154, nil,
805
+ nil, nil, nil, nil, 166, 20, 64, nil, 169, 168,
806
+ 132, 133, nil, nil, nil, nil, 169, 97, 103, nil,
807
+ nil, 170, 171, 172, nil, nil, nil, nil, nil, 148,
808
+ 177, nil, nil, nil, nil, nil, 181, nil, 182, 183,
809
+ 184, 185, 186, 109, nil, 115, 182, nil, 138, nil,
810
+ 139, 121, nil, 127, 179, 189, 157, 149, 192, nil,
811
+ 193, nil, nil, nil, nil, nil, 156, nil, nil, 144,
812
+ 157, nil, nil, -13, -2, nil, nil, nil, 176, nil,
813
+ 177, 178, 179, 180, 181, 167, nil, 57, 160, nil,
814
+ 145, 184, nil, 185, nil, nil, 96, 102, 108, 1,
815
+ 198, 150, nil, nil, nil, nil, 205, nil, nil, nil,
816
+ 114, nil, nil, nil, 120, 126, nil, nil, 11, nil,
817
+ nil, nil, 200, 151, 189, nil, nil, 167, nil ]
793
818
 
794
819
  racc_action_default = [
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 ]
820
+ -2, -113, -8, -113, -113, -3, -4, -113, 179, -113,
821
+ -9, -10, -113, -113, -113, -113, -113, -113, -113, -22,
822
+ -113, -26, -113, -113, -113, -113, -113, -113, -113, -113,
823
+ -113, -113, -7, -98, -73, -75, -113, -95, -97, -11,
824
+ -102, -71, -72, -101, -13, -62, -14, -15, -113, -19,
825
+ -23, -27, -30, -33, -36, -42, -113, -45, -48, -37,
826
+ -52, -113, -55, -57, -58, -110, -38, -65, -113, -68,
827
+ -70, -39, -40, -41, -5, -1, -74, -99, -76, -113,
828
+ -113, -12, -103, -104, -105, -59, -113, -16, -113, -113,
829
+ -113, -113, -113, -113, -46, -43, -50, -49, -113, -56,
830
+ -53, -113, -69, -66, -113, -113, -81, -113, -113, -63,
831
+ -113, -20, -24, -28, -31, -34, -44, -47, -51, -54,
832
+ -67, -6, -100, -77, -78, -82, -96, -60, -113, -17,
833
+ -113, -113, -113, -113, -113, -81, -80, -71, -95, -86,
834
+ -113, -113, -64, -113, -21, -25, -113, -113, -113, -79,
835
+ -111, -113, -90, -91, -92, -83, -113, -89, -61, -18,
836
+ -29, -106, -108, -109, -32, -35, -84, -112, -113, -93,
837
+ -87, -107, -111, -113, -113, -85, -94, -95, -88 ]
812
838
 
813
839
  racc_goto_table = [
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 ]
840
+ 62, 79, 43, 60, 103, 55, 94, 102, 34, 166,
841
+ 124, 44, 46, 47, 58, 1, 70, 70, 70, 70,
842
+ 171, 160, 164, 165, 171, 171, 66, 71, 72, 73,
843
+ 2, 175, 76, 4, 99, 62, 95, 120, 100, 149,
844
+ 33, 75, 5, 102, 58, 58, 94, 31, 104, 10,
845
+ 11, 40, 81, 110, 143, 88, 70, 70, 130, 89,
846
+ 102, 131, 90, 132, 91, 133, 92, 94, 134, 54,
847
+ 59, 96, 62, 116, 99, 119, 117, 108, 141, 86,
848
+ 128, 123, 58, 150, 58, 168, 156, 174, 105, nil,
849
+ 70, nil, 70, 99, nil, nil, nil, nil, 138, nil,
850
+ nil, nil, 155, nil, nil, 58, nil, nil, nil, 70,
851
+ nil, nil, nil, nil, 157, nil, nil, nil, nil, nil,
852
+ nil, nil, nil, 138, nil, 169, nil, nil, nil, nil,
853
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
854
+ nil, 178, nil, nil, nil, nil, nil, 176 ]
827
855
 
828
856
  racc_goto_check = [
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 ]
857
+ 37, 48, 33, 36, 43, 31, 32, 44, 45, 52,
858
+ 50, 13, 13, 13, 33, 1, 33, 33, 33, 33,
859
+ 57, 19, 19, 19, 57, 57, 30, 30, 30, 30,
860
+ 2, 52, 45, 3, 37, 37, 31, 43, 36, 50,
861
+ 4, 5, 6, 44, 33, 33, 32, 7, 8, 9,
862
+ 10, 11, 12, 14, 15, 16, 33, 33, 17, 20,
863
+ 44, 21, 22, 23, 24, 25, 26, 32, 27, 28,
864
+ 29, 34, 37, 31, 37, 36, 35, 39, 40, 41,
865
+ 42, 49, 33, 51, 33, 53, 54, 55, 56, nil,
866
+ 33, nil, 33, 37, nil, nil, nil, nil, 37, nil,
867
+ nil, nil, 48, nil, nil, 33, nil, nil, nil, 33,
868
+ nil, nil, nil, nil, 37, nil, nil, nil, nil, nil,
869
+ nil, nil, nil, 37, nil, 37, nil, nil, nil, nil,
870
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
871
+ nil, 48, nil, nil, nil, nil, nil, 37 ]
842
872
 
843
873
  racc_goto_pointer = [
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 ]
874
+ nil, 15, 30, 31, 31, 8, 40, 41, -26, 45,
875
+ 46, 38, 12, -3, -34, -75, 6, -53, nil, -125,
876
+ 9, -51, 11, -50, 12, -49, 13, -47, 44, 44,
877
+ -1, -20, -49, -11, 13, -20, -23, -26, nil, -8,
878
+ -49, 34, -29, -64, -60, -1, nil, nil, -36, -25,
879
+ -96, -54, -141, -66, -53, -83, 11, -140 ]
850
880
 
851
881
  racc_goto_default = [
852
882
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
853
- 37, nil, nil, nil, nil, nil, nil, nil, 22, nil,
883
+ 36, nil, nil, nil, nil, nil, nil, nil, 21, nil,
854
884
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
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 ]
885
+ nil, nil, 57, 63, nil, nil, nil, 162, 64, nil,
886
+ nil, nil, nil, 67, 69, nil, 35, 37, nil, nil,
887
+ nil, nil, nil, nil, nil, nil, nil, 161 ]
858
888
 
859
889
  racc_reduce_table = [
860
890
  0, 0, :racc_error,
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,
913
- 1, 72, :_reduce_53,
914
- 2, 72, :_reduce_54,
915
- 3, 72, :_reduce_55,
916
- 1, 79, :_reduce_56,
917
- 2, 79, :_reduce_57,
918
- 1, 80, :_reduce_none,
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,
891
+ 5, 47, :_reduce_none,
955
892
  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,
893
+ 2, 48, :_reduce_none,
894
+ 0, 53, :_reduce_4,
895
+ 0, 54, :_reduce_5,
896
+ 5, 52, :_reduce_6,
897
+ 2, 52, :_reduce_none,
898
+ 0, 49, :_reduce_8,
899
+ 2, 49, :_reduce_none,
961
900
  1, 55, :_reduce_none,
901
+ 2, 55, :_reduce_11,
902
+ 3, 55, :_reduce_none,
903
+ 2, 55, :_reduce_none,
904
+ 2, 55, :_reduce_14,
905
+ 2, 55, :_reduce_15,
906
+ 0, 60, :_reduce_16,
907
+ 0, 61, :_reduce_17,
908
+ 7, 55, :_reduce_18,
909
+ 0, 62, :_reduce_19,
910
+ 0, 63, :_reduce_20,
911
+ 6, 55, :_reduce_21,
962
912
  1, 55, :_reduce_none,
963
- 1, 62, :_reduce_103,
964
- 2, 62, :_reduce_104,
913
+ 0, 66, :_reduce_23,
914
+ 0, 67, :_reduce_24,
915
+ 6, 56, :_reduce_25,
916
+ 1, 56, :_reduce_none,
917
+ 0, 68, :_reduce_27,
918
+ 0, 69, :_reduce_28,
919
+ 7, 56, :_reduce_none,
920
+ 0, 70, :_reduce_30,
921
+ 0, 71, :_reduce_31,
922
+ 7, 56, :_reduce_32,
923
+ 0, 72, :_reduce_33,
924
+ 0, 73, :_reduce_34,
925
+ 7, 56, :_reduce_35,
926
+ 2, 64, :_reduce_none,
927
+ 2, 64, :_reduce_37,
928
+ 2, 64, :_reduce_38,
929
+ 2, 64, :_reduce_39,
930
+ 2, 64, :_reduce_40,
931
+ 2, 64, :_reduce_41,
932
+ 1, 74, :_reduce_42,
933
+ 2, 74, :_reduce_43,
934
+ 3, 74, :_reduce_44,
935
+ 1, 77, :_reduce_45,
936
+ 2, 77, :_reduce_46,
937
+ 3, 78, :_reduce_47,
938
+ 0, 80, :_reduce_none,
939
+ 1, 80, :_reduce_none,
940
+ 0, 81, :_reduce_none,
941
+ 1, 81, :_reduce_none,
942
+ 1, 75, :_reduce_52,
943
+ 2, 75, :_reduce_53,
944
+ 3, 75, :_reduce_54,
945
+ 1, 82, :_reduce_55,
946
+ 2, 82, :_reduce_56,
947
+ 1, 83, :_reduce_none,
948
+ 1, 83, :_reduce_none,
949
+ 0, 85, :_reduce_59,
950
+ 0, 86, :_reduce_60,
951
+ 6, 59, :_reduce_61,
952
+ 0, 87, :_reduce_62,
953
+ 0, 88, :_reduce_63,
954
+ 5, 59, :_reduce_64,
955
+ 1, 76, :_reduce_65,
956
+ 2, 76, :_reduce_66,
957
+ 3, 76, :_reduce_67,
958
+ 1, 89, :_reduce_68,
959
+ 2, 89, :_reduce_69,
960
+ 1, 90, :_reduce_none,
961
+ 1, 79, :_reduce_71,
962
+ 1, 79, :_reduce_72,
963
+ 1, 50, :_reduce_none,
964
+ 2, 50, :_reduce_none,
965
+ 1, 91, :_reduce_none,
966
+ 2, 91, :_reduce_none,
967
+ 4, 92, :_reduce_77,
968
+ 1, 95, :_reduce_78,
969
+ 3, 95, :_reduce_79,
970
+ 2, 95, :_reduce_none,
971
+ 0, 96, :_reduce_81,
972
+ 1, 96, :_reduce_82,
973
+ 3, 96, :_reduce_83,
974
+ 4, 96, :_reduce_84,
975
+ 6, 96, :_reduce_85,
976
+ 0, 100, :_reduce_86,
977
+ 0, 101, :_reduce_87,
978
+ 7, 96, :_reduce_88,
979
+ 3, 96, :_reduce_89,
965
980
  1, 97, :_reduce_none,
966
981
  1, 97, :_reduce_none,
967
- 1, 81, :_reduce_107 ]
968
-
969
- racc_reduce_n = 108
970
-
971
- racc_shift_n = 169
982
+ 1, 97, :_reduce_none,
983
+ 1, 99, :_reduce_93,
984
+ 3, 99, :_reduce_94,
985
+ 0, 94, :_reduce_none,
986
+ 3, 94, :_reduce_96,
987
+ 1, 93, :_reduce_none,
988
+ 0, 51, :_reduce_none,
989
+ 0, 102, :_reduce_99,
990
+ 3, 51, :_reduce_100,
991
+ 1, 57, :_reduce_none,
992
+ 0, 58, :_reduce_none,
993
+ 1, 58, :_reduce_none,
994
+ 1, 58, :_reduce_none,
995
+ 1, 58, :_reduce_none,
996
+ 1, 65, :_reduce_106,
997
+ 2, 65, :_reduce_107,
998
+ 1, 103, :_reduce_none,
999
+ 1, 103, :_reduce_none,
1000
+ 1, 84, :_reduce_110,
1001
+ 0, 98, :_reduce_none,
1002
+ 1, 98, :_reduce_none ]
1003
+
1004
+ racc_reduce_n = 113
1005
+
1006
+ racc_shift_n = 179
972
1007
 
973
1008
  racc_token_table = {
974
1009
  false => 0,
@@ -1007,15 +1042,18 @@ racc_token_table = {
1007
1042
  ":" => 33,
1008
1043
  "|" => 34,
1009
1044
  "%empty" => 35,
1010
- "?" => 36,
1011
- "+" => 37,
1012
- "*" => 38,
1013
- "%prec" => 39,
1014
- "[" => 40,
1015
- "]" => 41,
1016
- "{...}" => 42 }
1017
-
1018
- racc_nt_base = 43
1045
+ "(" => 36,
1046
+ ")" => 37,
1047
+ "%prec" => 38,
1048
+ "?" => 39,
1049
+ "+" => 40,
1050
+ "*" => 41,
1051
+ "," => 42,
1052
+ "[" => 43,
1053
+ "]" => 44,
1054
+ "{...}" => 45 }
1055
+
1056
+ racc_nt_base = 46
1019
1057
 
1020
1058
  racc_use_result_var = true
1021
1059
 
@@ -1073,10 +1111,13 @@ Racc_token_to_s_table = [
1073
1111
  "\":\"",
1074
1112
  "\"|\"",
1075
1113
  "\"%empty\"",
1114
+ "\"(\"",
1115
+ "\")\"",
1116
+ "\"%prec\"",
1076
1117
  "\"?\"",
1077
1118
  "\"+\"",
1078
1119
  "\"*\"",
1079
- "\"%prec\"",
1120
+ "\",\"",
1080
1121
  "\"[\"",
1081
1122
  "\"]\"",
1082
1123
  "\"{...}\"",
@@ -1131,6 +1172,9 @@ Racc_token_to_s_table = [
1131
1172
  "named_ref_opt",
1132
1173
  "rhs_list",
1133
1174
  "rhs",
1175
+ "parameterizing_suffix",
1176
+ "tag_opt",
1177
+ "parameterizing_args",
1134
1178
  "@19",
1135
1179
  "@20",
1136
1180
  "@21",
@@ -1198,108 +1242,107 @@ module_eval(<<'.,.,', 'parser.y', 31)
1198
1242
 
1199
1243
  # reduce 13 omitted
1200
1244
 
1201
- # reduce 14 omitted
1202
-
1203
- module_eval(<<'.,.,', 'parser.y', 37)
1204
- def _reduce_15(val, _values, result)
1245
+ module_eval(<<'.,.,', 'parser.y', 36)
1246
+ def _reduce_14(val, _values, result)
1205
1247
  val[1].each {|token|
1206
- token.references = []
1207
- @grammar.lex_param = @grammar.build_code(:lex_param, token).token_code.s_value
1248
+ @grammar.lex_param = Grammar::Code::NoReferenceCode.new(type: :lex_param, token_code: token).token_code.s_value
1208
1249
  }
1209
1250
 
1210
1251
  result
1211
1252
  end
1212
1253
  .,.,
1213
1254
 
1214
- module_eval(<<'.,.,', 'parser.y', 44)
1215
- def _reduce_16(val, _values, result)
1255
+ module_eval(<<'.,.,', 'parser.y', 42)
1256
+ def _reduce_15(val, _values, result)
1216
1257
  val[1].each {|token|
1217
- token.references = []
1218
- @grammar.parse_param = @grammar.build_code(:parse_param, token).token_code.s_value
1258
+ @grammar.parse_param = Grammar::Code::NoReferenceCode.new(type: :parse_param, token_code: token).token_code.s_value
1219
1259
  }
1220
1260
 
1221
1261
  result
1222
1262
  end
1223
1263
  .,.,
1224
1264
 
1225
- module_eval(<<'.,.,', 'parser.y', 51)
1226
- def _reduce_17(val, _values, result)
1265
+ module_eval(<<'.,.,', 'parser.y', 48)
1266
+ def _reduce_16(val, _values, result)
1227
1267
  begin_c_declaration("}")
1228
1268
 
1229
1269
  result
1230
1270
  end
1231
1271
  .,.,
1232
1272
 
1233
- module_eval(<<'.,.,', 'parser.y', 55)
1234
- def _reduce_18(val, _values, result)
1273
+ module_eval(<<'.,.,', 'parser.y', 52)
1274
+ def _reduce_17(val, _values, result)
1235
1275
  end_c_declaration
1236
1276
 
1237
1277
  result
1238
1278
  end
1239
1279
  .,.,
1240
1280
 
1241
- module_eval(<<'.,.,', 'parser.y', 59)
1242
- def _reduce_19(val, _values, result)
1281
+ module_eval(<<'.,.,', 'parser.y', 56)
1282
+ def _reduce_18(val, _values, result)
1243
1283
  @grammar.add_percent_code(id: val[1], code: val[4])
1244
1284
 
1245
1285
  result
1246
1286
  end
1247
1287
  .,.,
1248
1288
 
1249
- module_eval(<<'.,.,', 'parser.y', 63)
1250
- def _reduce_20(val, _values, result)
1289
+ module_eval(<<'.,.,', 'parser.y', 60)
1290
+ def _reduce_19(val, _values, result)
1251
1291
  begin_c_declaration("}")
1252
1292
 
1253
1293
  result
1254
1294
  end
1255
1295
  .,.,
1256
1296
 
1257
- module_eval(<<'.,.,', 'parser.y', 67)
1258
- def _reduce_21(val, _values, result)
1297
+ module_eval(<<'.,.,', 'parser.y', 64)
1298
+ def _reduce_20(val, _values, result)
1259
1299
  end_c_declaration
1260
1300
 
1261
1301
  result
1262
1302
  end
1263
1303
  .,.,
1264
1304
 
1265
- module_eval(<<'.,.,', 'parser.y', 71)
1266
- def _reduce_22(val, _values, result)
1267
- @grammar.initial_action = @grammar.build_code(:initial_action, val[3])
1305
+ module_eval(<<'.,.,', 'parser.y', 68)
1306
+ def _reduce_21(val, _values, result)
1307
+ @grammar.initial_action = Grammar::Code::InitialActionCode.new(type: :initial_action, token_code: val[3])
1268
1308
 
1269
1309
  result
1270
1310
  end
1271
1311
  .,.,
1272
1312
 
1273
- # reduce 23 omitted
1313
+ # reduce 22 omitted
1274
1314
 
1275
- module_eval(<<'.,.,', 'parser.y', 77)
1276
- def _reduce_24(val, _values, result)
1315
+ module_eval(<<'.,.,', 'parser.y', 74)
1316
+ def _reduce_23(val, _values, result)
1277
1317
  begin_c_declaration("}")
1278
1318
 
1279
1319
  result
1280
1320
  end
1281
1321
  .,.,
1282
1322
 
1283
- module_eval(<<'.,.,', 'parser.y', 81)
1284
- def _reduce_25(val, _values, result)
1323
+ module_eval(<<'.,.,', 'parser.y', 78)
1324
+ def _reduce_24(val, _values, result)
1285
1325
  end_c_declaration
1286
1326
 
1287
1327
  result
1288
1328
  end
1289
1329
  .,.,
1290
1330
 
1291
- module_eval(<<'.,.,', 'parser.y', 85)
1292
- def _reduce_26(val, _values, result)
1293
- @grammar.set_union(@grammar.build_code(:union, val[3]), val[3].line)
1331
+ module_eval(<<'.,.,', 'parser.y', 82)
1332
+ def _reduce_25(val, _values, result)
1333
+ @grammar.set_union(
1334
+ Grammar::Code::NoReferenceCode.new(type: :union, token_code: val[3]),
1335
+ val[3].line
1336
+ )
1294
1337
 
1295
1338
  result
1296
1339
  end
1297
1340
  .,.,
1298
1341
 
1299
- # reduce 27 omitted
1342
+ # reduce 26 omitted
1300
1343
 
1301
1344
  module_eval(<<'.,.,', 'parser.y', 90)
1302
- def _reduce_28(val, _values, result)
1345
+ def _reduce_27(val, _values, result)
1303
1346
  begin_c_declaration("}")
1304
1347
 
1305
1348
  result
@@ -1307,17 +1350,17 @@ module_eval(<<'.,.,', 'parser.y', 90)
1307
1350
  .,.,
1308
1351
 
1309
1352
  module_eval(<<'.,.,', 'parser.y', 94)
1310
- def _reduce_29(val, _values, result)
1353
+ def _reduce_28(val, _values, result)
1311
1354
  end_c_declaration
1312
1355
 
1313
1356
  result
1314
1357
  end
1315
1358
  .,.,
1316
1359
 
1317
- # reduce 30 omitted
1360
+ # reduce 29 omitted
1318
1361
 
1319
1362
  module_eval(<<'.,.,', 'parser.y', 99)
1320
- def _reduce_31(val, _values, result)
1363
+ def _reduce_30(val, _values, result)
1321
1364
  begin_c_declaration("}")
1322
1365
 
1323
1366
  result
@@ -1325,7 +1368,7 @@ module_eval(<<'.,.,', 'parser.y', 99)
1325
1368
  .,.,
1326
1369
 
1327
1370
  module_eval(<<'.,.,', 'parser.y', 103)
1328
- def _reduce_32(val, _values, result)
1371
+ def _reduce_31(val, _values, result)
1329
1372
  end_c_declaration
1330
1373
 
1331
1374
  result
@@ -1333,41 +1376,49 @@ module_eval(<<'.,.,', 'parser.y', 103)
1333
1376
  .,.,
1334
1377
 
1335
1378
  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)
1379
+ def _reduce_32(val, _values, result)
1380
+ @grammar.add_printer(
1381
+ ident_or_tags: val[6],
1382
+ token_code: val[3],
1383
+ lineno: val[3].line
1384
+ )
1338
1385
 
1339
1386
  result
1340
1387
  end
1341
1388
  .,.,
1342
1389
 
1343
- module_eval(<<'.,.,', 'parser.y', 111)
1344
- def _reduce_34(val, _values, result)
1390
+ module_eval(<<'.,.,', 'parser.y', 115)
1391
+ def _reduce_33(val, _values, result)
1345
1392
  begin_c_declaration("}")
1346
1393
 
1347
1394
  result
1348
1395
  end
1349
1396
  .,.,
1350
1397
 
1351
- module_eval(<<'.,.,', 'parser.y', 115)
1352
- def _reduce_35(val, _values, result)
1398
+ module_eval(<<'.,.,', 'parser.y', 119)
1399
+ def _reduce_34(val, _values, result)
1353
1400
  end_c_declaration
1354
1401
 
1355
1402
  result
1356
1403
  end
1357
1404
  .,.,
1358
1405
 
1359
- module_eval(<<'.,.,', 'parser.y', 119)
1360
- def _reduce_36(val, _values, result)
1361
- @grammar.add_error_token(ident_or_tags: val[6], code: @grammar.build_code(:error_token, val[3]), lineno: val[3].line)
1406
+ module_eval(<<'.,.,', 'parser.y', 123)
1407
+ def _reduce_35(val, _values, result)
1408
+ @grammar.add_error_token(
1409
+ ident_or_tags: val[6],
1410
+ token_code: val[3],
1411
+ lineno: val[3].line
1412
+ )
1362
1413
 
1363
1414
  result
1364
1415
  end
1365
1416
  .,.,
1366
1417
 
1367
- # reduce 37 omitted
1418
+ # reduce 36 omitted
1368
1419
 
1369
- module_eval(<<'.,.,', 'parser.y', 125)
1370
- def _reduce_38(val, _values, result)
1420
+ module_eval(<<'.,.,', 'parser.y', 133)
1421
+ def _reduce_37(val, _values, result)
1371
1422
  val[1].each {|hash|
1372
1423
  hash[:tokens].each {|id|
1373
1424
  @grammar.add_type(id: id, tag: hash[:tag])
@@ -1378,8 +1429,8 @@ module_eval(<<'.,.,', 'parser.y', 125)
1378
1429
  end
1379
1430
  .,.,
1380
1431
 
1381
- module_eval(<<'.,.,', 'parser.y', 133)
1382
- def _reduce_39(val, _values, result)
1432
+ module_eval(<<'.,.,', 'parser.y', 141)
1433
+ def _reduce_38(val, _values, result)
1383
1434
  val[1].each {|hash|
1384
1435
  hash[:tokens].each {|id|
1385
1436
  sym = @grammar.add_term(id: id)
@@ -1392,8 +1443,8 @@ module_eval(<<'.,.,', 'parser.y', 133)
1392
1443
  end
1393
1444
  .,.,
1394
1445
 
1395
- module_eval(<<'.,.,', 'parser.y', 143)
1396
- def _reduce_40(val, _values, result)
1446
+ module_eval(<<'.,.,', 'parser.y', 151)
1447
+ def _reduce_39(val, _values, result)
1397
1448
  val[1].each {|hash|
1398
1449
  hash[:tokens].each {|id|
1399
1450
  sym = @grammar.add_term(id: id)
@@ -1406,8 +1457,8 @@ module_eval(<<'.,.,', 'parser.y', 143)
1406
1457
  end
1407
1458
  .,.,
1408
1459
 
1409
- module_eval(<<'.,.,', 'parser.y', 153)
1410
- def _reduce_41(val, _values, result)
1460
+ module_eval(<<'.,.,', 'parser.y', 161)
1461
+ def _reduce_40(val, _values, result)
1411
1462
  val[1].each {|hash|
1412
1463
  hash[:tokens].each {|id|
1413
1464
  sym = @grammar.add_term(id: id)
@@ -1420,8 +1471,8 @@ module_eval(<<'.,.,', 'parser.y', 153)
1420
1471
  end
1421
1472
  .,.,
1422
1473
 
1423
- module_eval(<<'.,.,', 'parser.y', 163)
1424
- def _reduce_42(val, _values, result)
1474
+ module_eval(<<'.,.,', 'parser.y', 171)
1475
+ def _reduce_41(val, _values, result)
1425
1476
  val[1].each {|hash|
1426
1477
  hash[:tokens].each {|id|
1427
1478
  sym = @grammar.add_term(id: id)
@@ -1434,8 +1485,8 @@ module_eval(<<'.,.,', 'parser.y', 163)
1434
1485
  end
1435
1486
  .,.,
1436
1487
 
1437
- module_eval(<<'.,.,', 'parser.y', 174)
1438
- def _reduce_43(val, _values, result)
1488
+ module_eval(<<'.,.,', 'parser.y', 182)
1489
+ def _reduce_42(val, _values, result)
1439
1490
  val[0].each {|token_declaration|
1440
1491
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: nil, replace: true)
1441
1492
  }
@@ -1444,8 +1495,8 @@ module_eval(<<'.,.,', 'parser.y', 174)
1444
1495
  end
1445
1496
  .,.,
1446
1497
 
1447
- module_eval(<<'.,.,', 'parser.y', 180)
1448
- def _reduce_44(val, _values, result)
1498
+ module_eval(<<'.,.,', 'parser.y', 188)
1499
+ def _reduce_43(val, _values, result)
1449
1500
  val[1].each {|token_declaration|
1450
1501
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[0], replace: true)
1451
1502
  }
@@ -1454,8 +1505,8 @@ module_eval(<<'.,.,', 'parser.y', 180)
1454
1505
  end
1455
1506
  .,.,
1456
1507
 
1457
- module_eval(<<'.,.,', 'parser.y', 186)
1458
- def _reduce_45(val, _values, result)
1508
+ module_eval(<<'.,.,', 'parser.y', 194)
1509
+ def _reduce_44(val, _values, result)
1459
1510
  val[2].each {|token_declaration|
1460
1511
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[1], replace: true)
1461
1512
  }
@@ -1464,276 +1515,287 @@ module_eval(<<'.,.,', 'parser.y', 186)
1464
1515
  end
1465
1516
  .,.,
1466
1517
 
1467
- module_eval(<<'.,.,', 'parser.y', 191)
1468
- def _reduce_46(val, _values, result)
1518
+ module_eval(<<'.,.,', 'parser.y', 199)
1519
+ def _reduce_45(val, _values, result)
1469
1520
  result = [val[0]]
1470
1521
  result
1471
1522
  end
1472
1523
  .,.,
1473
1524
 
1474
- module_eval(<<'.,.,', 'parser.y', 192)
1475
- def _reduce_47(val, _values, result)
1525
+ module_eval(<<'.,.,', 'parser.y', 200)
1526
+ def _reduce_46(val, _values, result)
1476
1527
  result = val[0].append(val[1])
1477
1528
  result
1478
1529
  end
1479
1530
  .,.,
1480
1531
 
1481
- module_eval(<<'.,.,', 'parser.y', 194)
1482
- def _reduce_48(val, _values, result)
1532
+ module_eval(<<'.,.,', 'parser.y', 202)
1533
+ def _reduce_47(val, _values, result)
1483
1534
  result = val
1484
1535
  result
1485
1536
  end
1486
1537
  .,.,
1487
1538
 
1539
+ # reduce 48 omitted
1540
+
1488
1541
  # reduce 49 omitted
1489
1542
 
1490
1543
  # reduce 50 omitted
1491
1544
 
1492
1545
  # reduce 51 omitted
1493
1546
 
1494
- # reduce 52 omitted
1495
-
1496
- module_eval(<<'.,.,', 'parser.y', 204)
1497
- def _reduce_53(val, _values, result)
1547
+ module_eval(<<'.,.,', 'parser.y', 212)
1548
+ def _reduce_52(val, _values, result)
1498
1549
  result = [{tag: nil, tokens: val[0]}]
1499
1550
 
1500
1551
  result
1501
1552
  end
1502
1553
  .,.,
1503
1554
 
1504
- module_eval(<<'.,.,', 'parser.y', 208)
1505
- def _reduce_54(val, _values, result)
1555
+ module_eval(<<'.,.,', 'parser.y', 216)
1556
+ def _reduce_53(val, _values, result)
1506
1557
  result = [{tag: val[0], tokens: val[1]}]
1507
1558
 
1508
1559
  result
1509
1560
  end
1510
1561
  .,.,
1511
1562
 
1512
- module_eval(<<'.,.,', 'parser.y', 212)
1513
- def _reduce_55(val, _values, result)
1563
+ module_eval(<<'.,.,', 'parser.y', 220)
1564
+ def _reduce_54(val, _values, result)
1514
1565
  result = val[0].append({tag: val[1], tokens: val[2]})
1515
1566
 
1516
1567
  result
1517
1568
  end
1518
1569
  .,.,
1519
1570
 
1520
- module_eval(<<'.,.,', 'parser.y', 215)
1521
- def _reduce_56(val, _values, result)
1571
+ module_eval(<<'.,.,', 'parser.y', 223)
1572
+ def _reduce_55(val, _values, result)
1522
1573
  result = [val[0]]
1523
1574
  result
1524
1575
  end
1525
1576
  .,.,
1526
1577
 
1527
- module_eval(<<'.,.,', 'parser.y', 216)
1528
- def _reduce_57(val, _values, result)
1578
+ module_eval(<<'.,.,', 'parser.y', 224)
1579
+ def _reduce_56(val, _values, result)
1529
1580
  result = val[0].append(val[1])
1530
1581
  result
1531
1582
  end
1532
1583
  .,.,
1533
1584
 
1534
- # reduce 58 omitted
1585
+ # reduce 57 omitted
1535
1586
 
1536
- # reduce 59 omitted
1587
+ # reduce 58 omitted
1537
1588
 
1538
- module_eval(<<'.,.,', 'parser.y', 223)
1539
- def _reduce_60(val, _values, result)
1589
+ module_eval(<<'.,.,', 'parser.y', 231)
1590
+ def _reduce_59(val, _values, result)
1540
1591
  begin_c_declaration("}")
1541
1592
 
1542
1593
  result
1543
1594
  end
1544
1595
  .,.,
1545
1596
 
1546
- module_eval(<<'.,.,', 'parser.y', 227)
1547
- def _reduce_61(val, _values, result)
1597
+ module_eval(<<'.,.,', 'parser.y', 235)
1598
+ def _reduce_60(val, _values, result)
1548
1599
  end_c_declaration
1549
1600
 
1550
1601
  result
1551
1602
  end
1552
1603
  .,.,
1553
1604
 
1554
- module_eval(<<'.,.,', 'parser.y', 231)
1555
- def _reduce_62(val, _values, result)
1605
+ module_eval(<<'.,.,', 'parser.y', 239)
1606
+ def _reduce_61(val, _values, result)
1556
1607
  result = val[0].append(val[3])
1557
1608
 
1558
1609
  result
1559
1610
  end
1560
1611
  .,.,
1561
1612
 
1562
- module_eval(<<'.,.,', 'parser.y', 235)
1563
- def _reduce_63(val, _values, result)
1613
+ module_eval(<<'.,.,', 'parser.y', 243)
1614
+ def _reduce_62(val, _values, result)
1564
1615
  begin_c_declaration("}")
1565
1616
 
1566
1617
  result
1567
1618
  end
1568
1619
  .,.,
1569
1620
 
1570
- module_eval(<<'.,.,', 'parser.y', 239)
1571
- def _reduce_64(val, _values, result)
1621
+ module_eval(<<'.,.,', 'parser.y', 247)
1622
+ def _reduce_63(val, _values, result)
1572
1623
  end_c_declaration
1573
1624
 
1574
1625
  result
1575
1626
  end
1576
1627
  .,.,
1577
1628
 
1578
- module_eval(<<'.,.,', 'parser.y', 243)
1579
- def _reduce_65(val, _values, result)
1629
+ module_eval(<<'.,.,', 'parser.y', 251)
1630
+ def _reduce_64(val, _values, result)
1580
1631
  result = [val[2]]
1581
1632
 
1582
1633
  result
1583
1634
  end
1584
1635
  .,.,
1585
1636
 
1586
- module_eval(<<'.,.,', 'parser.y', 248)
1587
- def _reduce_66(val, _values, result)
1637
+ module_eval(<<'.,.,', 'parser.y', 256)
1638
+ def _reduce_65(val, _values, result)
1588
1639
  result = [{tag: nil, tokens: val[0]}]
1589
1640
 
1590
1641
  result
1591
1642
  end
1592
1643
  .,.,
1593
1644
 
1594
- module_eval(<<'.,.,', 'parser.y', 252)
1595
- def _reduce_67(val, _values, result)
1645
+ module_eval(<<'.,.,', 'parser.y', 260)
1646
+ def _reduce_66(val, _values, result)
1596
1647
  result = [{tag: val[0], tokens: val[1]}]
1597
1648
 
1598
1649
  result
1599
1650
  end
1600
1651
  .,.,
1601
1652
 
1602
- module_eval(<<'.,.,', 'parser.y', 256)
1603
- def _reduce_68(val, _values, result)
1604
- result = val[0].append({tag: nil, tokens: val[1]})
1653
+ module_eval(<<'.,.,', 'parser.y', 264)
1654
+ def _reduce_67(val, _values, result)
1655
+ result = val[0].append({tag: val[1], tokens: val[2]})
1605
1656
 
1606
1657
  result
1607
1658
  end
1608
1659
  .,.,
1609
1660
 
1610
- module_eval(<<'.,.,', 'parser.y', 259)
1611
- def _reduce_69(val, _values, result)
1661
+ module_eval(<<'.,.,', 'parser.y', 267)
1662
+ def _reduce_68(val, _values, result)
1612
1663
  result = [val[0]]
1613
1664
  result
1614
1665
  end
1615
1666
  .,.,
1616
1667
 
1617
- module_eval(<<'.,.,', 'parser.y', 260)
1618
- def _reduce_70(val, _values, result)
1668
+ module_eval(<<'.,.,', 'parser.y', 268)
1669
+ def _reduce_69(val, _values, result)
1619
1670
  result = val[0].append(val[1])
1620
1671
  result
1621
1672
  end
1622
1673
  .,.,
1623
1674
 
1624
- # reduce 71 omitted
1675
+ # reduce 70 omitted
1625
1676
 
1626
- module_eval(<<'.,.,', 'parser.y', 264)
1627
- def _reduce_72(val, _values, result)
1628
- raise "Ident after %prec" if @prec_seen
1677
+ module_eval(<<'.,.,', 'parser.y', 272)
1678
+ def _reduce_71(val, _values, result)
1679
+ on_action_error("ident after %prec", val[0]) if @prec_seen
1629
1680
  result
1630
1681
  end
1631
1682
  .,.,
1632
1683
 
1633
- module_eval(<<'.,.,', 'parser.y', 265)
1634
- def _reduce_73(val, _values, result)
1635
- raise "Char after %prec" if @prec_seen
1684
+ module_eval(<<'.,.,', 'parser.y', 273)
1685
+ def _reduce_72(val, _values, result)
1686
+ on_action_error("char after %prec", val[0]) if @prec_seen
1636
1687
  result
1637
1688
  end
1638
1689
  .,.,
1639
1690
 
1691
+ # reduce 73 omitted
1692
+
1640
1693
  # reduce 74 omitted
1641
1694
 
1642
1695
  # reduce 75 omitted
1643
1696
 
1644
1697
  # reduce 76 omitted
1645
1698
 
1646
- # reduce 77 omitted
1647
-
1648
- module_eval(<<'.,.,', 'parser.y', 275)
1649
- def _reduce_78(val, _values, result)
1699
+ module_eval(<<'.,.,', 'parser.y', 283)
1700
+ def _reduce_77(val, _values, result)
1650
1701
  lhs = val[0]
1651
1702
  lhs.alias_name = val[1]
1652
- val[3].each {|hash|
1653
- @grammar.add_rule(lhs: lhs, rhs: hash[:rhs], lineno: hash[:lineno])
1654
- }
1703
+ val[3].each do |builder|
1704
+ builder.lhs = lhs
1705
+ builder.complete_input
1706
+ @grammar.add_rule_builder(builder)
1707
+ end
1655
1708
 
1656
1709
  result
1657
1710
  end
1658
1711
  .,.,
1659
1712
 
1660
- module_eval(<<'.,.,', 'parser.y', 284)
1661
- def _reduce_79(val, _values, result)
1662
- result = [{rhs: val[0], lineno: val[0].first&.line || @lexer.line - 1}]
1713
+ module_eval(<<'.,.,', 'parser.y', 294)
1714
+ def _reduce_78(val, _values, result)
1715
+ builder = val[0]
1716
+ if !builder.line
1717
+ builder.line = @lexer.line - 1
1718
+ end
1719
+ result = [builder]
1663
1720
 
1664
1721
  result
1665
1722
  end
1666
1723
  .,.,
1667
1724
 
1668
- module_eval(<<'.,.,', 'parser.y', 288)
1669
- def _reduce_80(val, _values, result)
1670
- result = val[0].append({rhs: val[2], lineno: val[2].first&.line || @lexer.line - 1})
1725
+ module_eval(<<'.,.,', 'parser.y', 302)
1726
+ def _reduce_79(val, _values, result)
1727
+ builder = val[2]
1728
+ if !builder.line
1729
+ builder.line = @lexer.line - 1
1730
+ end
1731
+ result = val[0].append(builder)
1671
1732
 
1672
1733
  result
1673
1734
  end
1674
1735
  .,.,
1675
1736
 
1676
- # reduce 81 omitted
1737
+ # reduce 80 omitted
1677
1738
 
1678
- module_eval(<<'.,.,', 'parser.y', 294)
1679
- def _reduce_82(val, _values, result)
1739
+ module_eval(<<'.,.,', 'parser.y', 312)
1740
+ def _reduce_81(val, _values, result)
1680
1741
  reset_precs
1681
- result = []
1742
+ result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
1682
1743
 
1683
1744
  result
1684
1745
  end
1685
1746
  .,.,
1686
1747
 
1687
- module_eval(<<'.,.,', 'parser.y', 299)
1688
- def _reduce_83(val, _values, result)
1748
+ module_eval(<<'.,.,', 'parser.y', 317)
1749
+ def _reduce_82(val, _values, result)
1689
1750
  reset_precs
1690
- result = []
1751
+ result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
1691
1752
 
1692
1753
  result
1693
1754
  end
1694
1755
  .,.,
1695
1756
 
1696
- module_eval(<<'.,.,', 'parser.y', 304)
1697
- def _reduce_84(val, _values, result)
1757
+ module_eval(<<'.,.,', 'parser.y', 322)
1758
+ def _reduce_83(val, _values, result)
1698
1759
  token = val[1]
1699
1760
  token.alias_name = val[2]
1700
- result = val[0].append(token)
1761
+ builder = val[0]
1762
+ builder.add_rhs(token)
1763
+ result = builder
1701
1764
 
1702
1765
  result
1703
1766
  end
1704
1767
  .,.,
1705
1768
 
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)
1710
-
1711
- result
1712
- end
1713
- .,.,
1714
-
1715
- module_eval(<<'.,.,', 'parser.y', 315)
1716
- def _reduce_86(val, _values, result)
1717
- token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[1])
1718
- result = val[0].append(token)
1769
+ module_eval(<<'.,.,', 'parser.y', 330)
1770
+ def _reduce_84(val, _values, result)
1771
+ token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[2], location: @lexer.location, args: [val[1]])
1772
+ builder = val[0]
1773
+ builder.add_rhs(token)
1774
+ builder.lhs_tag = val[3]
1775
+ builder.line = val[1].first_line
1776
+ result = builder
1719
1777
 
1720
1778
  result
1721
1779
  end
1722
1780
  .,.,
1723
1781
 
1724
- module_eval(<<'.,.,', 'parser.y', 320)
1725
- def _reduce_87(val, _values, result)
1726
- token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[1])
1727
- result = val[0].append(token)
1782
+ module_eval(<<'.,.,', 'parser.y', 339)
1783
+ def _reduce_85(val, _values, result)
1784
+ token = Lrama::Lexer::Token::Parameterizing.new(s_value: val[1].s_value, location: @lexer.location, args: val[3])
1785
+ builder = val[0]
1786
+ builder.add_rhs(token)
1787
+ builder.lhs_tag = val[5]
1788
+ builder.line = val[1].first_line
1789
+ result = builder
1728
1790
 
1729
1791
  result
1730
1792
  end
1731
1793
  .,.,
1732
1794
 
1733
- module_eval(<<'.,.,', 'parser.y', 325)
1734
- def _reduce_88(val, _values, result)
1795
+ module_eval(<<'.,.,', 'parser.y', 348)
1796
+ def _reduce_86(val, _values, result)
1735
1797
  if @prec_seen
1736
- raise "Multiple User_code after %prec" if @code_after_prec
1798
+ on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
1737
1799
  @code_after_prec = true
1738
1800
  end
1739
1801
  begin_c_declaration("}")
@@ -1742,49 +1804,73 @@ module_eval(<<'.,.,', 'parser.y', 325)
1742
1804
  end
1743
1805
  .,.,
1744
1806
 
1745
- module_eval(<<'.,.,', 'parser.y', 333)
1746
- def _reduce_89(val, _values, result)
1807
+ module_eval(<<'.,.,', 'parser.y', 356)
1808
+ def _reduce_87(val, _values, result)
1747
1809
  end_c_declaration
1748
1810
 
1749
1811
  result
1750
1812
  end
1751
1813
  .,.,
1752
1814
 
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)
1815
+ module_eval(<<'.,.,', 'parser.y', 360)
1816
+ def _reduce_88(val, _values, result)
1817
+ user_code = val[3]
1818
+ user_code.alias_name = val[6]
1819
+ builder = val[0]
1820
+ builder.user_code = user_code
1821
+ result = builder
1758
1822
 
1759
1823
  result
1760
1824
  end
1761
1825
  .,.,
1762
1826
 
1763
- module_eval(<<'.,.,', 'parser.y', 343)
1764
- def _reduce_91(val, _values, result)
1827
+ module_eval(<<'.,.,', 'parser.y', 368)
1828
+ def _reduce_89(val, _values, result)
1765
1829
  sym = @grammar.find_symbol_by_id!(val[2])
1766
- result = val[0].append(sym)
1767
1830
  @prec_seen = true
1831
+ builder = val[0]
1832
+ builder.precedence_sym = sym
1833
+ result = builder
1768
1834
 
1769
1835
  result
1770
1836
  end
1771
1837
  .,.,
1772
1838
 
1839
+ # reduce 90 omitted
1840
+
1841
+ # reduce 91 omitted
1842
+
1773
1843
  # reduce 92 omitted
1774
1844
 
1775
- module_eval(<<'.,.,', 'parser.y', 349)
1845
+ module_eval(<<'.,.,', 'parser.y', 379)
1776
1846
  def _reduce_93(val, _values, result)
1777
- result = val[1].s_value
1847
+ result = [val[0]]
1778
1848
  result
1779
1849
  end
1780
1850
  .,.,
1781
1851
 
1782
- # reduce 94 omitted
1852
+ module_eval(<<'.,.,', 'parser.y', 380)
1853
+ def _reduce_94(val, _values, result)
1854
+ result = val[0].append(val[2])
1855
+ result
1856
+ end
1857
+ .,.,
1783
1858
 
1784
1859
  # reduce 95 omitted
1785
1860
 
1786
- module_eval(<<'.,.,', 'parser.y', 356)
1861
+ module_eval(<<'.,.,', 'parser.y', 383)
1787
1862
  def _reduce_96(val, _values, result)
1863
+ result = val[1].s_value
1864
+ result
1865
+ end
1866
+ .,.,
1867
+
1868
+ # reduce 97 omitted
1869
+
1870
+ # reduce 98 omitted
1871
+
1872
+ module_eval(<<'.,.,', 'parser.y', 390)
1873
+ def _reduce_99(val, _values, result)
1788
1874
  begin_c_declaration('\Z')
1789
1875
  @grammar.epilogue_first_lineno = @lexer.line + 1
1790
1876
 
@@ -1792,8 +1878,8 @@ module_eval(<<'.,.,', 'parser.y', 356)
1792
1878
  end
1793
1879
  .,.,
1794
1880
 
1795
- module_eval(<<'.,.,', 'parser.y', 361)
1796
- def _reduce_97(val, _values, result)
1881
+ module_eval(<<'.,.,', 'parser.y', 395)
1882
+ def _reduce_100(val, _values, result)
1797
1883
  end_c_declaration
1798
1884
  @grammar.epilogue = val[2].s_value
1799
1885
 
@@ -1801,41 +1887,45 @@ module_eval(<<'.,.,', 'parser.y', 361)
1801
1887
  end
1802
1888
  .,.,
1803
1889
 
1804
- # reduce 98 omitted
1890
+ # reduce 101 omitted
1805
1891
 
1806
- # reduce 99 omitted
1892
+ # reduce 102 omitted
1807
1893
 
1808
- # reduce 100 omitted
1894
+ # reduce 103 omitted
1809
1895
 
1810
- # reduce 101 omitted
1896
+ # reduce 104 omitted
1811
1897
 
1812
- # reduce 102 omitted
1898
+ # reduce 105 omitted
1813
1899
 
1814
- module_eval(<<'.,.,', 'parser.y', 372)
1815
- def _reduce_103(val, _values, result)
1900
+ module_eval(<<'.,.,', 'parser.y', 406)
1901
+ def _reduce_106(val, _values, result)
1816
1902
  result = [val[0]]
1817
1903
  result
1818
1904
  end
1819
1905
  .,.,
1820
1906
 
1821
- module_eval(<<'.,.,', 'parser.y', 373)
1822
- def _reduce_104(val, _values, result)
1907
+ module_eval(<<'.,.,', 'parser.y', 407)
1908
+ def _reduce_107(val, _values, result)
1823
1909
  result = val[0].append(val[1])
1824
1910
  result
1825
1911
  end
1826
1912
  .,.,
1827
1913
 
1828
- # reduce 105 omitted
1914
+ # reduce 108 omitted
1829
1915
 
1830
- # reduce 106 omitted
1916
+ # reduce 109 omitted
1831
1917
 
1832
- module_eval(<<'.,.,', 'parser.y', 378)
1833
- def _reduce_107(val, _values, result)
1918
+ module_eval(<<'.,.,', 'parser.y', 412)
1919
+ def _reduce_110(val, _values, result)
1834
1920
  result = Lrama::Lexer::Token::Ident.new(s_value: val[0])
1835
1921
  result
1836
1922
  end
1837
1923
  .,.,
1838
1924
 
1925
+ # reduce 111 omitted
1926
+
1927
+ # reduce 112 omitted
1928
+
1839
1929
  def _reduce_none(val, _values, result)
1840
1930
  val[0]
1841
1931
  end