lrama 0.6.2 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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]