lrama 0.6.0 → 0.6.2

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