lrama 0.6.2 → 0.6.4

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 +2 -3
  3. data/Gemfile +1 -1
  4. data/NEWS.md +101 -1
  5. data/README.md +23 -0
  6. data/Steepfile +5 -0
  7. data/lib/lrama/context.rb +4 -4
  8. data/lib/lrama/grammar/code/destructor_code.rb +40 -0
  9. data/lib/lrama/grammar/code/initial_action_code.rb +6 -0
  10. data/lib/lrama/grammar/code/no_reference_code.rb +4 -0
  11. data/lib/lrama/grammar/code/printer_code.rb +6 -0
  12. data/lib/lrama/grammar/code/rule_action.rb +11 -1
  13. data/lib/lrama/grammar/code.rb +1 -0
  14. data/lib/lrama/grammar/destructor.rb +9 -0
  15. data/lib/lrama/grammar/reference.rb +4 -3
  16. data/lib/lrama/grammar/rule_builder.rb +10 -3
  17. data/lib/lrama/grammar/stdlib.y +42 -0
  18. data/lib/lrama/grammar/symbol.rb +4 -2
  19. data/lib/lrama/grammar/symbols/resolver.rb +293 -0
  20. data/lib/lrama/grammar/symbols.rb +1 -0
  21. data/lib/lrama/grammar.rb +32 -244
  22. data/lib/lrama/lexer/token/user_code.rb +13 -2
  23. data/lib/lrama/lexer/token.rb +1 -1
  24. data/lib/lrama/lexer.rb +7 -0
  25. data/lib/lrama/option_parser.rb +25 -12
  26. data/lib/lrama/options.rb +1 -0
  27. data/lib/lrama/output.rb +75 -2
  28. data/lib/lrama/parser.rb +537 -464
  29. data/lib/lrama/state.rb +4 -4
  30. data/lib/lrama/states/item.rb +6 -8
  31. data/lib/lrama/states_reporter.rb +2 -2
  32. data/lib/lrama/version.rb +1 -1
  33. data/lrama.gemspec +7 -0
  34. data/parser.y +27 -0
  35. data/sig/lrama/grammar/binding.rbs +0 -1
  36. data/sig/lrama/grammar/code/destructor_code.rbs +15 -0
  37. data/sig/lrama/grammar/destructor.rbs +11 -0
  38. data/sig/lrama/grammar/parameterizing_rule/resolver.rbs +0 -1
  39. data/sig/lrama/grammar/reference.rbs +2 -2
  40. data/sig/lrama/grammar/symbol.rbs +5 -4
  41. data/sig/lrama/grammar/symbols/resolver.rbs +41 -0
  42. data/sig/lrama/grammar/type.rbs +11 -0
  43. data/sig/lrama/options.rbs +17 -0
  44. data/template/bison/yacc.c +12 -1
  45. metadata +17 -3
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', 501)
661
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 528)
662
662
 
663
663
  include Lrama::Report::Duration
664
664
 
@@ -732,303 +732,316 @@ end
732
732
  ##### State transition tables begin ###
733
733
 
734
734
  racc_action_table = [
735
- 86, 45, 87, 146, 145, 68, 45, 45, 146, 189,
736
- 68, 68, 45, 6, 189, 7, 68, 148, 200, 45,
737
- 144, 44, 148, 190, 59, 164, 165, 166, 190, 3,
738
- 45, 41, 44, 8, 68, 64, 35, 42, 45, 149,
739
- 44, 41, 88, 71, 149, 191, 81, 45, 48, 44,
740
- 191, 22, 24, 25, 26, 27, 28, 29, 30, 31,
741
- 32, 22, 24, 25, 26, 27, 28, 29, 30, 31,
742
- 32, 9, 45, 48, 44, 13, 14, 15, 16, 17,
743
- 18, 48, 51, 19, 20, 21, 22, 24, 25, 26,
744
- 27, 28, 29, 30, 31, 32, 33, 45, 45, 44,
745
- 44, 52, 71, 71, 45, 45, 44, 44, 45, 71,
746
- 44, 53, 68, 174, 45, 45, 44, 44, 68, 174,
747
- 45, 45, 44, 44, 68, 174, 45, 45, 44, 44,
748
- 68, 174, 45, 45, 44, 44, 68, 174, 45, 45,
749
- 44, 44, 68, 174, 45, 45, 44, 44, 68, 68,
750
- 45, 45, 44, 44, 68, 68, 45, 45, 44, 44,
751
- 68, 68, 45, 45, 180, 44, 68, 68, 45, 45,
752
- 180, 44, 68, 68, 45, 45, 180, 44, 68, 164,
753
- 165, 166, 84, 45, 45, 44, 44, 142, 193, 143,
754
- 194, 164, 165, 166, 209, 211, 194, 194, 54, 55,
755
- 56, 77, 78, 82, 84, 89, 89, 89, 91, 97,
756
- 101, 102, 105, 105, 105, 105, 108, 111, 112, 114,
757
- 116, 117, 118, 119, 120, 123, 127, 128, 129, 132,
758
- 133, 134, 136, 151, 153, 154, 155, 156, 157, 158,
759
- 159, 132, 161, 169, 170, 179, 184, 185, 187, 192,
760
- 179, 84, 184, 206, 208, 84, 213, 84 ]
735
+ 96, 50, 97, 156, 155, 78, 50, 50, 156, 199,
736
+ 78, 78, 50, 50, 199, 49, 78, 158, 69, 6,
737
+ 3, 7, 158, 200, 210, 154, 8, 50, 200, 49,
738
+ 40, 174, 175, 176, 47, 50, 46, 49, 53, 78,
739
+ 74, 50, 53, 49, 159, 53, 81, 98, 56, 159,
740
+ 201, 174, 175, 176, 94, 201, 22, 24, 25, 26,
741
+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
742
+ 37, 46, 50, 50, 49, 49, 91, 81, 81, 50,
743
+ 50, 49, 49, 50, 81, 49, 57, 78, 184, 58,
744
+ 59, 22, 24, 25, 26, 27, 28, 29, 30, 31,
745
+ 32, 33, 34, 35, 36, 37, 9, 50, 60, 49,
746
+ 13, 14, 15, 16, 17, 18, 61, 62, 19, 20,
747
+ 21, 22, 24, 25, 26, 27, 28, 29, 30, 31,
748
+ 32, 33, 34, 35, 36, 37, 38, 50, 50, 49,
749
+ 49, 78, 184, 50, 50, 49, 49, 78, 184, 50,
750
+ 50, 49, 49, 78, 184, 50, 50, 49, 49, 78,
751
+ 184, 50, 50, 49, 49, 78, 184, 50, 50, 49,
752
+ 49, 78, 78, 50, 50, 49, 49, 78, 78, 50,
753
+ 50, 49, 49, 78, 78, 50, 50, 190, 49, 78,
754
+ 78, 50, 50, 190, 49, 78, 78, 50, 50, 190,
755
+ 49, 78, 50, 50, 49, 49, 152, 203, 153, 204,
756
+ 174, 175, 176, 219, 221, 204, 204, 63, 64, 65,
757
+ 66, 87, 88, 92, 94, 99, 99, 99, 101, 107,
758
+ 111, 112, 115, 115, 115, 115, 118, 121, 122, 124,
759
+ 126, 127, 128, 129, 130, 133, 137, 138, 139, 142,
760
+ 143, 144, 146, 161, 163, 164, 165, 166, 167, 168,
761
+ 169, 142, 171, 179, 180, 189, 194, 195, 197, 202,
762
+ 189, 94, 194, 216, 218, 94, 223, 94 ]
761
763
 
762
764
  racc_action_check = [
763
- 43, 131, 43, 131, 130, 131, 160, 178, 160, 178,
764
- 160, 178, 197, 2, 197, 2, 197, 131, 189, 27,
765
- 130, 27, 160, 178, 27, 189, 189, 189, 197, 1,
766
- 28, 9, 28, 3, 28, 28, 7, 13, 29, 131,
767
- 29, 36, 43, 29, 160, 178, 36, 14, 15, 14,
768
- 197, 9, 9, 9, 9, 9, 9, 9, 9, 9,
769
- 9, 36, 36, 36, 36, 36, 36, 36, 36, 36,
770
- 36, 4, 58, 16, 58, 4, 4, 4, 4, 4,
771
- 4, 17, 18, 4, 4, 4, 4, 4, 4, 4,
772
- 4, 4, 4, 4, 4, 4, 4, 30, 31, 30,
773
- 31, 19, 30, 31, 32, 59, 32, 59, 155, 32,
774
- 155, 22, 155, 155, 156, 70, 156, 70, 156, 156,
775
- 157, 71, 157, 71, 157, 157, 171, 97, 171, 97,
776
- 171, 171, 175, 99, 175, 99, 175, 175, 176, 105,
777
- 176, 105, 176, 176, 63, 64, 63, 64, 63, 64,
778
- 102, 104, 102, 104, 102, 104, 124, 149, 124, 149,
779
- 124, 149, 161, 191, 161, 191, 161, 191, 192, 194,
780
- 192, 194, 192, 194, 200, 107, 200, 107, 200, 147,
781
- 147, 147, 147, 121, 125, 121, 125, 126, 181, 126,
782
- 181, 182, 182, 182, 203, 207, 203, 207, 24, 25,
783
- 26, 33, 34, 39, 40, 47, 49, 50, 51, 57,
784
- 61, 62, 69, 74, 75, 76, 77, 83, 84, 90,
785
- 92, 93, 94, 95, 96, 100, 108, 109, 110, 111,
786
- 112, 113, 115, 135, 137, 138, 139, 140, 141, 142,
787
- 143, 144, 146, 150, 152, 158, 163, 167, 177, 180,
788
- 187, 188, 193, 196, 201, 206, 212, 213 ]
765
+ 48, 141, 48, 141, 140, 141, 170, 188, 170, 188,
766
+ 170, 188, 207, 32, 207, 32, 207, 141, 32, 2,
767
+ 1, 2, 170, 188, 199, 140, 3, 14, 207, 14,
768
+ 7, 199, 199, 199, 13, 33, 9, 33, 15, 33,
769
+ 33, 34, 16, 34, 141, 17, 34, 48, 18, 170,
770
+ 188, 157, 157, 157, 157, 207, 9, 9, 9, 9,
771
+ 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
772
+ 9, 41, 35, 36, 35, 36, 41, 35, 36, 37,
773
+ 68, 37, 68, 165, 37, 165, 19, 165, 165, 22,
774
+ 24, 41, 41, 41, 41, 41, 41, 41, 41, 41,
775
+ 41, 41, 41, 41, 41, 41, 4, 69, 25, 69,
776
+ 4, 4, 4, 4, 4, 4, 26, 27, 4, 4,
777
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
778
+ 4, 4, 4, 4, 4, 4, 4, 166, 80, 166,
779
+ 80, 166, 166, 167, 81, 167, 81, 167, 167, 181,
780
+ 107, 181, 107, 181, 181, 185, 109, 185, 109, 185,
781
+ 185, 186, 115, 186, 115, 186, 186, 73, 74, 73,
782
+ 74, 73, 74, 112, 114, 112, 114, 112, 114, 134,
783
+ 159, 134, 159, 134, 159, 171, 201, 171, 201, 171,
784
+ 201, 202, 204, 202, 204, 202, 204, 210, 117, 210,
785
+ 117, 210, 131, 135, 131, 135, 136, 191, 136, 191,
786
+ 192, 192, 192, 213, 217, 213, 217, 28, 29, 30,
787
+ 31, 38, 39, 44, 45, 52, 54, 55, 56, 67,
788
+ 71, 72, 79, 84, 85, 86, 87, 93, 94, 100,
789
+ 102, 103, 104, 105, 106, 110, 118, 119, 120, 121,
790
+ 122, 123, 125, 145, 147, 148, 149, 150, 151, 152,
791
+ 153, 154, 156, 160, 162, 168, 173, 177, 187, 190,
792
+ 197, 198, 203, 206, 211, 216, 222, 223 ]
789
793
 
790
794
  racc_action_pointer = [
791
- nil, 29, 3, 33, 62, nil, nil, 29, nil, 27,
792
- nil, nil, nil, 31, 44, 29, 54, 62, 77, 82,
793
- nil, nil, 92, nil, 179, 180, 181, 16, 27, 35,
794
- 94, 95, 101, 196, 200, nil, 37, nil, nil, 180,
795
- 159, nil, nil, -5, nil, nil, nil, 186, nil, 187,
796
- 188, 189, nil, nil, nil, nil, nil, 201, 69, 102,
797
- nil, 204, 203, 141, 142, nil, nil, nil, nil, 204,
798
- 112, 118, nil, nil, 205, 206, 207, 181, nil, nil,
799
- nil, nil, nil, 180, 213, nil, nil, nil, nil, nil,
800
- 217, nil, 218, 219, 220, 221, 222, 124, nil, 130,
801
- 218, nil, 147, nil, 148, 136, nil, 172, 221, 216,
802
- 226, 189, 184, 229, nil, 230, nil, nil, nil, nil,
803
- nil, 180, nil, nil, 153, 181, 151, nil, nil, nil,
804
- -19, -2, nil, nil, nil, 213, nil, 214, 215, 216,
805
- 217, 218, 202, 235, 201, nil, 207, 137, nil, 154,
806
- 223, nil, 224, nil, nil, 105, 111, 117, 205, nil,
807
- 3, 159, nil, 238, nil, nil, nil, 245, nil, nil,
808
- nil, 123, nil, nil, nil, 129, 135, 209, 4, nil,
809
- 214, 152, 149, nil, nil, nil, nil, 210, 206, -17,
810
- nil, 160, 165, 244, 166, nil, 233, 9, nil, nil,
811
- 171, 252, nil, 158, nil, nil, 210, 159, nil, nil,
812
- nil, nil, 236, 212, nil ]
795
+ nil, 20, 9, 26, 97, nil, nil, 23, nil, 32,
796
+ nil, nil, nil, 28, 24, 19, 23, 26, 43, 67,
797
+ nil, nil, 70, nil, 71, 89, 97, 112, 212, 213,
798
+ 214, 215, 10, 32, 38, 69, 70, 76, 216, 220,
799
+ nil, 67, nil, nil, 200, 174, nil, nil, -5, nil,
800
+ nil, nil, 206, nil, 207, 208, 209, nil, nil, nil,
801
+ nil, nil, nil, nil, nil, nil, nil, 221, 77, 104,
802
+ nil, 224, 223, 164, 165, nil, nil, nil, nil, 224,
803
+ 135, 141, nil, nil, 225, 226, 227, 196, nil, nil,
804
+ nil, nil, nil, 195, 233, nil, nil, nil, nil, nil,
805
+ 237, nil, 238, 239, 240, 241, 242, 147, nil, 153,
806
+ 238, nil, 170, nil, 171, 159, nil, 195, 241, 236,
807
+ 246, 204, 199, 249, nil, 250, nil, nil, nil, nil,
808
+ nil, 199, nil, nil, 176, 200, 165, nil, nil, nil,
809
+ -19, -2, nil, nil, nil, 233, nil, 234, 235, 236,
810
+ 237, 238, 217, 255, 216, nil, 222, 4, nil, 177,
811
+ 243, nil, 244, nil, nil, 80, 134, 140, 220, nil,
812
+ 3, 182, nil, 258, nil, nil, nil, 265, nil, nil,
813
+ nil, 146, nil, nil, nil, 152, 158, 224, 4, nil,
814
+ 229, 166, 163, nil, nil, nil, nil, 225, 221, -16,
815
+ nil, 183, 188, 264, 189, nil, 253, 9, nil, nil,
816
+ 194, 272, nil, 172, nil, nil, 225, 173, nil, nil,
817
+ nil, nil, 256, 227, nil ]
813
818
 
814
819
  racc_action_default = [
815
- -2, -131, -8, -131, -131, -3, -4, -131, 215, -131,
816
- -9, -10, -11, -131, -131, -131, -131, -131, -131, -131,
817
- -23, -24, -131, -28, -131, -131, -131, -131, -131, -131,
818
- -131, -131, -131, -131, -131, -7, -116, -89, -91, -131,
819
- -113, -115, -12, -120, -87, -88, -119, -14, -78, -15,
820
- -16, -131, -20, -25, -29, -32, -35, -38, -44, -131,
821
- -47, -64, -39, -68, -131, -71, -73, -74, -128, -40,
822
- -81, -131, -84, -86, -41, -42, -43, -131, -5, -1,
823
- -90, -117, -92, -131, -131, -13, -121, -122, -123, -75,
824
- -131, -17, -131, -131, -131, -131, -131, -131, -48, -45,
825
- -66, -65, -131, -72, -69, -131, -85, -82, -131, -131,
826
- -131, -97, -131, -131, -79, -131, -21, -26, -30, -33,
827
- -36, -46, -49, -67, -70, -83, -131, -51, -6, -118,
828
- -93, -94, -98, -114, -76, -131, -18, -131, -131, -131,
829
- -131, -131, -131, -131, -97, -96, -87, -113, -102, -131,
830
- -131, -80, -131, -22, -27, -131, -131, -131, -55, -52,
831
- -95, -131, -99, -129, -106, -107, -108, -131, -105, -77,
832
- -19, -31, -124, -126, -127, -34, -37, -50, -53, -56,
833
- -87, -131, -109, -100, -130, -103, -125, -55, -113, -87,
834
- -60, -131, -131, -129, -131, -111, -131, -54, -57, -58,
835
- -131, -131, -63, -131, -101, -110, -113, -131, -61, -112,
836
- -104, -59, -131, -113, -62 ]
820
+ -2, -136, -8, -136, -136, -3, -4, -136, 225, -136,
821
+ -9, -10, -11, -136, -136, -136, -136, -136, -136, -136,
822
+ -23, -24, -136, -28, -136, -136, -136, -136, -136, -136,
823
+ -136, -136, -136, -136, -136, -136, -136, -136, -136, -136,
824
+ -7, -121, -94, -96, -136, -118, -120, -12, -125, -92,
825
+ -93, -124, -14, -83, -15, -16, -136, -20, -25, -29,
826
+ -32, -35, -38, -39, -40, -41, -42, -43, -49, -136,
827
+ -52, -69, -44, -73, -136, -76, -78, -79, -133, -45,
828
+ -86, -136, -89, -91, -46, -47, -48, -136, -5, -1,
829
+ -95, -122, -97, -136, -136, -13, -126, -127, -128, -80,
830
+ -136, -17, -136, -136, -136, -136, -136, -136, -53, -50,
831
+ -71, -70, -136, -77, -74, -136, -90, -87, -136, -136,
832
+ -136, -102, -136, -136, -84, -136, -21, -26, -30, -33,
833
+ -36, -51, -54, -72, -75, -88, -136, -56, -6, -123,
834
+ -98, -99, -103, -119, -81, -136, -18, -136, -136, -136,
835
+ -136, -136, -136, -136, -102, -101, -92, -118, -107, -136,
836
+ -136, -85, -136, -22, -27, -136, -136, -136, -60, -57,
837
+ -100, -136, -104, -134, -111, -112, -113, -136, -110, -82,
838
+ -19, -31, -129, -131, -132, -34, -37, -55, -58, -61,
839
+ -92, -136, -114, -105, -135, -108, -130, -60, -118, -92,
840
+ -65, -136, -136, -134, -136, -116, -136, -59, -62, -63,
841
+ -136, -136, -68, -136, -106, -115, -118, -136, -66, -117,
842
+ -109, -64, -136, -118, -67 ]
837
843
 
838
844
  racc_goto_table = [
839
- 83, 63, 46, 58, 98, 65, 106, 163, 183, 37,
840
- 178, 1, 2, 181, 107, 61, 4, 73, 73, 73,
841
- 73, 131, 186, 47, 49, 50, 186, 186, 69, 74,
842
- 75, 76, 171, 175, 176, 99, 80, 104, 204, 197,
843
- 103, 65, 195, 106, 203, 98, 61, 61, 125, 199,
844
- 36, 79, 207, 5, 160, 34, 109, 10, 73, 73,
845
- 11, 106, 12, 43, 85, 115, 152, 98, 92, 137,
846
- 93, 138, 94, 121, 139, 124, 95, 140, 96, 65,
847
- 141, 103, 57, 62, 100, 61, 122, 61, 126, 177,
848
- 201, 212, 113, 73, 150, 73, 90, 135, 130, 167,
849
- 196, 103, 110, nil, nil, nil, nil, 162, 147, 61,
850
- nil, nil, nil, 73, nil, nil, nil, nil, nil, nil,
851
- nil, nil, nil, nil, nil, nil, 168, nil, nil, nil,
852
- nil, nil, nil, nil, nil, nil, nil, 147, 182, nil,
853
- nil, nil, nil, nil, nil, nil, nil, nil, 198, nil,
854
- nil, nil, nil, nil, nil, 188, nil, nil, nil, nil,
855
- nil, nil, nil, nil, nil, nil, 210, nil, 202, 182,
856
- nil, 205, nil, 214, 188, nil, nil, 182 ]
845
+ 93, 51, 73, 68, 116, 75, 108, 173, 193, 1,
846
+ 188, 196, 2, 191, 117, 196, 196, 141, 4, 71,
847
+ 41, 83, 83, 83, 83, 42, 79, 84, 85, 86,
848
+ 52, 54, 55, 181, 185, 186, 89, 5, 214, 207,
849
+ 109, 116, 205, 114, 213, 113, 75, 108, 135, 209,
850
+ 170, 39, 217, 119, 10, 71, 71, 90, 11, 116,
851
+ 12, 48, 95, 125, 162, 102, 147, 83, 83, 108,
852
+ 103, 148, 104, 149, 105, 150, 106, 151, 131, 67,
853
+ 72, 134, 110, 132, 75, 136, 113, 187, 211, 222,
854
+ 123, 160, 100, 145, 71, 140, 71, 177, 206, 120,
855
+ nil, nil, 83, nil, 83, nil, 113, nil, nil, nil,
856
+ nil, nil, 172, 157, nil, nil, nil, nil, 71, nil,
857
+ nil, nil, 83, nil, nil, nil, nil, nil, nil, nil,
858
+ nil, 178, nil, nil, nil, nil, nil, nil, nil, nil,
859
+ nil, nil, 157, 192, nil, nil, nil, nil, nil, nil,
860
+ nil, nil, nil, 208, nil, nil, nil, nil, nil, nil,
861
+ 198, nil, nil, nil, nil, nil, nil, nil, nil, nil,
862
+ nil, 220, nil, 212, 192, nil, 215, nil, 224, 198,
863
+ nil, nil, 192 ]
857
864
 
858
865
  racc_goto_check = [
859
- 41, 46, 34, 32, 33, 40, 53, 42, 59, 54,
860
- 39, 1, 2, 43, 52, 34, 3, 34, 34, 34,
861
- 34, 58, 63, 14, 14, 14, 63, 63, 31, 31,
862
- 31, 31, 20, 20, 20, 32, 54, 46, 59, 39,
863
- 40, 40, 42, 53, 43, 33, 34, 34, 52, 42,
864
- 4, 5, 43, 6, 58, 7, 8, 9, 34, 34,
865
- 10, 53, 11, 12, 13, 15, 16, 33, 17, 18,
866
- 21, 22, 23, 32, 24, 46, 25, 26, 27, 40,
867
- 28, 40, 29, 30, 35, 34, 36, 34, 37, 38,
868
- 44, 45, 48, 34, 49, 34, 50, 51, 57, 60,
869
- 61, 40, 62, nil, nil, nil, nil, 41, 40, 34,
870
- nil, nil, nil, 34, nil, nil, nil, nil, nil, nil,
871
- nil, nil, nil, nil, nil, nil, 40, nil, nil, nil,
872
- nil, nil, nil, nil, nil, nil, nil, 40, 40, nil,
873
- nil, nil, nil, nil, nil, nil, nil, nil, 41, nil,
874
- nil, nil, nil, nil, nil, 40, nil, nil, nil, nil,
875
- nil, nil, nil, nil, nil, nil, 41, nil, 40, 40,
876
- nil, 40, nil, 41, 40, nil, nil, 40 ]
866
+ 41, 34, 46, 32, 53, 40, 33, 42, 59, 1,
867
+ 39, 63, 2, 43, 52, 63, 63, 58, 3, 34,
868
+ 4, 34, 34, 34, 34, 54, 31, 31, 31, 31,
869
+ 14, 14, 14, 20, 20, 20, 5, 6, 59, 39,
870
+ 32, 53, 42, 46, 43, 40, 40, 33, 52, 42,
871
+ 58, 7, 43, 8, 9, 34, 34, 54, 10, 53,
872
+ 11, 12, 13, 15, 16, 17, 18, 34, 34, 33,
873
+ 21, 22, 23, 24, 25, 26, 27, 28, 32, 29,
874
+ 30, 46, 35, 36, 40, 37, 40, 38, 44, 45,
875
+ 48, 49, 50, 51, 34, 57, 34, 60, 61, 62,
876
+ nil, nil, 34, nil, 34, nil, 40, nil, nil, nil,
877
+ nil, nil, 41, 40, nil, nil, nil, nil, 34, nil,
878
+ nil, nil, 34, nil, nil, nil, nil, nil, nil, nil,
879
+ nil, 40, nil, nil, nil, nil, nil, nil, nil, nil,
880
+ nil, nil, 40, 40, nil, nil, nil, nil, nil, nil,
881
+ nil, nil, nil, 41, nil, nil, nil, nil, nil, nil,
882
+ 40, nil, nil, nil, nil, nil, nil, nil, nil, nil,
883
+ nil, 41, nil, 40, 40, nil, 40, nil, 41, 40,
884
+ nil, nil, 40 ]
877
885
 
878
886
  racc_goto_pointer = [
879
- nil, 11, 12, 14, 41, 15, 51, 49, -22, 53,
880
- 56, 58, 49, 21, 8, -26, -70, 16, -47, nil,
881
- -123, 17, -46, 18, -44, 21, -42, 22, -40, 55,
882
- 55, -1, -24, -54, -12, 23, -14, -20, -69, -148,
883
- -23, -40, -140, -148, -100, -117, -27, nil, 3, -40,
884
- 48, -17, -57, -64, 0, nil, nil, -13, -90, -155,
885
- -49, -85, 21, -149 ]
887
+ nil, 9, 12, 16, 11, -5, 35, 45, -35, 50,
888
+ 54, 56, 47, 14, 15, -38, -82, 8, -60, nil,
889
+ -132, 12, -56, 13, -55, 14, -54, 15, -53, 47,
890
+ 47, -8, -29, -62, -13, 11, -27, -33, -81, -158,
891
+ -28, -45, -150, -158, -112, -129, -31, nil, -9, -53,
892
+ 39, -31, -67, -76, 16, nil, nil, -26, -104, -165,
893
+ -61, -97, 8, -170 ]
886
894
 
887
895
  racc_goto_default = [
888
896
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
889
- 39, nil, nil, nil, nil, nil, nil, nil, nil, 23,
897
+ 44, nil, nil, nil, nil, nil, nil, nil, nil, 23,
890
898
  nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
891
- nil, nil, nil, 60, 66, nil, nil, nil, nil, nil,
892
- 173, nil, nil, nil, nil, nil, nil, 67, nil, nil,
893
- nil, nil, 70, 72, nil, 38, 40, nil, nil, nil,
894
- nil, nil, nil, 172 ]
899
+ nil, nil, nil, 70, 76, nil, nil, nil, nil, nil,
900
+ 183, nil, nil, nil, nil, nil, nil, 77, nil, nil,
901
+ nil, nil, 80, 82, nil, 43, 45, nil, nil, nil,
902
+ nil, nil, nil, 182 ]
895
903
 
896
904
  racc_reduce_table = [
897
905
  0, 0, :racc_error,
898
- 5, 49, :_reduce_none,
899
- 0, 50, :_reduce_none,
900
- 2, 50, :_reduce_none,
901
- 0, 55, :_reduce_4,
902
- 0, 56, :_reduce_5,
903
- 5, 54, :_reduce_6,
904
- 2, 54, :_reduce_none,
905
- 0, 51, :_reduce_8,
906
- 2, 51, :_reduce_none,
907
- 1, 57, :_reduce_none,
908
- 1, 57, :_reduce_none,
909
- 2, 57, :_reduce_12,
910
- 3, 57, :_reduce_none,
911
- 2, 57, :_reduce_none,
912
- 2, 57, :_reduce_15,
913
- 2, 57, :_reduce_16,
914
- 0, 63, :_reduce_17,
915
- 0, 64, :_reduce_18,
916
- 7, 57, :_reduce_19,
917
- 0, 65, :_reduce_20,
918
- 0, 66, :_reduce_21,
919
- 6, 57, :_reduce_22,
920
- 1, 57, :_reduce_23,
921
- 1, 57, :_reduce_none,
922
- 0, 69, :_reduce_25,
923
- 0, 70, :_reduce_26,
924
- 6, 58, :_reduce_27,
925
- 1, 58, :_reduce_none,
926
- 0, 71, :_reduce_29,
927
- 0, 72, :_reduce_30,
928
- 7, 58, :_reduce_none,
929
- 0, 73, :_reduce_32,
930
- 0, 74, :_reduce_33,
931
- 7, 58, :_reduce_34,
932
- 0, 75, :_reduce_35,
933
- 0, 76, :_reduce_36,
934
- 7, 58, :_reduce_37,
935
- 2, 67, :_reduce_none,
936
- 2, 67, :_reduce_39,
937
- 2, 67, :_reduce_40,
938
- 2, 67, :_reduce_41,
939
- 2, 67, :_reduce_42,
940
- 2, 67, :_reduce_43,
941
- 1, 77, :_reduce_44,
942
- 2, 77, :_reduce_45,
943
- 3, 77, :_reduce_46,
944
- 1, 80, :_reduce_47,
945
- 2, 80, :_reduce_48,
946
- 3, 81, :_reduce_49,
947
- 7, 59, :_reduce_50,
948
- 1, 85, :_reduce_51,
949
- 3, 85, :_reduce_52,
950
- 1, 86, :_reduce_53,
906
+ 5, 54, :_reduce_none,
907
+ 0, 55, :_reduce_none,
908
+ 2, 55, :_reduce_none,
909
+ 0, 60, :_reduce_4,
910
+ 0, 61, :_reduce_5,
911
+ 5, 59, :_reduce_6,
912
+ 2, 59, :_reduce_none,
913
+ 0, 56, :_reduce_8,
914
+ 2, 56, :_reduce_none,
915
+ 1, 62, :_reduce_none,
916
+ 1, 62, :_reduce_none,
917
+ 2, 62, :_reduce_12,
918
+ 3, 62, :_reduce_none,
919
+ 2, 62, :_reduce_none,
920
+ 2, 62, :_reduce_15,
921
+ 2, 62, :_reduce_16,
922
+ 0, 68, :_reduce_17,
923
+ 0, 69, :_reduce_18,
924
+ 7, 62, :_reduce_19,
925
+ 0, 70, :_reduce_20,
926
+ 0, 71, :_reduce_21,
927
+ 6, 62, :_reduce_22,
928
+ 1, 62, :_reduce_23,
929
+ 1, 62, :_reduce_none,
930
+ 0, 74, :_reduce_25,
931
+ 0, 75, :_reduce_26,
932
+ 6, 63, :_reduce_27,
933
+ 1, 63, :_reduce_none,
934
+ 0, 76, :_reduce_29,
935
+ 0, 77, :_reduce_30,
936
+ 7, 63, :_reduce_31,
937
+ 0, 78, :_reduce_32,
938
+ 0, 79, :_reduce_33,
939
+ 7, 63, :_reduce_34,
940
+ 0, 80, :_reduce_35,
941
+ 0, 81, :_reduce_36,
942
+ 7, 63, :_reduce_37,
943
+ 2, 63, :_reduce_38,
944
+ 2, 63, :_reduce_39,
945
+ 2, 63, :_reduce_40,
946
+ 2, 63, :_reduce_41,
947
+ 2, 63, :_reduce_42,
948
+ 2, 72, :_reduce_none,
949
+ 2, 72, :_reduce_44,
950
+ 2, 72, :_reduce_45,
951
+ 2, 72, :_reduce_46,
952
+ 2, 72, :_reduce_47,
953
+ 2, 72, :_reduce_48,
954
+ 1, 82, :_reduce_49,
955
+ 2, 82, :_reduce_50,
956
+ 3, 82, :_reduce_51,
957
+ 1, 85, :_reduce_52,
958
+ 2, 85, :_reduce_53,
951
959
  3, 86, :_reduce_54,
952
- 0, 87, :_reduce_55,
953
- 1, 87, :_reduce_56,
954
- 3, 87, :_reduce_57,
955
- 3, 87, :_reduce_58,
956
- 5, 87, :_reduce_59,
960
+ 7, 64, :_reduce_55,
961
+ 1, 90, :_reduce_56,
962
+ 3, 90, :_reduce_57,
963
+ 1, 91, :_reduce_58,
964
+ 3, 91, :_reduce_59,
957
965
  0, 92, :_reduce_60,
958
- 0, 93, :_reduce_61,
959
- 7, 87, :_reduce_62,
960
- 3, 87, :_reduce_63,
961
- 0, 83, :_reduce_none,
962
- 1, 83, :_reduce_none,
963
- 0, 84, :_reduce_none,
964
- 1, 84, :_reduce_none,
965
- 1, 78, :_reduce_68,
966
- 2, 78, :_reduce_69,
967
- 3, 78, :_reduce_70,
968
- 1, 94, :_reduce_71,
969
- 2, 94, :_reduce_72,
970
- 1, 88, :_reduce_none,
966
+ 1, 92, :_reduce_61,
967
+ 3, 92, :_reduce_62,
968
+ 3, 92, :_reduce_63,
969
+ 5, 92, :_reduce_64,
970
+ 0, 97, :_reduce_65,
971
+ 0, 98, :_reduce_66,
972
+ 7, 92, :_reduce_67,
973
+ 3, 92, :_reduce_68,
974
+ 0, 88, :_reduce_none,
971
975
  1, 88, :_reduce_none,
972
- 0, 96, :_reduce_75,
973
- 0, 97, :_reduce_76,
974
- 6, 62, :_reduce_77,
975
- 0, 98, :_reduce_78,
976
- 0, 99, :_reduce_79,
977
- 5, 62, :_reduce_80,
978
- 1, 79, :_reduce_81,
979
- 2, 79, :_reduce_82,
980
- 3, 79, :_reduce_83,
981
- 1, 100, :_reduce_84,
982
- 2, 100, :_reduce_85,
983
- 1, 101, :_reduce_none,
984
- 1, 82, :_reduce_87,
985
- 1, 82, :_reduce_88,
986
- 1, 52, :_reduce_none,
987
- 2, 52, :_reduce_none,
988
- 1, 102, :_reduce_none,
989
- 2, 102, :_reduce_none,
990
- 4, 103, :_reduce_93,
991
- 1, 105, :_reduce_94,
992
- 3, 105, :_reduce_95,
993
- 2, 105, :_reduce_none,
994
- 0, 106, :_reduce_97,
995
- 1, 106, :_reduce_98,
996
- 3, 106, :_reduce_99,
997
- 4, 106, :_reduce_100,
998
- 6, 106, :_reduce_101,
999
- 0, 108, :_reduce_102,
1000
- 0, 109, :_reduce_103,
1001
- 7, 106, :_reduce_104,
1002
- 3, 106, :_reduce_105,
1003
- 1, 90, :_reduce_106,
1004
- 1, 90, :_reduce_107,
1005
- 1, 90, :_reduce_108,
1006
- 1, 91, :_reduce_109,
1007
- 3, 91, :_reduce_110,
1008
- 2, 91, :_reduce_111,
1009
- 4, 91, :_reduce_112,
1010
976
  0, 89, :_reduce_none,
1011
- 3, 89, :_reduce_114,
1012
- 1, 104, :_reduce_none,
1013
- 0, 53, :_reduce_none,
1014
- 0, 110, :_reduce_117,
1015
- 3, 53, :_reduce_118,
1016
- 1, 60, :_reduce_none,
1017
- 0, 61, :_reduce_none,
1018
- 1, 61, :_reduce_none,
1019
- 1, 61, :_reduce_none,
1020
- 1, 61, :_reduce_none,
1021
- 1, 68, :_reduce_124,
1022
- 2, 68, :_reduce_125,
1023
- 1, 111, :_reduce_none,
1024
- 1, 111, :_reduce_none,
1025
- 1, 95, :_reduce_128,
1026
- 0, 107, :_reduce_none,
1027
- 1, 107, :_reduce_none ]
1028
-
1029
- racc_reduce_n = 131
1030
-
1031
- racc_shift_n = 215
977
+ 1, 89, :_reduce_none,
978
+ 1, 83, :_reduce_73,
979
+ 2, 83, :_reduce_74,
980
+ 3, 83, :_reduce_75,
981
+ 1, 99, :_reduce_76,
982
+ 2, 99, :_reduce_77,
983
+ 1, 93, :_reduce_none,
984
+ 1, 93, :_reduce_none,
985
+ 0, 101, :_reduce_80,
986
+ 0, 102, :_reduce_81,
987
+ 6, 67, :_reduce_82,
988
+ 0, 103, :_reduce_83,
989
+ 0, 104, :_reduce_84,
990
+ 5, 67, :_reduce_85,
991
+ 1, 84, :_reduce_86,
992
+ 2, 84, :_reduce_87,
993
+ 3, 84, :_reduce_88,
994
+ 1, 105, :_reduce_89,
995
+ 2, 105, :_reduce_90,
996
+ 1, 106, :_reduce_none,
997
+ 1, 87, :_reduce_92,
998
+ 1, 87, :_reduce_93,
999
+ 1, 57, :_reduce_none,
1000
+ 2, 57, :_reduce_none,
1001
+ 1, 107, :_reduce_none,
1002
+ 2, 107, :_reduce_none,
1003
+ 4, 108, :_reduce_98,
1004
+ 1, 110, :_reduce_99,
1005
+ 3, 110, :_reduce_100,
1006
+ 2, 110, :_reduce_none,
1007
+ 0, 111, :_reduce_102,
1008
+ 1, 111, :_reduce_103,
1009
+ 3, 111, :_reduce_104,
1010
+ 4, 111, :_reduce_105,
1011
+ 6, 111, :_reduce_106,
1012
+ 0, 113, :_reduce_107,
1013
+ 0, 114, :_reduce_108,
1014
+ 7, 111, :_reduce_109,
1015
+ 3, 111, :_reduce_110,
1016
+ 1, 95, :_reduce_111,
1017
+ 1, 95, :_reduce_112,
1018
+ 1, 95, :_reduce_113,
1019
+ 1, 96, :_reduce_114,
1020
+ 3, 96, :_reduce_115,
1021
+ 2, 96, :_reduce_116,
1022
+ 4, 96, :_reduce_117,
1023
+ 0, 94, :_reduce_none,
1024
+ 3, 94, :_reduce_119,
1025
+ 1, 109, :_reduce_none,
1026
+ 0, 58, :_reduce_none,
1027
+ 0, 115, :_reduce_122,
1028
+ 3, 58, :_reduce_123,
1029
+ 1, 65, :_reduce_none,
1030
+ 0, 66, :_reduce_none,
1031
+ 1, 66, :_reduce_none,
1032
+ 1, 66, :_reduce_none,
1033
+ 1, 66, :_reduce_none,
1034
+ 1, 73, :_reduce_129,
1035
+ 2, 73, :_reduce_130,
1036
+ 1, 116, :_reduce_none,
1037
+ 1, 116, :_reduce_none,
1038
+ 1, 100, :_reduce_133,
1039
+ 0, 112, :_reduce_none,
1040
+ 1, 112, :_reduce_none ]
1041
+
1042
+ racc_reduce_n = 136
1043
+
1044
+ racc_shift_n = 225
1032
1045
 
1033
1046
  racc_token_table = {
1034
1047
  false => 0,
@@ -1059,28 +1072,33 @@ racc_token_table = {
1059
1072
  "%destructor" => 25,
1060
1073
  "%printer" => 26,
1061
1074
  "%error-token" => 27,
1062
- "%token" => 28,
1063
- "%type" => 29,
1064
- "%left" => 30,
1065
- "%right" => 31,
1066
- "%precedence" => 32,
1067
- "%nonassoc" => 33,
1068
- "%rule" => 34,
1069
- "(" => 35,
1070
- ")" => 36,
1071
- ":" => 37,
1072
- "," => 38,
1073
- "|" => 39,
1074
- "%empty" => 40,
1075
- "%prec" => 41,
1076
- "?" => 42,
1077
- "+" => 43,
1078
- "*" => 44,
1079
- "[" => 45,
1080
- "]" => 46,
1081
- "{...}" => 47 }
1082
-
1083
- racc_nt_base = 48
1075
+ "%after-shift" => 28,
1076
+ "%before-reduce" => 29,
1077
+ "%after-reduce" => 30,
1078
+ "%after-shift-error-token" => 31,
1079
+ "%after-pop-stack" => 32,
1080
+ "%token" => 33,
1081
+ "%type" => 34,
1082
+ "%left" => 35,
1083
+ "%right" => 36,
1084
+ "%precedence" => 37,
1085
+ "%nonassoc" => 38,
1086
+ "%rule" => 39,
1087
+ "(" => 40,
1088
+ ")" => 41,
1089
+ ":" => 42,
1090
+ "," => 43,
1091
+ "|" => 44,
1092
+ "%empty" => 45,
1093
+ "%prec" => 46,
1094
+ "?" => 47,
1095
+ "+" => 48,
1096
+ "*" => 49,
1097
+ "[" => 50,
1098
+ "]" => 51,
1099
+ "{...}" => 52 }
1100
+
1101
+ racc_nt_base = 53
1084
1102
 
1085
1103
  racc_use_result_var = true
1086
1104
 
@@ -1130,6 +1148,11 @@ Racc_token_to_s_table = [
1130
1148
  "\"%destructor\"",
1131
1149
  "\"%printer\"",
1132
1150
  "\"%error-token\"",
1151
+ "\"%after-shift\"",
1152
+ "\"%before-reduce\"",
1153
+ "\"%after-reduce\"",
1154
+ "\"%after-shift-error-token\"",
1155
+ "\"%after-pop-stack\"",
1133
1156
  "\"%token\"",
1134
1157
  "\"%type\"",
1135
1158
  "\"%left\"",
@@ -1401,9 +1424,19 @@ module_eval(<<'.,.,', 'parser.y', 96)
1401
1424
  end
1402
1425
  .,.,
1403
1426
 
1404
- # reduce 31 omitted
1427
+ module_eval(<<'.,.,', 'parser.y', 100)
1428
+ def _reduce_31(val, _values, result)
1429
+ @grammar.add_destructor(
1430
+ ident_or_tags: val[6],
1431
+ token_code: val[3],
1432
+ lineno: val[3].line
1433
+ )
1434
+
1435
+ result
1436
+ end
1437
+ .,.,
1405
1438
 
1406
- module_eval(<<'.,.,', 'parser.y', 101)
1439
+ module_eval(<<'.,.,', 'parser.y', 108)
1407
1440
  def _reduce_32(val, _values, result)
1408
1441
  begin_c_declaration("}")
1409
1442
 
@@ -1411,7 +1444,7 @@ module_eval(<<'.,.,', 'parser.y', 101)
1411
1444
  end
1412
1445
  .,.,
1413
1446
 
1414
- module_eval(<<'.,.,', 'parser.y', 105)
1447
+ module_eval(<<'.,.,', 'parser.y', 112)
1415
1448
  def _reduce_33(val, _values, result)
1416
1449
  end_c_declaration
1417
1450
 
@@ -1419,7 +1452,7 @@ module_eval(<<'.,.,', 'parser.y', 105)
1419
1452
  end
1420
1453
  .,.,
1421
1454
 
1422
- module_eval(<<'.,.,', 'parser.y', 109)
1455
+ module_eval(<<'.,.,', 'parser.y', 116)
1423
1456
  def _reduce_34(val, _values, result)
1424
1457
  @grammar.add_printer(
1425
1458
  ident_or_tags: val[6],
@@ -1431,7 +1464,7 @@ module_eval(<<'.,.,', 'parser.y', 109)
1431
1464
  end
1432
1465
  .,.,
1433
1466
 
1434
- module_eval(<<'.,.,', 'parser.y', 117)
1467
+ module_eval(<<'.,.,', 'parser.y', 124)
1435
1468
  def _reduce_35(val, _values, result)
1436
1469
  begin_c_declaration("}")
1437
1470
 
@@ -1439,7 +1472,7 @@ module_eval(<<'.,.,', 'parser.y', 117)
1439
1472
  end
1440
1473
  .,.,
1441
1474
 
1442
- module_eval(<<'.,.,', 'parser.y', 121)
1475
+ module_eval(<<'.,.,', 'parser.y', 128)
1443
1476
  def _reduce_36(val, _values, result)
1444
1477
  end_c_declaration
1445
1478
 
@@ -1447,7 +1480,7 @@ module_eval(<<'.,.,', 'parser.y', 121)
1447
1480
  end
1448
1481
  .,.,
1449
1482
 
1450
- module_eval(<<'.,.,', 'parser.y', 125)
1483
+ module_eval(<<'.,.,', 'parser.y', 132)
1451
1484
  def _reduce_37(val, _values, result)
1452
1485
  @grammar.add_error_token(
1453
1486
  ident_or_tags: val[6],
@@ -1459,10 +1492,50 @@ module_eval(<<'.,.,', 'parser.y', 125)
1459
1492
  end
1460
1493
  .,.,
1461
1494
 
1462
- # reduce 38 omitted
1495
+ module_eval(<<'.,.,', 'parser.y', 140)
1496
+ def _reduce_38(val, _values, result)
1497
+ @grammar.after_shift = val[1]
1498
+
1499
+ result
1500
+ end
1501
+ .,.,
1463
1502
 
1464
- module_eval(<<'.,.,', 'parser.y', 135)
1503
+ module_eval(<<'.,.,', 'parser.y', 144)
1465
1504
  def _reduce_39(val, _values, result)
1505
+ @grammar.before_reduce = val[1]
1506
+
1507
+ result
1508
+ end
1509
+ .,.,
1510
+
1511
+ module_eval(<<'.,.,', 'parser.y', 148)
1512
+ def _reduce_40(val, _values, result)
1513
+ @grammar.after_reduce = val[1]
1514
+
1515
+ result
1516
+ end
1517
+ .,.,
1518
+
1519
+ module_eval(<<'.,.,', 'parser.y', 152)
1520
+ def _reduce_41(val, _values, result)
1521
+ @grammar.after_shift_error_token = val[1]
1522
+
1523
+ result
1524
+ end
1525
+ .,.,
1526
+
1527
+ module_eval(<<'.,.,', 'parser.y', 156)
1528
+ def _reduce_42(val, _values, result)
1529
+ @grammar.after_pop_stack = val[1]
1530
+
1531
+ result
1532
+ end
1533
+ .,.,
1534
+
1535
+ # reduce 43 omitted
1536
+
1537
+ module_eval(<<'.,.,', 'parser.y', 162)
1538
+ def _reduce_44(val, _values, result)
1466
1539
  val[1].each {|hash|
1467
1540
  hash[:tokens].each {|id|
1468
1541
  @grammar.add_type(id: id, tag: hash[:tag])
@@ -1473,8 +1546,8 @@ module_eval(<<'.,.,', 'parser.y', 135)
1473
1546
  end
1474
1547
  .,.,
1475
1548
 
1476
- module_eval(<<'.,.,', 'parser.y', 143)
1477
- def _reduce_40(val, _values, result)
1549
+ module_eval(<<'.,.,', 'parser.y', 170)
1550
+ def _reduce_45(val, _values, result)
1478
1551
  val[1].each {|hash|
1479
1552
  hash[:tokens].each {|id|
1480
1553
  sym = @grammar.add_term(id: id)
@@ -1487,8 +1560,8 @@ module_eval(<<'.,.,', 'parser.y', 143)
1487
1560
  end
1488
1561
  .,.,
1489
1562
 
1490
- module_eval(<<'.,.,', 'parser.y', 153)
1491
- def _reduce_41(val, _values, result)
1563
+ module_eval(<<'.,.,', 'parser.y', 180)
1564
+ def _reduce_46(val, _values, result)
1492
1565
  val[1].each {|hash|
1493
1566
  hash[:tokens].each {|id|
1494
1567
  sym = @grammar.add_term(id: id)
@@ -1501,8 +1574,8 @@ module_eval(<<'.,.,', 'parser.y', 153)
1501
1574
  end
1502
1575
  .,.,
1503
1576
 
1504
- module_eval(<<'.,.,', 'parser.y', 163)
1505
- def _reduce_42(val, _values, result)
1577
+ module_eval(<<'.,.,', 'parser.y', 190)
1578
+ def _reduce_47(val, _values, result)
1506
1579
  val[1].each {|hash|
1507
1580
  hash[:tokens].each {|id|
1508
1581
  sym = @grammar.add_term(id: id)
@@ -1515,8 +1588,8 @@ module_eval(<<'.,.,', 'parser.y', 163)
1515
1588
  end
1516
1589
  .,.,
1517
1590
 
1518
- module_eval(<<'.,.,', 'parser.y', 173)
1519
- def _reduce_43(val, _values, result)
1591
+ module_eval(<<'.,.,', 'parser.y', 200)
1592
+ def _reduce_48(val, _values, result)
1520
1593
  val[1].each {|hash|
1521
1594
  hash[:tokens].each {|id|
1522
1595
  sym = @grammar.add_term(id: id)
@@ -1529,8 +1602,8 @@ module_eval(<<'.,.,', 'parser.y', 173)
1529
1602
  end
1530
1603
  .,.,
1531
1604
 
1532
- module_eval(<<'.,.,', 'parser.y', 184)
1533
- def _reduce_44(val, _values, result)
1605
+ module_eval(<<'.,.,', 'parser.y', 211)
1606
+ def _reduce_49(val, _values, result)
1534
1607
  val[0].each {|token_declaration|
1535
1608
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: nil, replace: true)
1536
1609
  }
@@ -1539,8 +1612,8 @@ module_eval(<<'.,.,', 'parser.y', 184)
1539
1612
  end
1540
1613
  .,.,
1541
1614
 
1542
- module_eval(<<'.,.,', 'parser.y', 190)
1543
- def _reduce_45(val, _values, result)
1615
+ module_eval(<<'.,.,', 'parser.y', 217)
1616
+ def _reduce_50(val, _values, result)
1544
1617
  val[1].each {|token_declaration|
1545
1618
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[0], replace: true)
1546
1619
  }
@@ -1549,8 +1622,8 @@ module_eval(<<'.,.,', 'parser.y', 190)
1549
1622
  end
1550
1623
  .,.,
1551
1624
 
1552
- module_eval(<<'.,.,', 'parser.y', 196)
1553
- def _reduce_46(val, _values, result)
1625
+ module_eval(<<'.,.,', 'parser.y', 223)
1626
+ def _reduce_51(val, _values, result)
1554
1627
  val[2].each {|token_declaration|
1555
1628
  @grammar.add_term(id: token_declaration[0], alias_name: token_declaration[2], token_id: token_declaration[1], tag: val[1], replace: true)
1556
1629
  }
@@ -1559,29 +1632,29 @@ module_eval(<<'.,.,', 'parser.y', 196)
1559
1632
  end
1560
1633
  .,.,
1561
1634
 
1562
- module_eval(<<'.,.,', 'parser.y', 201)
1563
- def _reduce_47(val, _values, result)
1635
+ module_eval(<<'.,.,', 'parser.y', 228)
1636
+ def _reduce_52(val, _values, result)
1564
1637
  result = [val[0]]
1565
1638
  result
1566
1639
  end
1567
1640
  .,.,
1568
1641
 
1569
- module_eval(<<'.,.,', 'parser.y', 202)
1570
- def _reduce_48(val, _values, result)
1642
+ module_eval(<<'.,.,', 'parser.y', 229)
1643
+ def _reduce_53(val, _values, result)
1571
1644
  result = val[0].append(val[1])
1572
1645
  result
1573
1646
  end
1574
1647
  .,.,
1575
1648
 
1576
- module_eval(<<'.,.,', 'parser.y', 204)
1577
- def _reduce_49(val, _values, result)
1649
+ module_eval(<<'.,.,', 'parser.y', 231)
1650
+ def _reduce_54(val, _values, result)
1578
1651
  result = val
1579
1652
  result
1580
1653
  end
1581
1654
  .,.,
1582
1655
 
1583
- module_eval(<<'.,.,', 'parser.y', 208)
1584
- def _reduce_50(val, _values, result)
1656
+ module_eval(<<'.,.,', 'parser.y', 235)
1657
+ def _reduce_55(val, _values, result)
1585
1658
  rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[6])
1586
1659
  @grammar.add_parameterizing_rule(rule)
1587
1660
 
@@ -1589,22 +1662,22 @@ module_eval(<<'.,.,', 'parser.y', 208)
1589
1662
  end
1590
1663
  .,.,
1591
1664
 
1592
- module_eval(<<'.,.,', 'parser.y', 212)
1593
- def _reduce_51(val, _values, result)
1665
+ module_eval(<<'.,.,', 'parser.y', 239)
1666
+ def _reduce_56(val, _values, result)
1594
1667
  result = [val[0]]
1595
1668
  result
1596
1669
  end
1597
1670
  .,.,
1598
1671
 
1599
- module_eval(<<'.,.,', 'parser.y', 213)
1600
- def _reduce_52(val, _values, result)
1672
+ module_eval(<<'.,.,', 'parser.y', 240)
1673
+ def _reduce_57(val, _values, result)
1601
1674
  result = val[0].append(val[2])
1602
1675
  result
1603
1676
  end
1604
1677
  .,.,
1605
1678
 
1606
- module_eval(<<'.,.,', 'parser.y', 217)
1607
- def _reduce_53(val, _values, result)
1679
+ module_eval(<<'.,.,', 'parser.y', 244)
1680
+ def _reduce_58(val, _values, result)
1608
1681
  builder = val[0]
1609
1682
  result = [builder]
1610
1683
 
@@ -1612,8 +1685,8 @@ module_eval(<<'.,.,', 'parser.y', 217)
1612
1685
  end
1613
1686
  .,.,
1614
1687
 
1615
- module_eval(<<'.,.,', 'parser.y', 222)
1616
- def _reduce_54(val, _values, result)
1688
+ module_eval(<<'.,.,', 'parser.y', 249)
1689
+ def _reduce_59(val, _values, result)
1617
1690
  builder = val[2]
1618
1691
  result = val[0].append(builder)
1619
1692
 
@@ -1621,8 +1694,8 @@ module_eval(<<'.,.,', 'parser.y', 222)
1621
1694
  end
1622
1695
  .,.,
1623
1696
 
1624
- module_eval(<<'.,.,', 'parser.y', 228)
1625
- def _reduce_55(val, _values, result)
1697
+ module_eval(<<'.,.,', 'parser.y', 255)
1698
+ def _reduce_60(val, _values, result)
1626
1699
  reset_precs
1627
1700
  result = Grammar::ParameterizingRule::Rhs.new
1628
1701
 
@@ -1630,8 +1703,8 @@ module_eval(<<'.,.,', 'parser.y', 228)
1630
1703
  end
1631
1704
  .,.,
1632
1705
 
1633
- module_eval(<<'.,.,', 'parser.y', 233)
1634
- def _reduce_56(val, _values, result)
1706
+ module_eval(<<'.,.,', 'parser.y', 260)
1707
+ def _reduce_61(val, _values, result)
1635
1708
  reset_precs
1636
1709
  result = Grammar::ParameterizingRule::Rhs.new
1637
1710
 
@@ -1639,8 +1712,8 @@ module_eval(<<'.,.,', 'parser.y', 233)
1639
1712
  end
1640
1713
  .,.,
1641
1714
 
1642
- module_eval(<<'.,.,', 'parser.y', 238)
1643
- def _reduce_57(val, _values, result)
1715
+ module_eval(<<'.,.,', 'parser.y', 265)
1716
+ def _reduce_62(val, _values, result)
1644
1717
  token = val[1]
1645
1718
  token.alias_name = val[2]
1646
1719
  builder = val[0]
@@ -1651,8 +1724,8 @@ module_eval(<<'.,.,', 'parser.y', 238)
1651
1724
  end
1652
1725
  .,.,
1653
1726
 
1654
- module_eval(<<'.,.,', 'parser.y', 246)
1655
- def _reduce_58(val, _values, result)
1727
+ module_eval(<<'.,.,', 'parser.y', 273)
1728
+ def _reduce_63(val, _values, result)
1656
1729
  builder = val[0]
1657
1730
  builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]])
1658
1731
  result = builder
@@ -1661,8 +1734,8 @@ module_eval(<<'.,.,', 'parser.y', 246)
1661
1734
  end
1662
1735
  .,.,
1663
1736
 
1664
- module_eval(<<'.,.,', 'parser.y', 252)
1665
- def _reduce_59(val, _values, result)
1737
+ module_eval(<<'.,.,', 'parser.y', 279)
1738
+ def _reduce_64(val, _values, result)
1666
1739
  builder = val[0]
1667
1740
  builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3])
1668
1741
  result = builder
@@ -1671,8 +1744,8 @@ module_eval(<<'.,.,', 'parser.y', 252)
1671
1744
  end
1672
1745
  .,.,
1673
1746
 
1674
- module_eval(<<'.,.,', 'parser.y', 258)
1675
- def _reduce_60(val, _values, result)
1747
+ module_eval(<<'.,.,', 'parser.y', 285)
1748
+ def _reduce_65(val, _values, result)
1676
1749
  if @prec_seen
1677
1750
  on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
1678
1751
  @code_after_prec = true
@@ -1683,16 +1756,16 @@ module_eval(<<'.,.,', 'parser.y', 258)
1683
1756
  end
1684
1757
  .,.,
1685
1758
 
1686
- module_eval(<<'.,.,', 'parser.y', 266)
1687
- def _reduce_61(val, _values, result)
1759
+ module_eval(<<'.,.,', 'parser.y', 293)
1760
+ def _reduce_66(val, _values, result)
1688
1761
  end_c_declaration
1689
1762
 
1690
1763
  result
1691
1764
  end
1692
1765
  .,.,
1693
1766
 
1694
- module_eval(<<'.,.,', 'parser.y', 270)
1695
- def _reduce_62(val, _values, result)
1767
+ module_eval(<<'.,.,', 'parser.y', 297)
1768
+ def _reduce_67(val, _values, result)
1696
1769
  user_code = val[3]
1697
1770
  user_code.alias_name = val[6]
1698
1771
  builder = val[0]
@@ -1703,8 +1776,8 @@ module_eval(<<'.,.,', 'parser.y', 270)
1703
1776
  end
1704
1777
  .,.,
1705
1778
 
1706
- module_eval(<<'.,.,', 'parser.y', 278)
1707
- def _reduce_63(val, _values, result)
1779
+ module_eval(<<'.,.,', 'parser.y', 305)
1780
+ def _reduce_68(val, _values, result)
1708
1781
  sym = @grammar.find_symbol_by_id!(val[2])
1709
1782
  @prec_seen = true
1710
1783
  builder = val[0]
@@ -1715,168 +1788,168 @@ module_eval(<<'.,.,', 'parser.y', 278)
1715
1788
  end
1716
1789
  .,.,
1717
1790
 
1718
- # reduce 64 omitted
1791
+ # reduce 69 omitted
1719
1792
 
1720
- # reduce 65 omitted
1793
+ # reduce 70 omitted
1721
1794
 
1722
- # reduce 66 omitted
1795
+ # reduce 71 omitted
1723
1796
 
1724
- # reduce 67 omitted
1797
+ # reduce 72 omitted
1725
1798
 
1726
- module_eval(<<'.,.,', 'parser.y', 293)
1727
- def _reduce_68(val, _values, result)
1799
+ module_eval(<<'.,.,', 'parser.y', 320)
1800
+ def _reduce_73(val, _values, result)
1728
1801
  result = [{tag: nil, tokens: val[0]}]
1729
1802
 
1730
1803
  result
1731
1804
  end
1732
1805
  .,.,
1733
1806
 
1734
- module_eval(<<'.,.,', 'parser.y', 297)
1735
- def _reduce_69(val, _values, result)
1807
+ module_eval(<<'.,.,', 'parser.y', 324)
1808
+ def _reduce_74(val, _values, result)
1736
1809
  result = [{tag: val[0], tokens: val[1]}]
1737
1810
 
1738
1811
  result
1739
1812
  end
1740
1813
  .,.,
1741
1814
 
1742
- module_eval(<<'.,.,', 'parser.y', 301)
1743
- def _reduce_70(val, _values, result)
1815
+ module_eval(<<'.,.,', 'parser.y', 328)
1816
+ def _reduce_75(val, _values, result)
1744
1817
  result = val[0].append({tag: val[1], tokens: val[2]})
1745
1818
 
1746
1819
  result
1747
1820
  end
1748
1821
  .,.,
1749
1822
 
1750
- module_eval(<<'.,.,', 'parser.y', 304)
1751
- def _reduce_71(val, _values, result)
1823
+ module_eval(<<'.,.,', 'parser.y', 331)
1824
+ def _reduce_76(val, _values, result)
1752
1825
  result = [val[0]]
1753
1826
  result
1754
1827
  end
1755
1828
  .,.,
1756
1829
 
1757
- module_eval(<<'.,.,', 'parser.y', 305)
1758
- def _reduce_72(val, _values, result)
1830
+ module_eval(<<'.,.,', 'parser.y', 332)
1831
+ def _reduce_77(val, _values, result)
1759
1832
  result = val[0].append(val[1])
1760
1833
  result
1761
1834
  end
1762
1835
  .,.,
1763
1836
 
1764
- # reduce 73 omitted
1837
+ # reduce 78 omitted
1765
1838
 
1766
- # reduce 74 omitted
1839
+ # reduce 79 omitted
1767
1840
 
1768
- module_eval(<<'.,.,', 'parser.y', 312)
1769
- def _reduce_75(val, _values, result)
1841
+ module_eval(<<'.,.,', 'parser.y', 339)
1842
+ def _reduce_80(val, _values, result)
1770
1843
  begin_c_declaration("}")
1771
1844
 
1772
1845
  result
1773
1846
  end
1774
1847
  .,.,
1775
1848
 
1776
- module_eval(<<'.,.,', 'parser.y', 316)
1777
- def _reduce_76(val, _values, result)
1849
+ module_eval(<<'.,.,', 'parser.y', 343)
1850
+ def _reduce_81(val, _values, result)
1778
1851
  end_c_declaration
1779
1852
 
1780
1853
  result
1781
1854
  end
1782
1855
  .,.,
1783
1856
 
1784
- module_eval(<<'.,.,', 'parser.y', 320)
1785
- def _reduce_77(val, _values, result)
1857
+ module_eval(<<'.,.,', 'parser.y', 347)
1858
+ def _reduce_82(val, _values, result)
1786
1859
  result = val[0].append(val[3])
1787
1860
 
1788
1861
  result
1789
1862
  end
1790
1863
  .,.,
1791
1864
 
1792
- module_eval(<<'.,.,', 'parser.y', 324)
1793
- def _reduce_78(val, _values, result)
1865
+ module_eval(<<'.,.,', 'parser.y', 351)
1866
+ def _reduce_83(val, _values, result)
1794
1867
  begin_c_declaration("}")
1795
1868
 
1796
1869
  result
1797
1870
  end
1798
1871
  .,.,
1799
1872
 
1800
- module_eval(<<'.,.,', 'parser.y', 328)
1801
- def _reduce_79(val, _values, result)
1873
+ module_eval(<<'.,.,', 'parser.y', 355)
1874
+ def _reduce_84(val, _values, result)
1802
1875
  end_c_declaration
1803
1876
 
1804
1877
  result
1805
1878
  end
1806
1879
  .,.,
1807
1880
 
1808
- module_eval(<<'.,.,', 'parser.y', 332)
1809
- def _reduce_80(val, _values, result)
1881
+ module_eval(<<'.,.,', 'parser.y', 359)
1882
+ def _reduce_85(val, _values, result)
1810
1883
  result = [val[2]]
1811
1884
 
1812
1885
  result
1813
1886
  end
1814
1887
  .,.,
1815
1888
 
1816
- module_eval(<<'.,.,', 'parser.y', 337)
1817
- def _reduce_81(val, _values, result)
1889
+ module_eval(<<'.,.,', 'parser.y', 364)
1890
+ def _reduce_86(val, _values, result)
1818
1891
  result = [{tag: nil, tokens: val[0]}]
1819
1892
 
1820
1893
  result
1821
1894
  end
1822
1895
  .,.,
1823
1896
 
1824
- module_eval(<<'.,.,', 'parser.y', 341)
1825
- def _reduce_82(val, _values, result)
1897
+ module_eval(<<'.,.,', 'parser.y', 368)
1898
+ def _reduce_87(val, _values, result)
1826
1899
  result = [{tag: val[0], tokens: val[1]}]
1827
1900
 
1828
1901
  result
1829
1902
  end
1830
1903
  .,.,
1831
1904
 
1832
- module_eval(<<'.,.,', 'parser.y', 345)
1833
- def _reduce_83(val, _values, result)
1905
+ module_eval(<<'.,.,', 'parser.y', 372)
1906
+ def _reduce_88(val, _values, result)
1834
1907
  result = val[0].append({tag: val[1], tokens: val[2]})
1835
1908
 
1836
1909
  result
1837
1910
  end
1838
1911
  .,.,
1839
1912
 
1840
- module_eval(<<'.,.,', 'parser.y', 348)
1841
- def _reduce_84(val, _values, result)
1913
+ module_eval(<<'.,.,', 'parser.y', 375)
1914
+ def _reduce_89(val, _values, result)
1842
1915
  result = [val[0]]
1843
1916
  result
1844
1917
  end
1845
1918
  .,.,
1846
1919
 
1847
- module_eval(<<'.,.,', 'parser.y', 349)
1848
- def _reduce_85(val, _values, result)
1920
+ module_eval(<<'.,.,', 'parser.y', 376)
1921
+ def _reduce_90(val, _values, result)
1849
1922
  result = val[0].append(val[1])
1850
1923
  result
1851
1924
  end
1852
1925
  .,.,
1853
1926
 
1854
- # reduce 86 omitted
1927
+ # reduce 91 omitted
1855
1928
 
1856
- module_eval(<<'.,.,', 'parser.y', 353)
1857
- def _reduce_87(val, _values, result)
1929
+ module_eval(<<'.,.,', 'parser.y', 380)
1930
+ def _reduce_92(val, _values, result)
1858
1931
  on_action_error("ident after %prec", val[0]) if @prec_seen
1859
1932
  result
1860
1933
  end
1861
1934
  .,.,
1862
1935
 
1863
- module_eval(<<'.,.,', 'parser.y', 354)
1864
- def _reduce_88(val, _values, result)
1936
+ module_eval(<<'.,.,', 'parser.y', 381)
1937
+ def _reduce_93(val, _values, result)
1865
1938
  on_action_error("char after %prec", val[0]) if @prec_seen
1866
1939
  result
1867
1940
  end
1868
1941
  .,.,
1869
1942
 
1870
- # reduce 89 omitted
1943
+ # reduce 94 omitted
1871
1944
 
1872
- # reduce 90 omitted
1945
+ # reduce 95 omitted
1873
1946
 
1874
- # reduce 91 omitted
1947
+ # reduce 96 omitted
1875
1948
 
1876
- # reduce 92 omitted
1949
+ # reduce 97 omitted
1877
1950
 
1878
- module_eval(<<'.,.,', 'parser.y', 364)
1879
- def _reduce_93(val, _values, result)
1951
+ module_eval(<<'.,.,', 'parser.y', 391)
1952
+ def _reduce_98(val, _values, result)
1880
1953
  lhs = val[0]
1881
1954
  lhs.alias_name = val[1]
1882
1955
  val[3].each do |builder|
@@ -1889,8 +1962,8 @@ module_eval(<<'.,.,', 'parser.y', 364)
1889
1962
  end
1890
1963
  .,.,
1891
1964
 
1892
- module_eval(<<'.,.,', 'parser.y', 375)
1893
- def _reduce_94(val, _values, result)
1965
+ module_eval(<<'.,.,', 'parser.y', 402)
1966
+ def _reduce_99(val, _values, result)
1894
1967
  builder = val[0]
1895
1968
  if !builder.line
1896
1969
  builder.line = @lexer.line - 1
@@ -1901,8 +1974,8 @@ module_eval(<<'.,.,', 'parser.y', 375)
1901
1974
  end
1902
1975
  .,.,
1903
1976
 
1904
- module_eval(<<'.,.,', 'parser.y', 383)
1905
- def _reduce_95(val, _values, result)
1977
+ module_eval(<<'.,.,', 'parser.y', 410)
1978
+ def _reduce_100(val, _values, result)
1906
1979
  builder = val[2]
1907
1980
  if !builder.line
1908
1981
  builder.line = @lexer.line - 1
@@ -1913,10 +1986,10 @@ module_eval(<<'.,.,', 'parser.y', 383)
1913
1986
  end
1914
1987
  .,.,
1915
1988
 
1916
- # reduce 96 omitted
1989
+ # reduce 101 omitted
1917
1990
 
1918
- module_eval(<<'.,.,', 'parser.y', 393)
1919
- def _reduce_97(val, _values, result)
1991
+ module_eval(<<'.,.,', 'parser.y', 420)
1992
+ def _reduce_102(val, _values, result)
1920
1993
  reset_precs
1921
1994
  result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
1922
1995
 
@@ -1924,8 +1997,8 @@ module_eval(<<'.,.,', 'parser.y', 393)
1924
1997
  end
1925
1998
  .,.,
1926
1999
 
1927
- module_eval(<<'.,.,', 'parser.y', 398)
1928
- def _reduce_98(val, _values, result)
2000
+ module_eval(<<'.,.,', 'parser.y', 425)
2001
+ def _reduce_103(val, _values, result)
1929
2002
  reset_precs
1930
2003
  result = Grammar::RuleBuilder.new(@rule_counter, @midrule_action_counter)
1931
2004
 
@@ -1933,8 +2006,8 @@ module_eval(<<'.,.,', 'parser.y', 398)
1933
2006
  end
1934
2007
  .,.,
1935
2008
 
1936
- module_eval(<<'.,.,', 'parser.y', 403)
1937
- def _reduce_99(val, _values, result)
2009
+ module_eval(<<'.,.,', 'parser.y', 430)
2010
+ def _reduce_104(val, _values, result)
1938
2011
  token = val[1]
1939
2012
  token.alias_name = val[2]
1940
2013
  builder = val[0]
@@ -1945,8 +2018,8 @@ module_eval(<<'.,.,', 'parser.y', 403)
1945
2018
  end
1946
2019
  .,.,
1947
2020
 
1948
- module_eval(<<'.,.,', 'parser.y', 411)
1949
- def _reduce_100(val, _values, result)
2021
+ module_eval(<<'.,.,', 'parser.y', 438)
2022
+ def _reduce_105(val, _values, result)
1950
2023
  token = Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]], lhs_tag: val[3])
1951
2024
  builder = val[0]
1952
2025
  builder.add_rhs(token)
@@ -1957,8 +2030,8 @@ module_eval(<<'.,.,', 'parser.y', 411)
1957
2030
  end
1958
2031
  .,.,
1959
2032
 
1960
- module_eval(<<'.,.,', 'parser.y', 419)
1961
- def _reduce_101(val, _values, result)
2033
+ module_eval(<<'.,.,', 'parser.y', 446)
2034
+ def _reduce_106(val, _values, result)
1962
2035
  token = Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3], lhs_tag: val[5])
1963
2036
  builder = val[0]
1964
2037
  builder.add_rhs(token)
@@ -1969,8 +2042,8 @@ module_eval(<<'.,.,', 'parser.y', 419)
1969
2042
  end
1970
2043
  .,.,
1971
2044
 
1972
- module_eval(<<'.,.,', 'parser.y', 427)
1973
- def _reduce_102(val, _values, result)
2045
+ module_eval(<<'.,.,', 'parser.y', 454)
2046
+ def _reduce_107(val, _values, result)
1974
2047
  if @prec_seen
1975
2048
  on_action_error("multiple User_code after %prec", val[0]) if @code_after_prec
1976
2049
  @code_after_prec = true
@@ -1981,16 +2054,16 @@ module_eval(<<'.,.,', 'parser.y', 427)
1981
2054
  end
1982
2055
  .,.,
1983
2056
 
1984
- module_eval(<<'.,.,', 'parser.y', 435)
1985
- def _reduce_103(val, _values, result)
2057
+ module_eval(<<'.,.,', 'parser.y', 462)
2058
+ def _reduce_108(val, _values, result)
1986
2059
  end_c_declaration
1987
2060
 
1988
2061
  result
1989
2062
  end
1990
2063
  .,.,
1991
2064
 
1992
- module_eval(<<'.,.,', 'parser.y', 439)
1993
- def _reduce_104(val, _values, result)
2065
+ module_eval(<<'.,.,', 'parser.y', 466)
2066
+ def _reduce_109(val, _values, result)
1994
2067
  user_code = val[3]
1995
2068
  user_code.alias_name = val[6]
1996
2069
  builder = val[0]
@@ -2001,8 +2074,8 @@ module_eval(<<'.,.,', 'parser.y', 439)
2001
2074
  end
2002
2075
  .,.,
2003
2076
 
2004
- module_eval(<<'.,.,', 'parser.y', 447)
2005
- def _reduce_105(val, _values, result)
2077
+ module_eval(<<'.,.,', 'parser.y', 474)
2078
+ def _reduce_110(val, _values, result)
2006
2079
  sym = @grammar.find_symbol_by_id!(val[2])
2007
2080
  @prec_seen = true
2008
2081
  builder = val[0]
@@ -2013,70 +2086,70 @@ module_eval(<<'.,.,', 'parser.y', 447)
2013
2086
  end
2014
2087
  .,.,
2015
2088
 
2016
- module_eval(<<'.,.,', 'parser.y', 454)
2017
- def _reduce_106(val, _values, result)
2089
+ module_eval(<<'.,.,', 'parser.y', 481)
2090
+ def _reduce_111(val, _values, result)
2018
2091
  result = "option"
2019
2092
  result
2020
2093
  end
2021
2094
  .,.,
2022
2095
 
2023
- module_eval(<<'.,.,', 'parser.y', 455)
2024
- def _reduce_107(val, _values, result)
2096
+ module_eval(<<'.,.,', 'parser.y', 482)
2097
+ def _reduce_112(val, _values, result)
2025
2098
  result = "nonempty_list"
2026
2099
  result
2027
2100
  end
2028
2101
  .,.,
2029
2102
 
2030
- module_eval(<<'.,.,', 'parser.y', 456)
2031
- def _reduce_108(val, _values, result)
2103
+ module_eval(<<'.,.,', 'parser.y', 483)
2104
+ def _reduce_113(val, _values, result)
2032
2105
  result = "list"
2033
2106
  result
2034
2107
  end
2035
2108
  .,.,
2036
2109
 
2037
- module_eval(<<'.,.,', 'parser.y', 458)
2038
- def _reduce_109(val, _values, result)
2110
+ module_eval(<<'.,.,', 'parser.y', 485)
2111
+ def _reduce_114(val, _values, result)
2039
2112
  result = [val[0]]
2040
2113
  result
2041
2114
  end
2042
2115
  .,.,
2043
2116
 
2044
- module_eval(<<'.,.,', 'parser.y', 459)
2045
- def _reduce_110(val, _values, result)
2117
+ module_eval(<<'.,.,', 'parser.y', 486)
2118
+ def _reduce_115(val, _values, result)
2046
2119
  result = val[0].append(val[2])
2047
2120
  result
2048
2121
  end
2049
2122
  .,.,
2050
2123
 
2051
- module_eval(<<'.,.,', 'parser.y', 460)
2052
- def _reduce_111(val, _values, result)
2124
+ module_eval(<<'.,.,', 'parser.y', 487)
2125
+ def _reduce_116(val, _values, result)
2053
2126
  result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[0])]
2054
2127
  result
2055
2128
  end
2056
2129
  .,.,
2057
2130
 
2058
- module_eval(<<'.,.,', 'parser.y', 461)
2059
- def _reduce_112(val, _values, result)
2131
+ module_eval(<<'.,.,', 'parser.y', 488)
2132
+ def _reduce_117(val, _values, result)
2060
2133
  result = [Lrama::Lexer::Token::InstantiateRule.new(s_value: val[0].s_value, location: @lexer.location, args: val[2])]
2061
2134
  result
2062
2135
  end
2063
2136
  .,.,
2064
2137
 
2065
- # reduce 113 omitted
2138
+ # reduce 118 omitted
2066
2139
 
2067
- module_eval(<<'.,.,', 'parser.y', 464)
2068
- def _reduce_114(val, _values, result)
2140
+ module_eval(<<'.,.,', 'parser.y', 491)
2141
+ def _reduce_119(val, _values, result)
2069
2142
  result = val[1].s_value
2070
2143
  result
2071
2144
  end
2072
2145
  .,.,
2073
2146
 
2074
- # reduce 115 omitted
2147
+ # reduce 120 omitted
2075
2148
 
2076
- # reduce 116 omitted
2149
+ # reduce 121 omitted
2077
2150
 
2078
- module_eval(<<'.,.,', 'parser.y', 471)
2079
- def _reduce_117(val, _values, result)
2151
+ module_eval(<<'.,.,', 'parser.y', 498)
2152
+ def _reduce_122(val, _values, result)
2080
2153
  begin_c_declaration('\Z')
2081
2154
  @grammar.epilogue_first_lineno = @lexer.line + 1
2082
2155
 
@@ -2084,8 +2157,8 @@ module_eval(<<'.,.,', 'parser.y', 471)
2084
2157
  end
2085
2158
  .,.,
2086
2159
 
2087
- module_eval(<<'.,.,', 'parser.y', 476)
2088
- def _reduce_118(val, _values, result)
2160
+ module_eval(<<'.,.,', 'parser.y', 503)
2161
+ def _reduce_123(val, _values, result)
2089
2162
  end_c_declaration
2090
2163
  @grammar.epilogue = val[2].s_value
2091
2164
 
@@ -2093,44 +2166,44 @@ module_eval(<<'.,.,', 'parser.y', 476)
2093
2166
  end
2094
2167
  .,.,
2095
2168
 
2096
- # reduce 119 omitted
2169
+ # reduce 124 omitted
2097
2170
 
2098
- # reduce 120 omitted
2171
+ # reduce 125 omitted
2099
2172
 
2100
- # reduce 121 omitted
2173
+ # reduce 126 omitted
2101
2174
 
2102
- # reduce 122 omitted
2175
+ # reduce 127 omitted
2103
2176
 
2104
- # reduce 123 omitted
2177
+ # reduce 128 omitted
2105
2178
 
2106
- module_eval(<<'.,.,', 'parser.y', 487)
2107
- def _reduce_124(val, _values, result)
2179
+ module_eval(<<'.,.,', 'parser.y', 514)
2180
+ def _reduce_129(val, _values, result)
2108
2181
  result = [val[0]]
2109
2182
  result
2110
2183
  end
2111
2184
  .,.,
2112
2185
 
2113
- module_eval(<<'.,.,', 'parser.y', 488)
2114
- def _reduce_125(val, _values, result)
2186
+ module_eval(<<'.,.,', 'parser.y', 515)
2187
+ def _reduce_130(val, _values, result)
2115
2188
  result = val[0].append(val[1])
2116
2189
  result
2117
2190
  end
2118
2191
  .,.,
2119
2192
 
2120
- # reduce 126 omitted
2193
+ # reduce 131 omitted
2121
2194
 
2122
- # reduce 127 omitted
2195
+ # reduce 132 omitted
2123
2196
 
2124
- module_eval(<<'.,.,', 'parser.y', 493)
2125
- def _reduce_128(val, _values, result)
2197
+ module_eval(<<'.,.,', 'parser.y', 520)
2198
+ def _reduce_133(val, _values, result)
2126
2199
  result = Lrama::Lexer::Token::Ident.new(s_value: val[0])
2127
2200
  result
2128
2201
  end
2129
2202
  .,.,
2130
2203
 
2131
- # reduce 129 omitted
2204
+ # reduce 134 omitted
2132
2205
 
2133
- # reduce 130 omitted
2206
+ # reduce 135 omitted
2134
2207
 
2135
2208
  def _reduce_none(val, _values, result)
2136
2209
  val[0]