lrama 0.6.0 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
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]