lrama 0.5.10 → 0.5.12

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