lrama 0.6.1 → 0.6.3

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