lrama 0.6.1 → 0.6.3

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 (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]