lrama 0.6.7 → 0.6.9
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.
- checksums.yaml +4 -4
- data/README.md +3 -0
- data/lib/lrama/grammar/parameterizing_rule/rhs.rb +22 -0
- data/lib/lrama/grammar/parameterizing_rule/rule.rb +3 -2
- data/lib/lrama/grammar/rule_builder.rb +2 -2
- data/lib/lrama/parser.rb +149 -149
- data/lib/lrama/version.rb +1 -1
- data/parser.y +4 -4
- data/sig/lrama/grammar/parameterizing_rule/rhs.rbs +1 -0
- data/sig/lrama/grammar/parameterizing_rule/rule.rbs +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9143e179e798e02afb8e7b2b4b1dd64291ac9ec128c851a4b4e660c647531675
|
|
4
|
+
data.tar.gz: 34613495597d6d8c9334034d7167f34253ca97e910752b446fa6cc26f773a2ce
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a54f5f7096bc3f3f984a7da54945cd3913d02a16882975e99c982f06a2dd70988dba461106f000b54cc26f06c0e62eb294c63d3d35dd606b0e63ff6a17b127d4
|
|
7
|
+
data.tar.gz: 007f8c7b8cf7ad1690f3b59e505f790273ddfacdab18ede2f1e3667a48309487739310d065fd7c54ee7656f9ee3791e2e1ed29e69726b69a4b861c083b8e5b4e
|
data/README.md
CHANGED
|
@@ -30,6 +30,9 @@ Lrama is LALR (1) parser generator written by Ruby. The first goal of this proje
|
|
|
30
30
|
* Parameterizing rules
|
|
31
31
|
* The definition of a non-terminal symbol can be parameterized with other (terminal or non-terminal) symbols.
|
|
32
32
|
* Providing a generic definition of parameterizing rules as a [standard library](lib/lrama/grammar/stdlib.y).
|
|
33
|
+
* Inlining
|
|
34
|
+
* The %inline directive causes all references to symbols to be replaced with its definition.
|
|
35
|
+
* Resolve shift/reduce conflicts without artificially altering the grammar file.
|
|
33
36
|
|
|
34
37
|
## Installation
|
|
35
38
|
|
|
@@ -9,6 +9,28 @@ module Lrama
|
|
|
9
9
|
@user_code = nil
|
|
10
10
|
@precedence_sym = nil
|
|
11
11
|
end
|
|
12
|
+
|
|
13
|
+
def resolve_user_code(bindings)
|
|
14
|
+
return unless user_code
|
|
15
|
+
|
|
16
|
+
var_to_arg = {}
|
|
17
|
+
symbols.each do |sym|
|
|
18
|
+
resolved_sym = bindings.resolve_symbol(sym)
|
|
19
|
+
if resolved_sym != sym
|
|
20
|
+
var_to_arg[sym.s_value] = resolved_sym.s_value
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
var_to_arg.each do |var, arg|
|
|
25
|
+
user_code.references.each do |ref|
|
|
26
|
+
if ref.name == var
|
|
27
|
+
ref.name = arg
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
return user_code
|
|
33
|
+
end
|
|
12
34
|
end
|
|
13
35
|
end
|
|
14
36
|
end
|
|
@@ -2,12 +2,13 @@ module Lrama
|
|
|
2
2
|
class Grammar
|
|
3
3
|
class ParameterizingRule
|
|
4
4
|
class Rule
|
|
5
|
-
attr_reader :name, :parameters, :rhs_list, :required_parameters_count, :is_inline
|
|
5
|
+
attr_reader :name, :parameters, :rhs_list, :required_parameters_count, :tag, :is_inline
|
|
6
6
|
|
|
7
|
-
def initialize(name, parameters, rhs_list, is_inline: false)
|
|
7
|
+
def initialize(name, parameters, rhs_list, tag: nil, is_inline: false)
|
|
8
8
|
@name = name
|
|
9
9
|
@parameters = parameters
|
|
10
10
|
@rhs_list = rhs_list
|
|
11
|
+
@tag = tag
|
|
11
12
|
@is_inline = is_inline
|
|
12
13
|
@required_parameters_count = parameters.count
|
|
13
14
|
end
|
|
@@ -130,12 +130,12 @@ module Lrama
|
|
|
130
130
|
@replaced_rhs << lhs_token
|
|
131
131
|
parameterizing_rule_resolver.created_lhs_list << lhs_token
|
|
132
132
|
parameterizing_rule.rhs_list.each do |r|
|
|
133
|
-
rule_builder = RuleBuilder.new(@rule_counter, @midrule_action_counter, lhs_tag: token.lhs_tag)
|
|
133
|
+
rule_builder = RuleBuilder.new(@rule_counter, @midrule_action_counter, lhs_tag: token.lhs_tag || parameterizing_rule.tag)
|
|
134
134
|
rule_builder.lhs = lhs_token
|
|
135
135
|
r.symbols.each { |sym| rule_builder.add_rhs(bindings.resolve_symbol(sym)) }
|
|
136
136
|
rule_builder.line = line
|
|
137
137
|
rule_builder.precedence_sym = r.precedence_sym
|
|
138
|
-
rule_builder.user_code = r.
|
|
138
|
+
rule_builder.user_code = r.resolve_user_code(bindings)
|
|
139
139
|
rule_builder.complete_input
|
|
140
140
|
rule_builder.setup_rules(parameterizing_rule_resolver)
|
|
141
141
|
@rule_builders_for_parameterizing_rules << rule_builder
|
data/lib/lrama/parser.rb
CHANGED
|
@@ -732,43 +732,43 @@ end
|
|
|
732
732
|
##### State transition tables begin ###
|
|
733
733
|
|
|
734
734
|
racc_action_table = [
|
|
735
|
-
98, 51, 99, 163, 88, 79, 51, 51,
|
|
736
|
-
79, 79, 51, 162,
|
|
737
|
-
3, 50,
|
|
735
|
+
98, 51, 99, 163, 88, 79, 51, 51, 180, 163,
|
|
736
|
+
79, 79, 51, 162, 180, 156, 79, 165, 157, 51,
|
|
737
|
+
3, 50, 181, 165, 70, 51, 8, 50, 181, 79,
|
|
738
738
|
75, 51, 6, 50, 7, 161, 82, 47, 51, 51,
|
|
739
739
|
50, 50, 89, 82, 82, 166, 41, 51, 100, 50,
|
|
740
|
-
|
|
740
|
+
182, 166, 82, 51, 48, 50, 182, 23, 25, 26,
|
|
741
741
|
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
|
|
742
|
-
37, 38, 47, 51, 51, 50, 50, 93, 79,
|
|
743
|
-
51, 51, 50, 50, 79,
|
|
744
|
-
79,
|
|
742
|
+
37, 38, 47, 51, 51, 50, 50, 93, 79, 197,
|
|
743
|
+
51, 51, 50, 50, 79, 197, 51, 51, 50, 50,
|
|
744
|
+
79, 197, 23, 25, 26, 27, 28, 29, 30, 31,
|
|
745
745
|
32, 33, 34, 35, 36, 37, 38, 9, 51, 54,
|
|
746
746
|
50, 14, 15, 16, 17, 18, 19, 54, 54, 20,
|
|
747
747
|
21, 22, 23, 25, 26, 27, 28, 29, 30, 31,
|
|
748
748
|
32, 33, 34, 35, 36, 37, 38, 39, 51, 51,
|
|
749
|
-
50, 50, 79,
|
|
750
|
-
51, 51, 50, 50, 79,
|
|
749
|
+
50, 50, 79, 197, 51, 51, 50, 50, 79, 197,
|
|
750
|
+
51, 51, 50, 50, 79, 197, 51, 51, 50, 50,
|
|
751
751
|
79, 79, 51, 51, 50, 50, 79, 79, 51, 51,
|
|
752
|
-
50, 50, 79, 79, 51, 51, 50,
|
|
753
|
-
51, 51,
|
|
754
|
-
79,
|
|
755
|
-
|
|
756
|
-
|
|
752
|
+
50, 50, 79, 79, 51, 51, 50, 207, 79, 79,
|
|
753
|
+
51, 51, 207, 207, 79, 79, 51, 51, 50, 50,
|
|
754
|
+
79, 187, 188, 189, 96, 187, 188, 189, 96, 217,
|
|
755
|
+
221, 229, 218, 218, 218, 51, 51, 50, 50, 187,
|
|
756
|
+
188, 189, 57, 58, 59, 60, 61, 62, 63, 64,
|
|
757
757
|
65, 66, 67, 90, 94, 96, 101, 101, 101, 103,
|
|
758
758
|
109, 113, 114, 117, 117, 117, 117, 120, 47, 124,
|
|
759
759
|
125, 127, 129, 130, 131, 132, 133, 136, 140, 141,
|
|
760
760
|
142, 143, 146, 147, 148, 150, 160, 168, 170, 171,
|
|
761
|
-
172, 173, 174,
|
|
762
|
-
|
|
763
|
-
226, 96, 96,
|
|
761
|
+
172, 173, 174, 176, 177, 178, 146, 184, 192, 193,
|
|
762
|
+
200, 160, 204, 176, 211, 160, 215, 216, 178, 176,
|
|
763
|
+
226, 176, 228, 96, 96, 176 ]
|
|
764
764
|
|
|
765
765
|
racc_action_check = [
|
|
766
|
-
49, 145, 49, 145, 39, 145, 159,
|
|
767
|
-
159,
|
|
768
|
-
1, 33, 159,
|
|
766
|
+
49, 145, 49, 145, 39, 145, 159, 183, 159, 183,
|
|
767
|
+
159, 183, 201, 144, 201, 139, 201, 145, 139, 33,
|
|
768
|
+
1, 33, 159, 183, 33, 34, 3, 34, 201, 34,
|
|
769
769
|
34, 35, 2, 35, 2, 144, 35, 9, 36, 37,
|
|
770
770
|
36, 37, 39, 36, 37, 145, 7, 38, 49, 38,
|
|
771
|
-
159,
|
|
771
|
+
159, 183, 38, 15, 14, 15, 201, 9, 9, 9,
|
|
772
772
|
9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
|
|
773
773
|
9, 9, 42, 69, 172, 69, 172, 42, 172, 172,
|
|
774
774
|
173, 70, 173, 70, 173, 173, 174, 81, 174, 81,
|
|
@@ -776,22 +776,22 @@ racc_action_check = [
|
|
|
776
776
|
42, 42, 42, 42, 42, 42, 42, 4, 82, 16,
|
|
777
777
|
82, 4, 4, 4, 4, 4, 4, 17, 18, 4,
|
|
778
778
|
4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
|
779
|
-
4, 4, 4, 4, 4, 4, 4, 4,
|
|
780
|
-
|
|
781
|
-
|
|
779
|
+
4, 4, 4, 4, 4, 4, 4, 4, 194, 109,
|
|
780
|
+
194, 109, 194, 194, 198, 111, 198, 111, 198, 198,
|
|
781
|
+
199, 117, 199, 117, 199, 199, 74, 75, 74, 75,
|
|
782
782
|
74, 75, 114, 116, 114, 116, 114, 116, 137, 166,
|
|
783
|
-
137, 166, 137, 166,
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
783
|
+
137, 166, 137, 166, 182, 184, 182, 184, 182, 184,
|
|
784
|
+
204, 216, 204, 216, 204, 216, 218, 119, 218, 119,
|
|
785
|
+
218, 164, 164, 164, 164, 179, 179, 179, 179, 208,
|
|
786
|
+
214, 223, 208, 214, 223, 134, 138, 134, 138, 209,
|
|
787
|
+
209, 209, 19, 20, 23, 25, 26, 27, 28, 29,
|
|
788
788
|
30, 31, 32, 40, 45, 46, 53, 55, 56, 57,
|
|
789
789
|
68, 72, 73, 80, 85, 86, 87, 88, 89, 95,
|
|
790
790
|
96, 102, 104, 105, 106, 107, 108, 112, 120, 121,
|
|
791
791
|
122, 123, 124, 125, 126, 128, 141, 149, 151, 152,
|
|
792
792
|
153, 154, 155, 156, 157, 158, 161, 163, 167, 169,
|
|
793
|
-
175,
|
|
794
|
-
221,
|
|
793
|
+
175, 178, 180, 186, 190, 200, 205, 207, 213, 217,
|
|
794
|
+
220, 221, 222, 226, 228, 230 ]
|
|
795
795
|
|
|
796
796
|
racc_action_pointer = [
|
|
797
797
|
nil, 20, 22, 26, 98, nil, nil, 39, nil, 33,
|
|
@@ -809,18 +809,18 @@ racc_action_pointer = [
|
|
|
809
809
|
243, 207, 239, 249, 206, 201, 252, nil, 253, nil,
|
|
810
810
|
nil, nil, nil, nil, 202, nil, nil, 165, 203, -26,
|
|
811
811
|
nil, 210, nil, nil, -10, -2, nil, nil, nil, 237,
|
|
812
|
-
nil, 238, 239, 240, 241, 242,
|
|
812
|
+
nil, 238, 239, 240, 241, 242, 255, 259, 220, 3,
|
|
813
813
|
nil, 220, nil, 227, 143, nil, 166, 248, nil, 249,
|
|
814
|
-
nil, nil, 71, 77, 83,
|
|
815
|
-
nil, 171, 4, 172, nil, 265, nil, nil, nil,
|
|
816
|
-
nil, nil, nil, 135, nil, nil, nil, 141, 147,
|
|
817
|
-
9, nil, nil, 177, 274, nil, 237, 158, 161,
|
|
818
|
-
nil, nil, nil, 159, nil, 178,
|
|
819
|
-
|
|
820
|
-
nil ]
|
|
814
|
+
nil, nil, 71, 77, 83, 228, nil, nil, 225, 147,
|
|
815
|
+
232, nil, 171, 4, 172, nil, 265, nil, nil, nil,
|
|
816
|
+
272, nil, nil, nil, 135, nil, nil, nil, 141, 147,
|
|
817
|
+
229, 9, nil, nil, 177, 274, nil, 237, 158, 161,
|
|
818
|
+
nil, nil, nil, 233, 159, nil, 178, 271, 183, nil,
|
|
819
|
+
260, 273, 262, 160, nil, nil, 232, nil, 233, nil,
|
|
820
|
+
277, nil, nil ]
|
|
821
821
|
|
|
822
822
|
racc_action_default = [
|
|
823
|
-
-2, -138, -8, -138, -138, -3, -4, -138,
|
|
823
|
+
-2, -138, -8, -138, -138, -3, -4, -138, 233, -138,
|
|
824
824
|
-9, -10, -11, -12, -138, -138, -138, -138, -138, -138,
|
|
825
825
|
-138, -24, -25, -138, -29, -138, -138, -138, -138, -138,
|
|
826
826
|
-138, -138, -138, -138, -138, -138, -138, -138, -138, -138,
|
|
@@ -835,75 +835,75 @@ racc_action_default = [
|
|
|
835
835
|
-138, -138, -138, -138, -104, -138, -138, -86, -138, -22,
|
|
836
836
|
-27, -31, -34, -37, -52, -55, -74, -77, -90, -138,
|
|
837
837
|
-58, -62, -6, -125, -100, -101, -105, -121, -83, -138,
|
|
838
|
-
-19, -138, -138, -138, -138, -138, -
|
|
838
|
+
-19, -138, -138, -138, -138, -138, -136, -138, -57, -60,
|
|
839
839
|
-63, -104, -103, -94, -120, -109, -138, -138, -87, -138,
|
|
840
|
-
-23, -28, -138, -138, -138,
|
|
841
|
-
-67, -138, -102, -138, -106, -136, -113, -114, -115,
|
|
842
|
-
-112, -84, -20, -32, -131, -133, -134, -35, -38,
|
|
843
|
-
-61, -64, -65, -138, -138, -70, -94, -138, -116,
|
|
844
|
-
-
|
|
845
|
-
|
|
846
|
-
-111 ]
|
|
840
|
+
-23, -28, -138, -138, -138, -138, -137, -59, -62, -120,
|
|
841
|
+
-94, -67, -138, -102, -138, -106, -136, -113, -114, -115,
|
|
842
|
+
-138, -112, -84, -20, -32, -131, -133, -134, -35, -38,
|
|
843
|
+
-62, -61, -64, -65, -138, -138, -70, -94, -138, -116,
|
|
844
|
+
-107, -110, -132, -56, -138, -68, -138, -136, -138, -118,
|
|
845
|
+
-138, -136, -138, -138, -108, -117, -120, -66, -120, -119,
|
|
846
|
+
-136, -69, -111 ]
|
|
847
847
|
|
|
848
848
|
racc_goto_table = [
|
|
849
|
-
76,
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
115, 76,
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
84, 110, 105, 152, 106, 153, 107,
|
|
857
|
-
76,
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
nil, 164, nil, nil, nil, nil, nil, nil, nil,
|
|
861
|
-
nil, nil, 72,
|
|
862
|
-
nil, nil,
|
|
863
|
-
nil, nil, nil, nil, nil, nil, nil,
|
|
864
|
-
|
|
865
|
-
nil, nil, nil, nil, nil, nil,
|
|
866
|
-
|
|
867
|
-
nil,
|
|
849
|
+
76, 95, 69, 52, 74, 158, 110, 175, 118, 119,
|
|
850
|
+
145, 208, 1, 212, 186, 2, 43, 212, 212, 4,
|
|
851
|
+
42, 72, 91, 84, 84, 84, 84, 5, 40, 203,
|
|
852
|
+
122, 214, 80, 85, 86, 87, 10, 210, 11, 111,
|
|
853
|
+
115, 76, 12, 223, 138, 116, 118, 183, 110, 92,
|
|
854
|
+
53, 55, 56, 194, 198, 199, 13, 72, 72, 219,
|
|
855
|
+
49, 97, 128, 169, 213, 118, 104, 151, 224, 84,
|
|
856
|
+
84, 110, 227, 105, 152, 106, 153, 107, 134, 154,
|
|
857
|
+
76, 232, 115, 108, 137, 155, 68, 73, 112, 135,
|
|
858
|
+
139, 121, 201, 205, 222, 126, 167, 72, 102, 72,
|
|
859
|
+
149, 144, 190, 115, 220, 84, 123, 84, nil, nil,
|
|
860
|
+
nil, 164, nil, nil, nil, nil, nil, nil, nil, 185,
|
|
861
|
+
nil, nil, 72, nil, nil, 179, 84, nil, nil, nil,
|
|
862
|
+
nil, nil, 191, nil, 202, nil, nil, nil, nil, nil,
|
|
863
|
+
nil, nil, nil, nil, nil, nil, nil, nil, 206, 164,
|
|
864
|
+
209, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
865
|
+
nil, nil, nil, nil, nil, nil, nil, 179, nil, nil,
|
|
866
|
+
209, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
867
|
+
nil, 230, 209, 231, 225 ]
|
|
868
868
|
|
|
869
869
|
racc_goto_check = [
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
35, 34, 22, 23, 24, 25, 26,
|
|
878
|
-
|
|
879
|
-
41,
|
|
880
|
-
|
|
881
|
-
nil,
|
|
882
|
-
nil, nil, 35,
|
|
883
|
-
nil, nil,
|
|
884
|
-
nil, nil, nil, nil, nil, nil, nil,
|
|
885
|
-
|
|
886
|
-
nil, nil, nil, nil, nil, nil,
|
|
887
|
-
|
|
888
|
-
nil,
|
|
870
|
+
43, 44, 33, 35, 49, 40, 34, 39, 56, 55,
|
|
871
|
+
60, 46, 1, 64, 45, 2, 57, 64, 64, 3,
|
|
872
|
+
4, 35, 5, 35, 35, 35, 35, 6, 7, 45,
|
|
873
|
+
8, 46, 32, 32, 32, 32, 9, 39, 10, 33,
|
|
874
|
+
43, 43, 11, 46, 55, 49, 56, 60, 34, 57,
|
|
875
|
+
15, 15, 15, 21, 21, 21, 12, 35, 35, 45,
|
|
876
|
+
13, 14, 16, 17, 40, 56, 18, 19, 39, 35,
|
|
877
|
+
35, 34, 39, 22, 23, 24, 25, 26, 33, 27,
|
|
878
|
+
43, 39, 43, 28, 49, 29, 30, 31, 36, 37,
|
|
879
|
+
38, 41, 42, 47, 48, 51, 52, 35, 53, 35,
|
|
880
|
+
54, 59, 61, 43, 62, 35, 63, 35, nil, nil,
|
|
881
|
+
nil, 43, nil, nil, nil, nil, nil, nil, nil, 44,
|
|
882
|
+
nil, nil, 35, nil, nil, 43, 35, nil, nil, nil,
|
|
883
|
+
nil, nil, 43, nil, 44, nil, nil, nil, nil, nil,
|
|
884
|
+
nil, nil, nil, nil, nil, nil, nil, nil, 43, 43,
|
|
885
|
+
43, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
886
|
+
nil, nil, nil, nil, nil, nil, nil, 43, nil, nil,
|
|
887
|
+
43, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
888
|
+
nil, 44, 43, 44, 43 ]
|
|
889
889
|
|
|
890
890
|
racc_goto_pointer = [
|
|
891
|
-
nil, 12,
|
|
892
|
-
|
|
893
|
-
nil, -
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
-
|
|
897
|
-
-
|
|
891
|
+
nil, 12, 15, 17, 11, -20, 25, 22, -60, 32,
|
|
892
|
+
34, 38, 52, 45, 12, 34, -41, -87, 8, -62,
|
|
893
|
+
nil, -119, 14, -56, 15, -55, 16, -53, 21, -48,
|
|
894
|
+
53, 53, -3, -31, -63, -12, 16, -23, -30, -149,
|
|
895
|
+
-136, 2, -86, -34, -45, -150, -173, -88, -121, -30,
|
|
896
|
+
nil, -6, -52, 44, -27, -73, -73, 7, nil, -23,
|
|
897
|
+
-114, -63, -107, 13, -181 ]
|
|
898
898
|
|
|
899
899
|
racc_goto_default = [
|
|
900
900
|
nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
901
901
|
45, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
902
902
|
24, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
|
903
903
|
nil, nil, nil, nil, 71, 77, nil, nil, nil, nil,
|
|
904
|
-
46, 159,
|
|
905
|
-
nil, nil, nil, nil, 81, 83, nil, 44, nil,
|
|
906
|
-
nil, nil, nil, nil,
|
|
904
|
+
nil, 46, 159, 196, nil, nil, nil, nil, nil, nil,
|
|
905
|
+
78, nil, nil, nil, nil, 81, 83, nil, 44, nil,
|
|
906
|
+
nil, nil, nil, nil, 195 ]
|
|
907
907
|
|
|
908
908
|
racc_reduce_table = [
|
|
909
909
|
0, 0, :racc_error,
|
|
@@ -962,21 +962,21 @@ racc_reduce_table = [
|
|
|
962
962
|
1, 87, :_reduce_53,
|
|
963
963
|
2, 87, :_reduce_54,
|
|
964
964
|
3, 88, :_reduce_55,
|
|
965
|
-
|
|
965
|
+
8, 65, :_reduce_56,
|
|
966
966
|
5, 66, :_reduce_57,
|
|
967
967
|
1, 92, :_reduce_58,
|
|
968
968
|
3, 92, :_reduce_59,
|
|
969
|
-
1,
|
|
970
|
-
3,
|
|
971
|
-
0,
|
|
972
|
-
1,
|
|
973
|
-
3,
|
|
974
|
-
3,
|
|
975
|
-
|
|
976
|
-
0,
|
|
977
|
-
0,
|
|
978
|
-
7,
|
|
979
|
-
3,
|
|
969
|
+
1, 94, :_reduce_60,
|
|
970
|
+
3, 94, :_reduce_61,
|
|
971
|
+
0, 96, :_reduce_62,
|
|
972
|
+
1, 96, :_reduce_63,
|
|
973
|
+
3, 96, :_reduce_64,
|
|
974
|
+
3, 96, :_reduce_65,
|
|
975
|
+
6, 96, :_reduce_66,
|
|
976
|
+
0, 101, :_reduce_67,
|
|
977
|
+
0, 102, :_reduce_68,
|
|
978
|
+
7, 96, :_reduce_69,
|
|
979
|
+
3, 96, :_reduce_70,
|
|
980
980
|
0, 90, :_reduce_none,
|
|
981
981
|
1, 90, :_reduce_none,
|
|
982
982
|
0, 91, :_reduce_none,
|
|
@@ -984,51 +984,51 @@ racc_reduce_table = [
|
|
|
984
984
|
1, 85, :_reduce_75,
|
|
985
985
|
2, 85, :_reduce_76,
|
|
986
986
|
3, 85, :_reduce_77,
|
|
987
|
-
1,
|
|
988
|
-
2,
|
|
989
|
-
1,
|
|
990
|
-
1,
|
|
991
|
-
0,
|
|
992
|
-
0,
|
|
987
|
+
1, 103, :_reduce_78,
|
|
988
|
+
2, 103, :_reduce_79,
|
|
989
|
+
1, 97, :_reduce_none,
|
|
990
|
+
1, 97, :_reduce_none,
|
|
991
|
+
0, 105, :_reduce_82,
|
|
992
|
+
0, 106, :_reduce_83,
|
|
993
993
|
6, 69, :_reduce_84,
|
|
994
|
-
0,
|
|
995
|
-
0,
|
|
994
|
+
0, 107, :_reduce_85,
|
|
995
|
+
0, 108, :_reduce_86,
|
|
996
996
|
5, 69, :_reduce_87,
|
|
997
997
|
1, 86, :_reduce_88,
|
|
998
998
|
2, 86, :_reduce_89,
|
|
999
999
|
3, 86, :_reduce_90,
|
|
1000
|
-
1,
|
|
1001
|
-
2,
|
|
1002
|
-
1,
|
|
1000
|
+
1, 109, :_reduce_91,
|
|
1001
|
+
2, 109, :_reduce_92,
|
|
1002
|
+
1, 110, :_reduce_none,
|
|
1003
1003
|
1, 89, :_reduce_94,
|
|
1004
1004
|
1, 89, :_reduce_95,
|
|
1005
1005
|
1, 58, :_reduce_none,
|
|
1006
1006
|
2, 58, :_reduce_none,
|
|
1007
|
-
1,
|
|
1008
|
-
2,
|
|
1009
|
-
4,
|
|
1010
|
-
1,
|
|
1011
|
-
3,
|
|
1012
|
-
2,
|
|
1013
|
-
0,
|
|
1014
|
-
1,
|
|
1015
|
-
3,
|
|
1016
|
-
4,
|
|
1017
|
-
6,
|
|
1007
|
+
1, 111, :_reduce_none,
|
|
1008
|
+
2, 111, :_reduce_none,
|
|
1009
|
+
4, 112, :_reduce_100,
|
|
1010
|
+
1, 113, :_reduce_101,
|
|
1011
|
+
3, 113, :_reduce_102,
|
|
1012
|
+
2, 113, :_reduce_none,
|
|
1013
|
+
0, 114, :_reduce_104,
|
|
1014
|
+
1, 114, :_reduce_105,
|
|
1015
|
+
3, 114, :_reduce_106,
|
|
1016
|
+
4, 114, :_reduce_107,
|
|
1017
|
+
6, 114, :_reduce_108,
|
|
1018
1018
|
0, 115, :_reduce_109,
|
|
1019
1019
|
0, 116, :_reduce_110,
|
|
1020
|
-
8,
|
|
1021
|
-
3,
|
|
1022
|
-
1,
|
|
1023
|
-
1,
|
|
1024
|
-
1,
|
|
1025
|
-
1,
|
|
1026
|
-
3,
|
|
1027
|
-
2,
|
|
1028
|
-
4,
|
|
1029
|
-
0,
|
|
1030
|
-
3,
|
|
1031
|
-
1,
|
|
1020
|
+
8, 114, :_reduce_111,
|
|
1021
|
+
3, 114, :_reduce_112,
|
|
1022
|
+
1, 99, :_reduce_113,
|
|
1023
|
+
1, 99, :_reduce_114,
|
|
1024
|
+
1, 99, :_reduce_115,
|
|
1025
|
+
1, 100, :_reduce_116,
|
|
1026
|
+
3, 100, :_reduce_117,
|
|
1027
|
+
2, 100, :_reduce_118,
|
|
1028
|
+
4, 100, :_reduce_119,
|
|
1029
|
+
0, 98, :_reduce_none,
|
|
1030
|
+
3, 98, :_reduce_121,
|
|
1031
|
+
1, 95, :_reduce_none,
|
|
1032
1032
|
0, 59, :_reduce_none,
|
|
1033
1033
|
0, 117, :_reduce_124,
|
|
1034
1034
|
3, 59, :_reduce_125,
|
|
@@ -1041,13 +1041,13 @@ racc_reduce_table = [
|
|
|
1041
1041
|
2, 75, :_reduce_132,
|
|
1042
1042
|
1, 118, :_reduce_none,
|
|
1043
1043
|
1, 118, :_reduce_none,
|
|
1044
|
-
1,
|
|
1045
|
-
0,
|
|
1046
|
-
1,
|
|
1044
|
+
1, 104, :_reduce_135,
|
|
1045
|
+
0, 93, :_reduce_none,
|
|
1046
|
+
1, 93, :_reduce_none ]
|
|
1047
1047
|
|
|
1048
1048
|
racc_reduce_n = 138
|
|
1049
1049
|
|
|
1050
|
-
racc_shift_n =
|
|
1050
|
+
racc_shift_n = 233
|
|
1051
1051
|
|
|
1052
1052
|
racc_token_table = {
|
|
1053
1053
|
false => 0,
|
|
@@ -1220,6 +1220,7 @@ Racc_token_to_s_table = [
|
|
|
1220
1220
|
"int_opt",
|
|
1221
1221
|
"alias",
|
|
1222
1222
|
"rule_args",
|
|
1223
|
+
"tag_opt",
|
|
1223
1224
|
"rule_rhs_list",
|
|
1224
1225
|
"id_colon",
|
|
1225
1226
|
"rule_rhs",
|
|
@@ -1241,7 +1242,6 @@ Racc_token_to_s_table = [
|
|
|
1241
1242
|
"rules",
|
|
1242
1243
|
"rhs_list",
|
|
1243
1244
|
"rhs",
|
|
1244
|
-
"tag_opt",
|
|
1245
1245
|
"@21",
|
|
1246
1246
|
"@22",
|
|
1247
1247
|
"@23",
|
|
@@ -1666,7 +1666,7 @@ module_eval(<<'.,.,', 'parser.y', 232)
|
|
|
1666
1666
|
|
|
1667
1667
|
module_eval(<<'.,.,', 'parser.y', 236)
|
|
1668
1668
|
def _reduce_56(val, _values, result)
|
|
1669
|
-
rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[
|
|
1669
|
+
rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[7], tag: val[5])
|
|
1670
1670
|
@grammar.add_parameterizing_rule(rule)
|
|
1671
1671
|
|
|
1672
1672
|
result
|
|
@@ -1757,7 +1757,7 @@ module_eval(<<'.,.,', 'parser.y', 280)
|
|
|
1757
1757
|
module_eval(<<'.,.,', 'parser.y', 286)
|
|
1758
1758
|
def _reduce_66(val, _values, result)
|
|
1759
1759
|
builder = val[0]
|
|
1760
|
-
builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3])
|
|
1760
|
+
builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3], lhs_tag: val[5])
|
|
1761
1761
|
result = builder
|
|
1762
1762
|
|
|
1763
1763
|
result
|
data/lib/lrama/version.rb
CHANGED
data/parser.y
CHANGED
|
@@ -232,9 +232,9 @@ rule
|
|
|
232
232
|
|
|
233
233
|
token_declaration: id int_opt alias { result = val }
|
|
234
234
|
|
|
235
|
-
rule_declaration: "%rule" IDENTIFIER "(" rule_args ")" ":" rule_rhs_list
|
|
235
|
+
rule_declaration: "%rule" IDENTIFIER "(" rule_args ")" tag_opt ":" rule_rhs_list
|
|
236
236
|
{
|
|
237
|
-
rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[
|
|
237
|
+
rule = Grammar::ParameterizingRule::Rule.new(val[1].s_value, val[3], val[7], tag: val[5])
|
|
238
238
|
@grammar.add_parameterizing_rule(rule)
|
|
239
239
|
}
|
|
240
240
|
|
|
@@ -282,10 +282,10 @@ rule
|
|
|
282
282
|
builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[2], location: @lexer.location, args: [val[1]])
|
|
283
283
|
result = builder
|
|
284
284
|
}
|
|
285
|
-
| rule_rhs IDENTIFIER "(" parameterizing_args ")"
|
|
285
|
+
| rule_rhs IDENTIFIER "(" parameterizing_args ")" tag_opt
|
|
286
286
|
{
|
|
287
287
|
builder = val[0]
|
|
288
|
-
builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3])
|
|
288
|
+
builder.symbols << Lrama::Lexer::Token::InstantiateRule.new(s_value: val[1].s_value, location: @lexer.location, args: val[3], lhs_tag: val[5])
|
|
289
289
|
result = builder
|
|
290
290
|
}
|
|
291
291
|
| rule_rhs "{"
|
|
@@ -6,9 +6,10 @@ module Lrama
|
|
|
6
6
|
attr_reader parameters: Array[Lexer::Token]
|
|
7
7
|
attr_reader rhs_list: Array[Grammar::ParameterizingRule::Rhs]
|
|
8
8
|
attr_reader required_parameters_count: Integer
|
|
9
|
+
attr_reader tag: Lexer::Token::Tag?
|
|
9
10
|
attr_reader is_inline: bool
|
|
10
11
|
|
|
11
|
-
def initialize: (String name, Array[Lexer::Token] parameters, Array[Grammar::ParameterizingRule::Rhs] rhs_list, ?is_inline: bool) -> void
|
|
12
|
+
def initialize: (String name, Array[Lexer::Token] parameters, Array[Grammar::ParameterizingRule::Rhs] rhs_list, ?tag: Lexer::Token::Tag, ?is_inline: bool) -> void
|
|
12
13
|
end
|
|
13
14
|
end
|
|
14
15
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: lrama
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yuichiro Kaneko
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2024-
|
|
11
|
+
date: 2024-05-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: LALR (1) parser generator written by Ruby
|
|
14
14
|
email:
|