treetop 1.4.15 → 1.5.1
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 +15 -0
- data/README.md +1 -1
- data/Rakefile +0 -1
- data/lib/treetop/compiler/metagrammar.rb +223 -111
- data/lib/treetop/compiler/metagrammar.treetop +4 -4
- data/lib/treetop/compiler/node_classes/anything_symbol.rb +7 -3
- data/lib/treetop/compiler/node_classes/character_class.rb +2 -2
- data/lib/treetop/compiler/node_classes/choice.rb +3 -1
- data/lib/treetop/compiler/node_classes/parsing_rule.rb +4 -2
- data/lib/treetop/compiler/node_classes/terminal.rb +12 -6
- data/lib/treetop/runtime/compiled_parser.rb +9 -4
- data/lib/treetop/version.rb +2 -2
- data/spec/compiler/character_class_spec.rb +17 -17
- data/spec/compiler/choice_spec.rb +4 -4
- data/spec/compiler/not_predicate_spec.rb +2 -2
- data/spec/compiler/repeated_subrule_spec.rb +2 -2
- data/spec/compiler/terminal_spec.rb +44 -0
- data/spec/compiler/zero_or_more_spec.rb +1 -1
- data/spec/composition/b.treetop +2 -2
- data/spec/composition/grammar_composition_spec.rb +2 -2
- data/spec/runtime/compiled_parser_spec.rb +3 -3
- data/treetop.gemspec +24 -26
- metadata +27 -62
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
Y2E0N2QyZDk3NzlkNThhYjFiNjg4ZmFhYTk0M2NiZjk5YzBlNTdlZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ZjE0ZmQ0ZTQ2Njg3NzgxNzVkYWM2MzU0MjliNTBjMmVjNmQyYjcyZA==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
Yzg0NTlkZDQ2ZGIzMjQxNGVkMGE2ZmRjODkxNjkwYTNhMmEzNzRiYjA4NWM4
|
10
|
+
ZTQzOGMxODU0Zjk2N2ZhZTdkZmU1Y2RlYjNmYzgzZDM3YTAwODk4MTJlZWNm
|
11
|
+
Nzg5MDI1ZDVjODVkN2IwOTc0MDZhOTA0NGU4NTE3YTY4NTIwMTU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
NDE1MmI2YWM2ODViMmY4MTg4Y2YxZjE2ZDJmY2RmNDhiNTc1MDM4NjI2MDNl
|
14
|
+
Y2QzMzQ4NzhlZTAyNWFmNzdmMDBmNjFmNDBiZmQzOTAyNWJkZTIxNWRjOGRk
|
15
|
+
NTQ2NDA4YmM0NDQ2ZWNmYzUzMDg4YTNhZDZhZGU2MGNhNWVlODI=
|
data/README.md
CHANGED
@@ -46,7 +46,7 @@ Users of *regular expressions* will find parsing expressions familiar. They shar
|
|
46
46
|
|
47
47
|
Terminal Symbols
|
48
48
|
----------------
|
49
|
-
The expression in the grammar above is a terminal symbol. It will only match a string that matches it exactly. There are two other kinds of terminal symbols, which we'll revisit later. Terminals are called *atomic expressions* because they aren't composed of smaller expressions.
|
49
|
+
The expression in the grammar above is a terminal symbol. It will only match a string that matches it exactly. There are two other kinds of terminal symbols, which we'll revisit later. Terminals are called *atomic expressions* because they aren't composed of smaller expressions. A terminal symbol may use either double or single quotes. If the closing quote is immediately followed by the character 'i', the string is matched without case-sensitivity, that is, the input.downcase matches the terminal.downcase
|
50
50
|
|
51
51
|
Ordered Choices
|
52
52
|
---------------
|
data/Rakefile
CHANGED
@@ -45,7 +45,7 @@ module Treetop
|
|
45
45
|
if node_cache[:treetop_file].has_key?(index)
|
46
46
|
cached = node_cache[:treetop_file][index]
|
47
47
|
if cached
|
48
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
48
|
+
node_cache[:treetop_file][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
49
49
|
@index = cached.interval.end
|
50
50
|
end
|
51
51
|
return cached
|
@@ -129,7 +129,7 @@ module Treetop
|
|
129
129
|
if node_cache[:require_statement].has_key?(index)
|
130
130
|
cached = node_cache[:require_statement][index]
|
131
131
|
if cached
|
132
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
132
|
+
node_cache[:require_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
133
133
|
@index = cached.interval.end
|
134
134
|
end
|
135
135
|
return cached
|
@@ -155,7 +155,7 @@ module Treetop
|
|
155
155
|
if r3
|
156
156
|
s4, i4 = [], index
|
157
157
|
loop do
|
158
|
-
if has_terminal?('\G[ \\t]',
|
158
|
+
if has_terminal?(@regexps[gr = '\G[ \\t]'] ||= Regexp.new(gr), :regexp, index)
|
159
159
|
r5 = true
|
160
160
|
@index += 1
|
161
161
|
else
|
@@ -177,7 +177,7 @@ module Treetop
|
|
177
177
|
if r4
|
178
178
|
s6, i6 = [], index
|
179
179
|
loop do
|
180
|
-
if has_terminal?('\G[^\\n\\r]',
|
180
|
+
if has_terminal?(@regexps[gr = '\G[^\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
|
181
181
|
r7 = true
|
182
182
|
@index += 1
|
183
183
|
else
|
@@ -197,7 +197,7 @@ module Treetop
|
|
197
197
|
end
|
198
198
|
s0 << r6
|
199
199
|
if r6
|
200
|
-
if has_terminal?('\G[\\n\\r]',
|
200
|
+
if has_terminal?(@regexps[gr = '\G[\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
|
201
201
|
r8 = true
|
202
202
|
@index += 1
|
203
203
|
else
|
@@ -226,7 +226,7 @@ module Treetop
|
|
226
226
|
if node_cache[:module_or_grammar].has_key?(index)
|
227
227
|
cached = node_cache[:module_or_grammar][index]
|
228
228
|
if cached
|
229
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
229
|
+
node_cache[:module_or_grammar][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
230
230
|
@index = cached.interval.end
|
231
231
|
end
|
232
232
|
return cached
|
@@ -235,10 +235,12 @@ module Treetop
|
|
235
235
|
i0 = index
|
236
236
|
r1 = _nt_module_declaration
|
237
237
|
if r1
|
238
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
238
239
|
r0 = r1
|
239
240
|
else
|
240
241
|
r2 = _nt_grammar
|
241
242
|
if r2
|
243
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
242
244
|
r0 = r2
|
243
245
|
else
|
244
246
|
@index = i0
|
@@ -307,7 +309,7 @@ module Treetop
|
|
307
309
|
if node_cache[:module_declaration].has_key?(index)
|
308
310
|
cached = node_cache[:module_declaration][index]
|
309
311
|
if cached
|
310
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
312
|
+
node_cache[:module_declaration][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
311
313
|
@index = cached.interval.end
|
312
314
|
end
|
313
315
|
return cached
|
@@ -328,7 +330,7 @@ module Treetop
|
|
328
330
|
s1 << r3
|
329
331
|
if r3
|
330
332
|
i4, s4 = index, []
|
331
|
-
if has_terminal?('\G[A-Z]',
|
333
|
+
if has_terminal?(@regexps[gr = '\G[A-Z]'] ||= Regexp.new(gr), :regexp, index)
|
332
334
|
r5 = true
|
333
335
|
@index += 1
|
334
336
|
else
|
@@ -360,7 +362,7 @@ module Treetop
|
|
360
362
|
end
|
361
363
|
s9 << r10
|
362
364
|
if r10
|
363
|
-
if has_terminal?('\G[A-Z]',
|
365
|
+
if has_terminal?(@regexps[gr = '\G[A-Z]'] ||= Regexp.new(gr), :regexp, index)
|
364
366
|
r11 = true
|
365
367
|
@index += 1
|
366
368
|
else
|
@@ -424,10 +426,12 @@ module Treetop
|
|
424
426
|
i15 = index
|
425
427
|
r16 = _nt_module_declaration
|
426
428
|
if r16
|
429
|
+
r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true
|
427
430
|
r15 = r16
|
428
431
|
else
|
429
432
|
r17 = _nt_grammar
|
430
433
|
if r17
|
434
|
+
r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true
|
431
435
|
r15 = r17
|
432
436
|
else
|
433
437
|
@index = i15
|
@@ -503,7 +507,7 @@ module Treetop
|
|
503
507
|
if node_cache[:grammar].has_key?(index)
|
504
508
|
cached = node_cache[:grammar][index]
|
505
509
|
if cached
|
506
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
510
|
+
node_cache[:grammar][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
507
511
|
@index = cached.interval.end
|
508
512
|
end
|
509
513
|
return cached
|
@@ -602,14 +606,14 @@ module Treetop
|
|
602
606
|
if node_cache[:grammar_name].has_key?(index)
|
603
607
|
cached = node_cache[:grammar_name][index]
|
604
608
|
if cached
|
605
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
609
|
+
node_cache[:grammar_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
606
610
|
@index = cached.interval.end
|
607
611
|
end
|
608
612
|
return cached
|
609
613
|
end
|
610
614
|
|
611
615
|
i0, s0 = index, []
|
612
|
-
if has_terminal?('\G[A-Z]',
|
616
|
+
if has_terminal?(@regexps[gr = '\G[A-Z]'] ||= Regexp.new(gr), :regexp, index)
|
613
617
|
r1 = true
|
614
618
|
@index += 1
|
615
619
|
else
|
@@ -682,7 +686,7 @@ module Treetop
|
|
682
686
|
if node_cache[:declaration_sequence].has_key?(index)
|
683
687
|
cached = node_cache[:declaration_sequence][index]
|
684
688
|
if cached
|
685
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
689
|
+
node_cache[:declaration_sequence][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
686
690
|
@index = cached.interval.end
|
687
691
|
end
|
688
692
|
return cached
|
@@ -727,6 +731,7 @@ module Treetop
|
|
727
731
|
r1 = nil
|
728
732
|
end
|
729
733
|
if r1
|
734
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
730
735
|
r0 = r1
|
731
736
|
else
|
732
737
|
if has_terminal?('', false, index)
|
@@ -738,6 +743,7 @@ module Treetop
|
|
738
743
|
r7 = nil
|
739
744
|
end
|
740
745
|
if r7
|
746
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
741
747
|
r0 = r7
|
742
748
|
else
|
743
749
|
@index = i0
|
@@ -755,7 +761,7 @@ module Treetop
|
|
755
761
|
if node_cache[:declaration].has_key?(index)
|
756
762
|
cached = node_cache[:declaration][index]
|
757
763
|
if cached
|
758
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
764
|
+
node_cache[:declaration][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
759
765
|
@index = cached.interval.end
|
760
766
|
end
|
761
767
|
return cached
|
@@ -764,10 +770,12 @@ module Treetop
|
|
764
770
|
i0 = index
|
765
771
|
r1 = _nt_parsing_rule
|
766
772
|
if r1
|
773
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
767
774
|
r0 = r1
|
768
775
|
else
|
769
776
|
r2 = _nt_include_declaration
|
770
777
|
if r2
|
778
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
771
779
|
r0 = r2
|
772
780
|
else
|
773
781
|
@index = i0
|
@@ -798,7 +806,7 @@ module Treetop
|
|
798
806
|
if node_cache[:include_declaration].has_key?(index)
|
799
807
|
cached = node_cache[:include_declaration][index]
|
800
808
|
if cached
|
801
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
809
|
+
node_cache[:include_declaration][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
802
810
|
@index = cached.interval.end
|
803
811
|
end
|
804
812
|
return cached
|
@@ -817,7 +825,7 @@ module Treetop
|
|
817
825
|
r2 = _nt_space
|
818
826
|
s0 << r2
|
819
827
|
if r2
|
820
|
-
if has_terminal?('\G[A-Z]',
|
828
|
+
if has_terminal?(@regexps[gr = '\G[A-Z]'] ||= Regexp.new(gr), :regexp, index)
|
821
829
|
r3 = true
|
822
830
|
@index += 1
|
823
831
|
else
|
@@ -830,6 +838,7 @@ module Treetop
|
|
830
838
|
i5 = index
|
831
839
|
r6 = _nt_alphanumeric_char
|
832
840
|
if r6
|
841
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
833
842
|
r5 = r6
|
834
843
|
else
|
835
844
|
if has_terminal?('::', false, index)
|
@@ -840,6 +849,7 @@ module Treetop
|
|
840
849
|
r7 = nil
|
841
850
|
end
|
842
851
|
if r7
|
852
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
843
853
|
r5 = r7
|
844
854
|
else
|
845
855
|
@index = i5
|
@@ -905,7 +915,7 @@ module Treetop
|
|
905
915
|
if node_cache[:parsing_rule].has_key?(index)
|
906
916
|
cached = node_cache[:parsing_rule][index]
|
907
917
|
if cached
|
908
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
918
|
+
node_cache[:parsing_rule][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
909
919
|
@index = cached.interval.end
|
910
920
|
end
|
911
921
|
return cached
|
@@ -996,7 +1006,7 @@ module Treetop
|
|
996
1006
|
if node_cache[:parsing_expression].has_key?(index)
|
997
1007
|
cached = node_cache[:parsing_expression][index]
|
998
1008
|
if cached
|
999
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1009
|
+
node_cache[:parsing_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1000
1010
|
@index = cached.interval.end
|
1001
1011
|
end
|
1002
1012
|
return cached
|
@@ -1005,14 +1015,17 @@ module Treetop
|
|
1005
1015
|
i0 = index
|
1006
1016
|
r1 = _nt_choice
|
1007
1017
|
if r1
|
1018
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1008
1019
|
r0 = r1
|
1009
1020
|
else
|
1010
1021
|
r2 = _nt_sequence
|
1011
1022
|
if r2
|
1023
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1012
1024
|
r0 = r2
|
1013
1025
|
else
|
1014
1026
|
r3 = _nt_primary
|
1015
1027
|
if r3
|
1028
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
1016
1029
|
r0 = r3
|
1017
1030
|
else
|
1018
1031
|
@index = i0
|
@@ -1061,7 +1074,7 @@ module Treetop
|
|
1061
1074
|
if node_cache[:choice].has_key?(index)
|
1062
1075
|
cached = node_cache[:choice][index]
|
1063
1076
|
if cached
|
1064
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1077
|
+
node_cache[:choice][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1065
1078
|
@index = cached.interval.end
|
1066
1079
|
end
|
1067
1080
|
return cached
|
@@ -1083,7 +1096,7 @@ module Treetop
|
|
1083
1096
|
s3 << r4
|
1084
1097
|
if r4
|
1085
1098
|
if has_terminal?('/', false, index)
|
1086
|
-
r6 =
|
1099
|
+
r6 = true
|
1087
1100
|
@index += 1
|
1088
1101
|
else
|
1089
1102
|
terminal_parse_failure('/')
|
@@ -1174,7 +1187,7 @@ module Treetop
|
|
1174
1187
|
if node_cache[:sequence].has_key?(index)
|
1175
1188
|
cached = node_cache[:sequence][index]
|
1176
1189
|
if cached
|
1177
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1190
|
+
node_cache[:sequence][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1178
1191
|
@index = cached.interval.end
|
1179
1192
|
end
|
1180
1193
|
return cached
|
@@ -1206,7 +1219,7 @@ module Treetop
|
|
1206
1219
|
if node_cache[:sequence_body].has_key?(index)
|
1207
1220
|
cached = node_cache[:sequence_body][index]
|
1208
1221
|
if cached
|
1209
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1222
|
+
node_cache[:sequence_body][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1210
1223
|
@index = cached.interval.end
|
1211
1224
|
end
|
1212
1225
|
return cached
|
@@ -1215,10 +1228,12 @@ module Treetop
|
|
1215
1228
|
i0 = index
|
1216
1229
|
r1 = _nt_variable_length_sequence_body
|
1217
1230
|
if r1
|
1231
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1218
1232
|
r0 = r1
|
1219
1233
|
else
|
1220
1234
|
r2 = _nt_labeled_expression_sequence_body
|
1221
1235
|
if r2
|
1236
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1222
1237
|
r0 = r2
|
1223
1238
|
else
|
1224
1239
|
@index = i0
|
@@ -1262,7 +1277,7 @@ module Treetop
|
|
1262
1277
|
if node_cache[:variable_length_sequence_body].has_key?(index)
|
1263
1278
|
cached = node_cache[:variable_length_sequence_body][index]
|
1264
1279
|
if cached
|
1265
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1280
|
+
node_cache[:variable_length_sequence_body][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1266
1281
|
@index = cached.interval.end
|
1267
1282
|
end
|
1268
1283
|
return cached
|
@@ -1331,7 +1346,7 @@ module Treetop
|
|
1331
1346
|
if node_cache[:labeled_expression_sequence_body].has_key?(index)
|
1332
1347
|
cached = node_cache[:labeled_expression_sequence_body][index]
|
1333
1348
|
if cached
|
1334
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1349
|
+
node_cache[:labeled_expression_sequence_body][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1335
1350
|
@index = cached.interval.end
|
1336
1351
|
end
|
1337
1352
|
return cached
|
@@ -1350,7 +1365,7 @@ module Treetop
|
|
1350
1365
|
if node_cache[:alternative].has_key?(index)
|
1351
1366
|
cached = node_cache[:alternative][index]
|
1352
1367
|
if cached
|
1353
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1368
|
+
node_cache[:alternative][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1354
1369
|
@index = cached.interval.end
|
1355
1370
|
end
|
1356
1371
|
return cached
|
@@ -1359,10 +1374,12 @@ module Treetop
|
|
1359
1374
|
i0 = index
|
1360
1375
|
r1 = _nt_sequence
|
1361
1376
|
if r1
|
1377
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1362
1378
|
r0 = r1
|
1363
1379
|
else
|
1364
1380
|
r2 = _nt_primary
|
1365
1381
|
if r2
|
1382
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1366
1383
|
r0 = r2
|
1367
1384
|
else
|
1368
1385
|
@index = i0
|
@@ -1494,7 +1511,7 @@ module Treetop
|
|
1494
1511
|
if node_cache[:primary].has_key?(index)
|
1495
1512
|
cached = node_cache[:primary][index]
|
1496
1513
|
if cached
|
1497
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1514
|
+
node_cache[:primary][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1498
1515
|
@index = cached.interval.end
|
1499
1516
|
end
|
1500
1517
|
return cached
|
@@ -1517,6 +1534,7 @@ module Treetop
|
|
1517
1534
|
r1 = nil
|
1518
1535
|
end
|
1519
1536
|
if r1
|
1537
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1520
1538
|
r0 = r1
|
1521
1539
|
else
|
1522
1540
|
i4, s4 = index, []
|
@@ -1544,6 +1562,7 @@ module Treetop
|
|
1544
1562
|
r4 = nil
|
1545
1563
|
end
|
1546
1564
|
if r4
|
1565
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
1547
1566
|
r0 = r4
|
1548
1567
|
else
|
1549
1568
|
i9, s9 = index, []
|
@@ -1566,6 +1585,7 @@ module Treetop
|
|
1566
1585
|
r9 = nil
|
1567
1586
|
end
|
1568
1587
|
if r9
|
1588
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
1569
1589
|
r0 = r9
|
1570
1590
|
else
|
1571
1591
|
i13, s13 = index, []
|
@@ -1584,6 +1604,7 @@ module Treetop
|
|
1584
1604
|
r13 = nil
|
1585
1605
|
end
|
1586
1606
|
if r13
|
1607
|
+
r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
|
1587
1608
|
r0 = r13
|
1588
1609
|
else
|
1589
1610
|
@index = i0
|
@@ -1603,7 +1624,7 @@ module Treetop
|
|
1603
1624
|
if node_cache[:optionally_labeled_sequence_primary].has_key?(index)
|
1604
1625
|
cached = node_cache[:optionally_labeled_sequence_primary][index]
|
1605
1626
|
if cached
|
1606
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1627
|
+
node_cache[:optionally_labeled_sequence_primary][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1607
1628
|
@index = cached.interval.end
|
1608
1629
|
end
|
1609
1630
|
return cached
|
@@ -1612,10 +1633,12 @@ module Treetop
|
|
1612
1633
|
i0 = index
|
1613
1634
|
r1 = _nt_labeled_sequence_primary
|
1614
1635
|
if r1
|
1636
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1615
1637
|
r0 = r1
|
1616
1638
|
else
|
1617
1639
|
r2 = _nt_unlabeled_sequence_primary
|
1618
1640
|
if r2
|
1641
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1619
1642
|
r0 = r2
|
1620
1643
|
else
|
1621
1644
|
@index = i0
|
@@ -1657,7 +1680,7 @@ module Treetop
|
|
1657
1680
|
if node_cache[:labeled_sequence_primary].has_key?(index)
|
1658
1681
|
cached = node_cache[:labeled_sequence_primary][index]
|
1659
1682
|
if cached
|
1660
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1683
|
+
node_cache[:labeled_sequence_primary][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1661
1684
|
@index = cached.interval.end
|
1662
1685
|
end
|
1663
1686
|
return cached
|
@@ -1717,7 +1740,7 @@ module Treetop
|
|
1717
1740
|
if node_cache[:unlabeled_sequence_primary].has_key?(index)
|
1718
1741
|
cached = node_cache[:unlabeled_sequence_primary][index]
|
1719
1742
|
if cached
|
1720
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1743
|
+
node_cache[:unlabeled_sequence_primary][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1721
1744
|
@index = cached.interval.end
|
1722
1745
|
end
|
1723
1746
|
return cached
|
@@ -1749,7 +1772,7 @@ module Treetop
|
|
1749
1772
|
if node_cache[:label].has_key?(index)
|
1750
1773
|
cached = node_cache[:label][index]
|
1751
1774
|
if cached
|
1752
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1775
|
+
node_cache[:label][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1753
1776
|
@index = cached.interval.end
|
1754
1777
|
end
|
1755
1778
|
return cached
|
@@ -1758,10 +1781,12 @@ module Treetop
|
|
1758
1781
|
i0 = index
|
1759
1782
|
r1 = _nt_named_label
|
1760
1783
|
if r1
|
1784
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1761
1785
|
r0 = r1
|
1762
1786
|
else
|
1763
1787
|
r2 = _nt_null_label
|
1764
1788
|
if r2
|
1789
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
1765
1790
|
r0 = r2
|
1766
1791
|
else
|
1767
1792
|
@index = i0
|
@@ -1795,7 +1820,7 @@ module Treetop
|
|
1795
1820
|
if node_cache[:named_label].has_key?(index)
|
1796
1821
|
cached = node_cache[:named_label][index]
|
1797
1822
|
if cached
|
1798
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1823
|
+
node_cache[:named_label][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1799
1824
|
@index = cached.interval.end
|
1800
1825
|
end
|
1801
1826
|
return cached
|
@@ -1828,7 +1853,7 @@ module Treetop
|
|
1828
1853
|
s0 << r1
|
1829
1854
|
if r1
|
1830
1855
|
if has_terminal?(':', false, index)
|
1831
|
-
r5 =
|
1856
|
+
r5 = true
|
1832
1857
|
@index += 1
|
1833
1858
|
else
|
1834
1859
|
terminal_parse_failure(':')
|
@@ -1861,7 +1886,7 @@ module Treetop
|
|
1861
1886
|
if node_cache[:null_label].has_key?(index)
|
1862
1887
|
cached = node_cache[:null_label][index]
|
1863
1888
|
if cached
|
1864
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1889
|
+
node_cache[:null_label][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1865
1890
|
@index = cached.interval.end
|
1866
1891
|
end
|
1867
1892
|
return cached
|
@@ -1964,7 +1989,7 @@ module Treetop
|
|
1964
1989
|
if node_cache[:sequence_primary].has_key?(index)
|
1965
1990
|
cached = node_cache[:sequence_primary][index]
|
1966
1991
|
if cached
|
1967
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1992
|
+
node_cache[:sequence_primary][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
1968
1993
|
@index = cached.interval.end
|
1969
1994
|
end
|
1970
1995
|
return cached
|
@@ -1987,6 +2012,7 @@ module Treetop
|
|
1987
2012
|
r1 = nil
|
1988
2013
|
end
|
1989
2014
|
if r1
|
2015
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
1990
2016
|
r0 = r1
|
1991
2017
|
else
|
1992
2018
|
i4, s4 = index, []
|
@@ -2014,6 +2040,7 @@ module Treetop
|
|
2014
2040
|
r4 = nil
|
2015
2041
|
end
|
2016
2042
|
if r4
|
2043
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
2017
2044
|
r0 = r4
|
2018
2045
|
else
|
2019
2046
|
i9, s9 = index, []
|
@@ -2032,10 +2059,12 @@ module Treetop
|
|
2032
2059
|
r9 = nil
|
2033
2060
|
end
|
2034
2061
|
if r9
|
2062
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2035
2063
|
r0 = r9
|
2036
2064
|
else
|
2037
2065
|
r12 = _nt_atomic
|
2038
2066
|
if r12
|
2067
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
2039
2068
|
r0 = r12
|
2040
2069
|
else
|
2041
2070
|
@index = i0
|
@@ -2055,7 +2084,7 @@ module Treetop
|
|
2055
2084
|
if node_cache[:suffix].has_key?(index)
|
2056
2085
|
cached = node_cache[:suffix][index]
|
2057
2086
|
if cached
|
2058
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2087
|
+
node_cache[:suffix][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2059
2088
|
@index = cached.interval.end
|
2060
2089
|
end
|
2061
2090
|
return cached
|
@@ -2064,10 +2093,12 @@ module Treetop
|
|
2064
2093
|
i0 = index
|
2065
2094
|
r1 = _nt_repetition_suffix
|
2066
2095
|
if r1
|
2096
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2067
2097
|
r0 = r1
|
2068
2098
|
else
|
2069
2099
|
r2 = _nt_optional_suffix
|
2070
2100
|
if r2
|
2101
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2071
2102
|
r0 = r2
|
2072
2103
|
else
|
2073
2104
|
@index = i0
|
@@ -2085,7 +2116,7 @@ module Treetop
|
|
2085
2116
|
if node_cache[:optional_suffix].has_key?(index)
|
2086
2117
|
cached = node_cache[:optional_suffix][index]
|
2087
2118
|
if cached
|
2088
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2119
|
+
node_cache[:optional_suffix][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2089
2120
|
@index = cached.interval.end
|
2090
2121
|
end
|
2091
2122
|
return cached
|
@@ -2137,7 +2168,7 @@ module Treetop
|
|
2137
2168
|
if node_cache[:node_class_declarations].has_key?(index)
|
2138
2169
|
cached = node_cache[:node_class_declarations][index]
|
2139
2170
|
if cached
|
2140
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2171
|
+
node_cache[:node_class_declarations][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2141
2172
|
@index = cached.interval.end
|
2142
2173
|
end
|
2143
2174
|
return cached
|
@@ -2169,7 +2200,7 @@ module Treetop
|
|
2169
2200
|
if node_cache[:repetition_suffix].has_key?(index)
|
2170
2201
|
cached = node_cache[:repetition_suffix][index]
|
2171
2202
|
if cached
|
2172
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2203
|
+
node_cache[:repetition_suffix][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2173
2204
|
@index = cached.interval.end
|
2174
2205
|
end
|
2175
2206
|
return cached
|
@@ -2184,6 +2215,7 @@ module Treetop
|
|
2184
2215
|
r1 = nil
|
2185
2216
|
end
|
2186
2217
|
if r1
|
2218
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2187
2219
|
r0 = r1
|
2188
2220
|
else
|
2189
2221
|
if has_terminal?('*', false, index)
|
@@ -2194,10 +2226,12 @@ module Treetop
|
|
2194
2226
|
r2 = nil
|
2195
2227
|
end
|
2196
2228
|
if r2
|
2229
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2197
2230
|
r0 = r2
|
2198
2231
|
else
|
2199
2232
|
r3 = _nt_occurrence_range
|
2200
2233
|
if r3
|
2234
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2201
2235
|
r0 = r3
|
2202
2236
|
else
|
2203
2237
|
@index = i0
|
@@ -2226,7 +2260,7 @@ module Treetop
|
|
2226
2260
|
if node_cache[:occurrence_range].has_key?(index)
|
2227
2261
|
cached = node_cache[:occurrence_range][index]
|
2228
2262
|
if cached
|
2229
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2263
|
+
node_cache[:occurrence_range][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2230
2264
|
@index = cached.interval.end
|
2231
2265
|
end
|
2232
2266
|
return cached
|
@@ -2243,7 +2277,7 @@ module Treetop
|
|
2243
2277
|
if r1
|
2244
2278
|
s3, i3 = [], index
|
2245
2279
|
loop do
|
2246
|
-
if has_terminal?('\G[0-9]',
|
2280
|
+
if has_terminal?(@regexps[gr = '\G[0-9]'] ||= Regexp.new(gr), :regexp, index)
|
2247
2281
|
r4 = true
|
2248
2282
|
@index += 1
|
2249
2283
|
else
|
@@ -2269,7 +2303,7 @@ module Treetop
|
|
2269
2303
|
if r5
|
2270
2304
|
s6, i6 = [], index
|
2271
2305
|
loop do
|
2272
|
-
if has_terminal?('\G[0-9]',
|
2306
|
+
if has_terminal?(@regexps[gr = '\G[0-9]'] ||= Regexp.new(gr), :regexp, index)
|
2273
2307
|
r7 = true
|
2274
2308
|
@index += 1
|
2275
2309
|
else
|
@@ -2304,7 +2338,7 @@ module Treetop
|
|
2304
2338
|
if node_cache[:prefix].has_key?(index)
|
2305
2339
|
cached = node_cache[:prefix][index]
|
2306
2340
|
if cached
|
2307
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2341
|
+
node_cache[:prefix][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2308
2342
|
@index = cached.interval.end
|
2309
2343
|
end
|
2310
2344
|
return cached
|
@@ -2319,6 +2353,7 @@ module Treetop
|
|
2319
2353
|
r1 = nil
|
2320
2354
|
end
|
2321
2355
|
if r1
|
2356
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2322
2357
|
r0 = r1
|
2323
2358
|
else
|
2324
2359
|
if has_terminal?('!', false, index)
|
@@ -2329,6 +2364,7 @@ module Treetop
|
|
2329
2364
|
r2 = nil
|
2330
2365
|
end
|
2331
2366
|
if r2
|
2367
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2332
2368
|
r0 = r2
|
2333
2369
|
else
|
2334
2370
|
if has_terminal?('~', false, index)
|
@@ -2339,6 +2375,7 @@ module Treetop
|
|
2339
2375
|
r3 = nil
|
2340
2376
|
end
|
2341
2377
|
if r3
|
2378
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2342
2379
|
r0 = r3
|
2343
2380
|
else
|
2344
2381
|
@index = i0
|
@@ -2357,7 +2394,7 @@ module Treetop
|
|
2357
2394
|
if node_cache[:atomic].has_key?(index)
|
2358
2395
|
cached = node_cache[:atomic][index]
|
2359
2396
|
if cached
|
2360
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2397
|
+
node_cache[:atomic][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2361
2398
|
@index = cached.interval.end
|
2362
2399
|
end
|
2363
2400
|
return cached
|
@@ -2366,14 +2403,17 @@ module Treetop
|
|
2366
2403
|
i0 = index
|
2367
2404
|
r1 = _nt_terminal
|
2368
2405
|
if r1
|
2406
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2369
2407
|
r0 = r1
|
2370
2408
|
else
|
2371
2409
|
r2 = _nt_nonterminal
|
2372
2410
|
if r2
|
2411
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2373
2412
|
r0 = r2
|
2374
2413
|
else
|
2375
2414
|
r3 = _nt_parenthesized_expression
|
2376
2415
|
if r3
|
2416
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2377
2417
|
r0 = r3
|
2378
2418
|
else
|
2379
2419
|
@index = i0
|
@@ -2405,7 +2445,7 @@ module Treetop
|
|
2405
2445
|
if node_cache[:parenthesized_expression].has_key?(index)
|
2406
2446
|
cached = node_cache[:parenthesized_expression][index]
|
2407
2447
|
if cached
|
2408
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2448
|
+
node_cache[:parenthesized_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2409
2449
|
@index = cached.interval.end
|
2410
2450
|
end
|
2411
2451
|
return cached
|
@@ -2413,7 +2453,7 @@ module Treetop
|
|
2413
2453
|
|
2414
2454
|
i0, s0 = index, []
|
2415
2455
|
if has_terminal?('(', false, index)
|
2416
|
-
r1 =
|
2456
|
+
r1 = true
|
2417
2457
|
@index += 1
|
2418
2458
|
else
|
2419
2459
|
terminal_parse_failure('(')
|
@@ -2441,7 +2481,7 @@ module Treetop
|
|
2441
2481
|
s0 << r5
|
2442
2482
|
if r5
|
2443
2483
|
if has_terminal?(')', false, index)
|
2444
|
-
r7 =
|
2484
|
+
r7 = true
|
2445
2485
|
@index += 1
|
2446
2486
|
else
|
2447
2487
|
terminal_parse_failure(')')
|
@@ -2481,7 +2521,7 @@ module Treetop
|
|
2481
2521
|
if node_cache[:nonterminal].has_key?(index)
|
2482
2522
|
cached = node_cache[:nonterminal][index]
|
2483
2523
|
if cached
|
2484
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2524
|
+
node_cache[:nonterminal][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2485
2525
|
@index = cached.interval.end
|
2486
2526
|
end
|
2487
2527
|
return cached
|
@@ -2541,7 +2581,7 @@ module Treetop
|
|
2541
2581
|
if node_cache[:terminal].has_key?(index)
|
2542
2582
|
cached = node_cache[:terminal][index]
|
2543
2583
|
if cached
|
2544
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2584
|
+
node_cache[:terminal][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2545
2585
|
@index = cached.interval.end
|
2546
2586
|
end
|
2547
2587
|
return cached
|
@@ -2550,14 +2590,17 @@ module Treetop
|
|
2550
2590
|
i0 = index
|
2551
2591
|
r1 = _nt_quoted_string
|
2552
2592
|
if r1
|
2593
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
2553
2594
|
r0 = r1
|
2554
2595
|
else
|
2555
2596
|
r2 = _nt_character_class
|
2556
2597
|
if r2
|
2598
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2557
2599
|
r0 = r2
|
2558
2600
|
else
|
2559
2601
|
r3 = _nt_anything_symbol
|
2560
2602
|
if r3
|
2603
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2561
2604
|
r0 = r3
|
2562
2605
|
else
|
2563
2606
|
@index = i0
|
@@ -2572,8 +2615,18 @@ module Treetop
|
|
2572
2615
|
end
|
2573
2616
|
|
2574
2617
|
module QuotedString0
|
2618
|
+
def qs
|
2619
|
+
elements[0]
|
2620
|
+
end
|
2621
|
+
|
2622
|
+
def insens
|
2623
|
+
elements[1]
|
2624
|
+
end
|
2625
|
+
end
|
2626
|
+
|
2627
|
+
module QuotedString1
|
2575
2628
|
def string
|
2576
|
-
|
2629
|
+
qs.text_value
|
2577
2630
|
end
|
2578
2631
|
end
|
2579
2632
|
|
@@ -2582,26 +2635,51 @@ module Treetop
|
|
2582
2635
|
if node_cache[:quoted_string].has_key?(index)
|
2583
2636
|
cached = node_cache[:quoted_string][index]
|
2584
2637
|
if cached
|
2585
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2638
|
+
node_cache[:quoted_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2586
2639
|
@index = cached.interval.end
|
2587
2640
|
end
|
2588
2641
|
return cached
|
2589
2642
|
end
|
2590
2643
|
|
2591
|
-
i0 = index
|
2592
|
-
|
2593
|
-
|
2594
|
-
|
2595
|
-
|
2644
|
+
i0, s0 = index, []
|
2645
|
+
i1 = index
|
2646
|
+
r2 = _nt_single_quoted_string
|
2647
|
+
if r2
|
2648
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
2649
|
+
r1 = r2
|
2596
2650
|
else
|
2597
|
-
|
2598
|
-
if
|
2599
|
-
|
2600
|
-
|
2651
|
+
r3 = _nt_double_quoted_string
|
2652
|
+
if r3
|
2653
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
2654
|
+
r1 = r3
|
2601
2655
|
else
|
2602
|
-
@index =
|
2603
|
-
|
2656
|
+
@index = i1
|
2657
|
+
r1 = nil
|
2658
|
+
end
|
2659
|
+
end
|
2660
|
+
s0 << r1
|
2661
|
+
if r1
|
2662
|
+
if has_terminal?('i', false, index)
|
2663
|
+
r5 = true
|
2664
|
+
@index += 1
|
2665
|
+
else
|
2666
|
+
terminal_parse_failure('i')
|
2667
|
+
r5 = nil
|
2668
|
+
end
|
2669
|
+
if r5
|
2670
|
+
r4 = r5
|
2671
|
+
else
|
2672
|
+
r4 = instantiate_node(SyntaxNode,input, index...index)
|
2604
2673
|
end
|
2674
|
+
s0 << r4
|
2675
|
+
end
|
2676
|
+
if s0.last
|
2677
|
+
r0 = instantiate_node(Terminal,input, i0...index, s0)
|
2678
|
+
r0.extend(QuotedString0)
|
2679
|
+
r0.extend(QuotedString1)
|
2680
|
+
else
|
2681
|
+
@index = i0
|
2682
|
+
r0 = nil
|
2605
2683
|
end
|
2606
2684
|
|
2607
2685
|
node_cache[:quoted_string][start_index] = r0
|
@@ -2624,7 +2702,7 @@ module Treetop
|
|
2624
2702
|
if node_cache[:double_quoted_string].has_key?(index)
|
2625
2703
|
cached = node_cache[:double_quoted_string][index]
|
2626
2704
|
if cached
|
2627
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2705
|
+
node_cache[:double_quoted_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2628
2706
|
@index = cached.interval.end
|
2629
2707
|
end
|
2630
2708
|
return cached
|
@@ -2632,7 +2710,7 @@ module Treetop
|
|
2632
2710
|
|
2633
2711
|
i0, s0 = index, []
|
2634
2712
|
if has_terminal?('"', false, index)
|
2635
|
-
r1 =
|
2713
|
+
r1 = true
|
2636
2714
|
@index += 1
|
2637
2715
|
else
|
2638
2716
|
terminal_parse_failure('"')
|
@@ -2645,7 +2723,7 @@ module Treetop
|
|
2645
2723
|
i3, s3 = index, []
|
2646
2724
|
i4 = index
|
2647
2725
|
if has_terminal?('"', false, index)
|
2648
|
-
r5 =
|
2726
|
+
r5 = true
|
2649
2727
|
@index += 1
|
2650
2728
|
else
|
2651
2729
|
terminal_parse_failure('"')
|
@@ -2668,6 +2746,7 @@ module Treetop
|
|
2668
2746
|
r7 = nil
|
2669
2747
|
end
|
2670
2748
|
if r7
|
2749
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2671
2750
|
r6 = r7
|
2672
2751
|
else
|
2673
2752
|
if has_terminal?('\"', false, index)
|
@@ -2678,16 +2757,18 @@ module Treetop
|
|
2678
2757
|
r8 = nil
|
2679
2758
|
end
|
2680
2759
|
if r8
|
2760
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
2681
2761
|
r6 = r8
|
2682
2762
|
else
|
2683
2763
|
if index < input_length
|
2684
|
-
r9 =
|
2764
|
+
r9 = true
|
2685
2765
|
@index += 1
|
2686
2766
|
else
|
2687
2767
|
terminal_parse_failure("any character")
|
2688
2768
|
r9 = nil
|
2689
2769
|
end
|
2690
2770
|
if r9
|
2771
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2691
2772
|
r6 = r9
|
2692
2773
|
else
|
2693
2774
|
@index = i6
|
@@ -2714,7 +2795,7 @@ module Treetop
|
|
2714
2795
|
s0 << r2
|
2715
2796
|
if r2
|
2716
2797
|
if has_terminal?('"', false, index)
|
2717
|
-
r10 =
|
2798
|
+
r10 = true
|
2718
2799
|
@index += 1
|
2719
2800
|
else
|
2720
2801
|
terminal_parse_failure('"')
|
@@ -2724,7 +2805,7 @@ module Treetop
|
|
2724
2805
|
end
|
2725
2806
|
end
|
2726
2807
|
if s0.last
|
2727
|
-
r0 = instantiate_node(
|
2808
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
2728
2809
|
r0.extend(DoubleQuotedString1)
|
2729
2810
|
else
|
2730
2811
|
@index = i0
|
@@ -2751,7 +2832,7 @@ module Treetop
|
|
2751
2832
|
if node_cache[:single_quoted_string].has_key?(index)
|
2752
2833
|
cached = node_cache[:single_quoted_string][index]
|
2753
2834
|
if cached
|
2754
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2835
|
+
node_cache[:single_quoted_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2755
2836
|
@index = cached.interval.end
|
2756
2837
|
end
|
2757
2838
|
return cached
|
@@ -2759,7 +2840,7 @@ module Treetop
|
|
2759
2840
|
|
2760
2841
|
i0, s0 = index, []
|
2761
2842
|
if has_terminal?("'", false, index)
|
2762
|
-
r1 =
|
2843
|
+
r1 = true
|
2763
2844
|
@index += 1
|
2764
2845
|
else
|
2765
2846
|
terminal_parse_failure("'")
|
@@ -2772,7 +2853,7 @@ module Treetop
|
|
2772
2853
|
i3, s3 = index, []
|
2773
2854
|
i4 = index
|
2774
2855
|
if has_terminal?("'", false, index)
|
2775
|
-
r5 =
|
2856
|
+
r5 = true
|
2776
2857
|
@index += 1
|
2777
2858
|
else
|
2778
2859
|
terminal_parse_failure("'")
|
@@ -2795,6 +2876,7 @@ module Treetop
|
|
2795
2876
|
r7 = nil
|
2796
2877
|
end
|
2797
2878
|
if r7
|
2879
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2798
2880
|
r6 = r7
|
2799
2881
|
else
|
2800
2882
|
if has_terminal?("\\'", false, index)
|
@@ -2805,16 +2887,18 @@ module Treetop
|
|
2805
2887
|
r8 = nil
|
2806
2888
|
end
|
2807
2889
|
if r8
|
2890
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
2808
2891
|
r6 = r8
|
2809
2892
|
else
|
2810
2893
|
if index < input_length
|
2811
|
-
r9 =
|
2894
|
+
r9 = true
|
2812
2895
|
@index += 1
|
2813
2896
|
else
|
2814
2897
|
terminal_parse_failure("any character")
|
2815
2898
|
r9 = nil
|
2816
2899
|
end
|
2817
2900
|
if r9
|
2901
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
2818
2902
|
r6 = r9
|
2819
2903
|
else
|
2820
2904
|
@index = i6
|
@@ -2841,7 +2925,7 @@ module Treetop
|
|
2841
2925
|
s0 << r2
|
2842
2926
|
if r2
|
2843
2927
|
if has_terminal?("'", false, index)
|
2844
|
-
r10 =
|
2928
|
+
r10 = true
|
2845
2929
|
@index += 1
|
2846
2930
|
else
|
2847
2931
|
terminal_parse_failure("'")
|
@@ -2851,7 +2935,7 @@ module Treetop
|
|
2851
2935
|
end
|
2852
2936
|
end
|
2853
2937
|
if s0.last
|
2854
|
-
r0 = instantiate_node(
|
2938
|
+
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
|
2855
2939
|
r0.extend(SingleQuotedString1)
|
2856
2940
|
else
|
2857
2941
|
@index = i0
|
@@ -2890,7 +2974,7 @@ module Treetop
|
|
2890
2974
|
if node_cache[:character_class].has_key?(index)
|
2891
2975
|
cached = node_cache[:character_class][index]
|
2892
2976
|
if cached
|
2893
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2977
|
+
node_cache[:character_class][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
2894
2978
|
@index = cached.interval.end
|
2895
2979
|
end
|
2896
2980
|
return cached
|
@@ -2898,7 +2982,7 @@ module Treetop
|
|
2898
2982
|
|
2899
2983
|
i0, s0 = index, []
|
2900
2984
|
if has_terminal?('[', false, index)
|
2901
|
-
r1 =
|
2985
|
+
r1 = true
|
2902
2986
|
@index += 1
|
2903
2987
|
else
|
2904
2988
|
terminal_parse_failure('[')
|
@@ -2911,7 +2995,7 @@ module Treetop
|
|
2911
2995
|
i3, s3 = index, []
|
2912
2996
|
i4 = index
|
2913
2997
|
if has_terminal?(']', false, index)
|
2914
|
-
r5 =
|
2998
|
+
r5 = true
|
2915
2999
|
@index += 1
|
2916
3000
|
else
|
2917
3001
|
terminal_parse_failure(']')
|
@@ -2928,7 +3012,7 @@ module Treetop
|
|
2928
3012
|
i6 = index
|
2929
3013
|
i7, s7 = index, []
|
2930
3014
|
if has_terminal?('\\', false, index)
|
2931
|
-
r8 =
|
3015
|
+
r8 = true
|
2932
3016
|
@index += 1
|
2933
3017
|
else
|
2934
3018
|
terminal_parse_failure('\\')
|
@@ -2937,7 +3021,7 @@ module Treetop
|
|
2937
3021
|
s7 << r8
|
2938
3022
|
if r8
|
2939
3023
|
if index < input_length
|
2940
|
-
r9 =
|
3024
|
+
r9 = true
|
2941
3025
|
@index += 1
|
2942
3026
|
else
|
2943
3027
|
terminal_parse_failure("any character")
|
@@ -2953,16 +3037,18 @@ module Treetop
|
|
2953
3037
|
r7 = nil
|
2954
3038
|
end
|
2955
3039
|
if r7
|
3040
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
2956
3041
|
r6 = r7
|
2957
3042
|
else
|
2958
3043
|
r10 = _nt_bracket_expression
|
2959
3044
|
if r10
|
3045
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
2960
3046
|
r6 = r10
|
2961
3047
|
else
|
2962
3048
|
i11, s11 = index, []
|
2963
3049
|
i12 = index
|
2964
3050
|
if has_terminal?('\\', false, index)
|
2965
|
-
r13 =
|
3051
|
+
r13 = true
|
2966
3052
|
@index += 1
|
2967
3053
|
else
|
2968
3054
|
terminal_parse_failure('\\')
|
@@ -2977,7 +3063,7 @@ module Treetop
|
|
2977
3063
|
s11 << r12
|
2978
3064
|
if r12
|
2979
3065
|
if index < input_length
|
2980
|
-
r14 =
|
3066
|
+
r14 = true
|
2981
3067
|
@index += 1
|
2982
3068
|
else
|
2983
3069
|
terminal_parse_failure("any character")
|
@@ -2993,6 +3079,7 @@ module Treetop
|
|
2993
3079
|
r11 = nil
|
2994
3080
|
end
|
2995
3081
|
if r11
|
3082
|
+
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
2996
3083
|
r6 = r11
|
2997
3084
|
else
|
2998
3085
|
@index = i6
|
@@ -3024,7 +3111,7 @@ module Treetop
|
|
3024
3111
|
s0 << r2
|
3025
3112
|
if r2
|
3026
3113
|
if has_terminal?(']', false, index)
|
3027
|
-
r15 =
|
3114
|
+
r15 = true
|
3028
3115
|
@index += 1
|
3029
3116
|
else
|
3030
3117
|
terminal_parse_failure(']')
|
@@ -3055,7 +3142,7 @@ module Treetop
|
|
3055
3142
|
if node_cache[:bracket_expression].has_key?(index)
|
3056
3143
|
cached = node_cache[:bracket_expression][index]
|
3057
3144
|
if cached
|
3058
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3145
|
+
node_cache[:bracket_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3059
3146
|
@index = cached.interval.end
|
3060
3147
|
end
|
3061
3148
|
return cached
|
@@ -3072,7 +3159,7 @@ module Treetop
|
|
3072
3159
|
s0 << r1
|
3073
3160
|
if r1
|
3074
3161
|
if has_terminal?('^', false, index)
|
3075
|
-
r3 =
|
3162
|
+
r3 = true
|
3076
3163
|
@index += 1
|
3077
3164
|
else
|
3078
3165
|
terminal_parse_failure('^')
|
@@ -3094,6 +3181,7 @@ module Treetop
|
|
3094
3181
|
r5 = nil
|
3095
3182
|
end
|
3096
3183
|
if r5
|
3184
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
3097
3185
|
r4 = r5
|
3098
3186
|
else
|
3099
3187
|
if has_terminal?('alpha', false, index)
|
@@ -3104,6 +3192,7 @@ module Treetop
|
|
3104
3192
|
r6 = nil
|
3105
3193
|
end
|
3106
3194
|
if r6
|
3195
|
+
r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true
|
3107
3196
|
r4 = r6
|
3108
3197
|
else
|
3109
3198
|
if has_terminal?('blank', false, index)
|
@@ -3114,6 +3203,7 @@ module Treetop
|
|
3114
3203
|
r7 = nil
|
3115
3204
|
end
|
3116
3205
|
if r7
|
3206
|
+
r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
|
3117
3207
|
r4 = r7
|
3118
3208
|
else
|
3119
3209
|
if has_terminal?('cntrl', false, index)
|
@@ -3124,6 +3214,7 @@ module Treetop
|
|
3124
3214
|
r8 = nil
|
3125
3215
|
end
|
3126
3216
|
if r8
|
3217
|
+
r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
|
3127
3218
|
r4 = r8
|
3128
3219
|
else
|
3129
3220
|
if has_terminal?('digit', false, index)
|
@@ -3134,6 +3225,7 @@ module Treetop
|
|
3134
3225
|
r9 = nil
|
3135
3226
|
end
|
3136
3227
|
if r9
|
3228
|
+
r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true
|
3137
3229
|
r4 = r9
|
3138
3230
|
else
|
3139
3231
|
if has_terminal?('graph', false, index)
|
@@ -3144,6 +3236,7 @@ module Treetop
|
|
3144
3236
|
r10 = nil
|
3145
3237
|
end
|
3146
3238
|
if r10
|
3239
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
3147
3240
|
r4 = r10
|
3148
3241
|
else
|
3149
3242
|
if has_terminal?('lower', false, index)
|
@@ -3154,6 +3247,7 @@ module Treetop
|
|
3154
3247
|
r11 = nil
|
3155
3248
|
end
|
3156
3249
|
if r11
|
3250
|
+
r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true
|
3157
3251
|
r4 = r11
|
3158
3252
|
else
|
3159
3253
|
if has_terminal?('print', false, index)
|
@@ -3164,6 +3258,7 @@ module Treetop
|
|
3164
3258
|
r12 = nil
|
3165
3259
|
end
|
3166
3260
|
if r12
|
3261
|
+
r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
|
3167
3262
|
r4 = r12
|
3168
3263
|
else
|
3169
3264
|
if has_terminal?('punct', false, index)
|
@@ -3174,6 +3269,7 @@ module Treetop
|
|
3174
3269
|
r13 = nil
|
3175
3270
|
end
|
3176
3271
|
if r13
|
3272
|
+
r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true
|
3177
3273
|
r4 = r13
|
3178
3274
|
else
|
3179
3275
|
if has_terminal?('space', false, index)
|
@@ -3184,6 +3280,7 @@ module Treetop
|
|
3184
3280
|
r14 = nil
|
3185
3281
|
end
|
3186
3282
|
if r14
|
3283
|
+
r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true
|
3187
3284
|
r4 = r14
|
3188
3285
|
else
|
3189
3286
|
if has_terminal?('upper', false, index)
|
@@ -3194,6 +3291,7 @@ module Treetop
|
|
3194
3291
|
r15 = nil
|
3195
3292
|
end
|
3196
3293
|
if r15
|
3294
|
+
r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true
|
3197
3295
|
r4 = r15
|
3198
3296
|
else
|
3199
3297
|
if has_terminal?('xdigit', false, index)
|
@@ -3204,6 +3302,7 @@ module Treetop
|
|
3204
3302
|
r16 = nil
|
3205
3303
|
end
|
3206
3304
|
if r16
|
3305
|
+
r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true
|
3207
3306
|
r4 = r16
|
3208
3307
|
else
|
3209
3308
|
if has_terminal?('word', false, index)
|
@@ -3214,6 +3313,7 @@ module Treetop
|
|
3214
3313
|
r17 = nil
|
3215
3314
|
end
|
3216
3315
|
if r17
|
3316
|
+
r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true
|
3217
3317
|
r4 = r17
|
3218
3318
|
else
|
3219
3319
|
@index = i4
|
@@ -3262,7 +3362,7 @@ module Treetop
|
|
3262
3362
|
if node_cache[:anything_symbol].has_key?(index)
|
3263
3363
|
cached = node_cache[:anything_symbol][index]
|
3264
3364
|
if cached
|
3265
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3365
|
+
node_cache[:anything_symbol][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3266
3366
|
@index = cached.interval.end
|
3267
3367
|
end
|
3268
3368
|
return cached
|
@@ -3308,7 +3408,7 @@ module Treetop
|
|
3308
3408
|
if node_cache[:node_class_expression].has_key?(index)
|
3309
3409
|
cached = node_cache[:node_class_expression][index]
|
3310
3410
|
if cached
|
3311
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3411
|
+
node_cache[:node_class_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3312
3412
|
@index = cached.interval.end
|
3313
3413
|
end
|
3314
3414
|
return cached
|
@@ -3320,7 +3420,7 @@ module Treetop
|
|
3320
3420
|
s1 << r2
|
3321
3421
|
if r2
|
3322
3422
|
if has_terminal?('<', false, index)
|
3323
|
-
r3 =
|
3423
|
+
r3 = true
|
3324
3424
|
@index += 1
|
3325
3425
|
else
|
3326
3426
|
terminal_parse_failure('<')
|
@@ -3333,7 +3433,7 @@ module Treetop
|
|
3333
3433
|
i5, s5 = index, []
|
3334
3434
|
i6 = index
|
3335
3435
|
if has_terminal?('>', false, index)
|
3336
|
-
r7 =
|
3436
|
+
r7 = true
|
3337
3437
|
@index += 1
|
3338
3438
|
else
|
3339
3439
|
terminal_parse_failure('>')
|
@@ -3348,7 +3448,7 @@ module Treetop
|
|
3348
3448
|
s5 << r6
|
3349
3449
|
if r6
|
3350
3450
|
if index < input_length
|
3351
|
-
r8 =
|
3451
|
+
r8 = true
|
3352
3452
|
@index += 1
|
3353
3453
|
else
|
3354
3454
|
terminal_parse_failure("any character")
|
@@ -3378,7 +3478,7 @@ module Treetop
|
|
3378
3478
|
s1 << r4
|
3379
3479
|
if r4
|
3380
3480
|
if has_terminal?('>', false, index)
|
3381
|
-
r9 =
|
3481
|
+
r9 = true
|
3382
3482
|
@index += 1
|
3383
3483
|
else
|
3384
3484
|
terminal_parse_failure('>')
|
@@ -3397,6 +3497,7 @@ module Treetop
|
|
3397
3497
|
r1 = nil
|
3398
3498
|
end
|
3399
3499
|
if r1
|
3500
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
3400
3501
|
r0 = r1
|
3401
3502
|
else
|
3402
3503
|
if has_terminal?('', false, index)
|
@@ -3408,6 +3509,7 @@ module Treetop
|
|
3408
3509
|
r10 = nil
|
3409
3510
|
end
|
3410
3511
|
if r10
|
3512
|
+
r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true
|
3411
3513
|
r0 = r10
|
3412
3514
|
else
|
3413
3515
|
@index = i0
|
@@ -3459,7 +3561,7 @@ module Treetop
|
|
3459
3561
|
if node_cache[:trailing_inline_module].has_key?(index)
|
3460
3562
|
cached = node_cache[:trailing_inline_module][index]
|
3461
3563
|
if cached
|
3462
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3564
|
+
node_cache[:trailing_inline_module][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3463
3565
|
@index = cached.interval.end
|
3464
3566
|
end
|
3465
3567
|
return cached
|
@@ -3482,6 +3584,7 @@ module Treetop
|
|
3482
3584
|
r1 = nil
|
3483
3585
|
end
|
3484
3586
|
if r1
|
3587
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
3485
3588
|
r0 = r1
|
3486
3589
|
else
|
3487
3590
|
if has_terminal?('', false, index)
|
@@ -3493,6 +3596,7 @@ module Treetop
|
|
3493
3596
|
r4 = nil
|
3494
3597
|
end
|
3495
3598
|
if r4
|
3599
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
3496
3600
|
r0 = r4
|
3497
3601
|
else
|
3498
3602
|
@index = i0
|
@@ -3516,7 +3620,7 @@ module Treetop
|
|
3516
3620
|
if node_cache[:predicate_block].has_key?(index)
|
3517
3621
|
cached = node_cache[:predicate_block][index]
|
3518
3622
|
if cached
|
3519
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3623
|
+
node_cache[:predicate_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3520
3624
|
@index = cached.interval.end
|
3521
3625
|
end
|
3522
3626
|
return cached
|
@@ -3524,7 +3628,7 @@ module Treetop
|
|
3524
3628
|
|
3525
3629
|
i0, s0 = index, []
|
3526
3630
|
if has_terminal?('', false, index)
|
3527
|
-
r1 =
|
3631
|
+
r1 = true
|
3528
3632
|
@index += 0
|
3529
3633
|
else
|
3530
3634
|
terminal_parse_failure('')
|
@@ -3559,7 +3663,7 @@ module Treetop
|
|
3559
3663
|
if node_cache[:inline_module].has_key?(index)
|
3560
3664
|
cached = node_cache[:inline_module][index]
|
3561
3665
|
if cached
|
3562
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3666
|
+
node_cache[:inline_module][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3563
3667
|
@index = cached.interval.end
|
3564
3668
|
end
|
3565
3669
|
return cached
|
@@ -3567,7 +3671,7 @@ module Treetop
|
|
3567
3671
|
|
3568
3672
|
i0, s0 = index, []
|
3569
3673
|
if has_terminal?('{', false, index)
|
3570
|
-
r1 =
|
3674
|
+
r1 = true
|
3571
3675
|
@index += 1
|
3572
3676
|
else
|
3573
3677
|
terminal_parse_failure('{')
|
@@ -3580,11 +3684,12 @@ module Treetop
|
|
3580
3684
|
i3 = index
|
3581
3685
|
r4 = _nt_inline_module
|
3582
3686
|
if r4
|
3687
|
+
r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
|
3583
3688
|
r3 = r4
|
3584
3689
|
else
|
3585
3690
|
i5, s5 = index, []
|
3586
3691
|
i6 = index
|
3587
|
-
if has_terminal?('\G[{}]',
|
3692
|
+
if has_terminal?(@regexps[gr = '\G[{}]'] ||= Regexp.new(gr), :regexp, index)
|
3588
3693
|
r7 = true
|
3589
3694
|
@index += 1
|
3590
3695
|
else
|
@@ -3599,7 +3704,7 @@ module Treetop
|
|
3599
3704
|
s5 << r6
|
3600
3705
|
if r6
|
3601
3706
|
if index < input_length
|
3602
|
-
r8 =
|
3707
|
+
r8 = true
|
3603
3708
|
@index += 1
|
3604
3709
|
else
|
3605
3710
|
terminal_parse_failure("any character")
|
@@ -3615,6 +3720,7 @@ module Treetop
|
|
3615
3720
|
r5 = nil
|
3616
3721
|
end
|
3617
3722
|
if r5
|
3723
|
+
r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
|
3618
3724
|
r3 = r5
|
3619
3725
|
else
|
3620
3726
|
@index = i3
|
@@ -3631,7 +3737,7 @@ module Treetop
|
|
3631
3737
|
s0 << r2
|
3632
3738
|
if r2
|
3633
3739
|
if has_terminal?('}', false, index)
|
3634
|
-
r9 =
|
3740
|
+
r9 = true
|
3635
3741
|
@index += 1
|
3636
3742
|
else
|
3637
3743
|
terminal_parse_failure('}')
|
@@ -3661,7 +3767,7 @@ module Treetop
|
|
3661
3767
|
if node_cache[:keyword_inside_grammar].has_key?(index)
|
3662
3768
|
cached = node_cache[:keyword_inside_grammar][index]
|
3663
3769
|
if cached
|
3664
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3770
|
+
node_cache[:keyword_inside_grammar][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3665
3771
|
@index = cached.interval.end
|
3666
3772
|
end
|
3667
3773
|
return cached
|
@@ -3677,6 +3783,7 @@ module Treetop
|
|
3677
3783
|
r2 = nil
|
3678
3784
|
end
|
3679
3785
|
if r2
|
3786
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
3680
3787
|
r1 = r2
|
3681
3788
|
else
|
3682
3789
|
if has_terminal?('end', false, index)
|
@@ -3687,6 +3794,7 @@ module Treetop
|
|
3687
3794
|
r3 = nil
|
3688
3795
|
end
|
3689
3796
|
if r3
|
3797
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
3690
3798
|
r1 = r3
|
3691
3799
|
else
|
3692
3800
|
@index = i1
|
@@ -3726,7 +3834,7 @@ module Treetop
|
|
3726
3834
|
if node_cache[:non_space_char].has_key?(index)
|
3727
3835
|
cached = node_cache[:non_space_char][index]
|
3728
3836
|
if cached
|
3729
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3837
|
+
node_cache[:non_space_char][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3730
3838
|
@index = cached.interval.end
|
3731
3839
|
end
|
3732
3840
|
return cached
|
@@ -3744,7 +3852,7 @@ module Treetop
|
|
3744
3852
|
s0 << r1
|
3745
3853
|
if r1
|
3746
3854
|
if index < input_length
|
3747
|
-
r3 =
|
3855
|
+
r3 = true
|
3748
3856
|
@index += 1
|
3749
3857
|
else
|
3750
3858
|
terminal_parse_failure("any character")
|
@@ -3770,13 +3878,13 @@ module Treetop
|
|
3770
3878
|
if node_cache[:alpha_char].has_key?(index)
|
3771
3879
|
cached = node_cache[:alpha_char][index]
|
3772
3880
|
if cached
|
3773
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3881
|
+
node_cache[:alpha_char][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3774
3882
|
@index = cached.interval.end
|
3775
3883
|
end
|
3776
3884
|
return cached
|
3777
3885
|
end
|
3778
3886
|
|
3779
|
-
if has_terminal?('\G[A-Za-z_]',
|
3887
|
+
if has_terminal?(@regexps[gr = '\G[A-Za-z_]'] ||= Regexp.new(gr), :regexp, index)
|
3780
3888
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3781
3889
|
@index += 1
|
3782
3890
|
else
|
@@ -3793,7 +3901,7 @@ module Treetop
|
|
3793
3901
|
if node_cache[:alphanumeric_char].has_key?(index)
|
3794
3902
|
cached = node_cache[:alphanumeric_char][index]
|
3795
3903
|
if cached
|
3796
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3904
|
+
node_cache[:alphanumeric_char][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3797
3905
|
@index = cached.interval.end
|
3798
3906
|
end
|
3799
3907
|
return cached
|
@@ -3802,15 +3910,17 @@ module Treetop
|
|
3802
3910
|
i0 = index
|
3803
3911
|
r1 = _nt_alpha_char
|
3804
3912
|
if r1
|
3913
|
+
r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
|
3805
3914
|
r0 = r1
|
3806
3915
|
else
|
3807
|
-
if has_terminal?('\G[0-9]',
|
3916
|
+
if has_terminal?(@regexps[gr = '\G[0-9]'] ||= Regexp.new(gr), :regexp, index)
|
3808
3917
|
r2 = true
|
3809
3918
|
@index += 1
|
3810
3919
|
else
|
3811
3920
|
r2 = nil
|
3812
3921
|
end
|
3813
3922
|
if r2
|
3923
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
3814
3924
|
r0 = r2
|
3815
3925
|
else
|
3816
3926
|
@index = i0
|
@@ -3828,7 +3938,7 @@ module Treetop
|
|
3828
3938
|
if node_cache[:space].has_key?(index)
|
3829
3939
|
cached = node_cache[:space][index]
|
3830
3940
|
if cached
|
3831
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3941
|
+
node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3832
3942
|
@index = cached.interval.end
|
3833
3943
|
end
|
3834
3944
|
return cached
|
@@ -3839,10 +3949,12 @@ module Treetop
|
|
3839
3949
|
i1 = index
|
3840
3950
|
r2 = _nt_white
|
3841
3951
|
if r2
|
3952
|
+
r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
|
3842
3953
|
r1 = r2
|
3843
3954
|
else
|
3844
3955
|
r3 = _nt_comment_to_eol
|
3845
3956
|
if r3
|
3957
|
+
r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
|
3846
3958
|
r1 = r3
|
3847
3959
|
else
|
3848
3960
|
@index = i1
|
@@ -3878,7 +3990,7 @@ module Treetop
|
|
3878
3990
|
if node_cache[:comment_to_eol].has_key?(index)
|
3879
3991
|
cached = node_cache[:comment_to_eol][index]
|
3880
3992
|
if cached
|
3881
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3993
|
+
node_cache[:comment_to_eol][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3882
3994
|
@index = cached.interval.end
|
3883
3995
|
end
|
3884
3996
|
return cached
|
@@ -3886,7 +3998,7 @@ module Treetop
|
|
3886
3998
|
|
3887
3999
|
i0, s0 = index, []
|
3888
4000
|
if has_terminal?('#', false, index)
|
3889
|
-
r1 =
|
4001
|
+
r1 = true
|
3890
4002
|
@index += 1
|
3891
4003
|
else
|
3892
4004
|
terminal_parse_failure('#')
|
@@ -3899,7 +4011,7 @@ module Treetop
|
|
3899
4011
|
i3, s3 = index, []
|
3900
4012
|
i4 = index
|
3901
4013
|
if has_terminal?("\n", false, index)
|
3902
|
-
r5 =
|
4014
|
+
r5 = true
|
3903
4015
|
@index += 1
|
3904
4016
|
else
|
3905
4017
|
terminal_parse_failure("\n")
|
@@ -3914,7 +4026,7 @@ module Treetop
|
|
3914
4026
|
s3 << r4
|
3915
4027
|
if r4
|
3916
4028
|
if index < input_length
|
3917
|
-
r6 =
|
4029
|
+
r6 = true
|
3918
4030
|
@index += 1
|
3919
4031
|
else
|
3920
4032
|
terminal_parse_failure("any character")
|
@@ -3956,13 +4068,13 @@ module Treetop
|
|
3956
4068
|
if node_cache[:white].has_key?(index)
|
3957
4069
|
cached = node_cache[:white][index]
|
3958
4070
|
if cached
|
3959
|
-
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
4071
|
+
node_cache[:white][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
|
3960
4072
|
@index = cached.interval.end
|
3961
4073
|
end
|
3962
4074
|
return cached
|
3963
4075
|
end
|
3964
4076
|
|
3965
|
-
if has_terminal?('\G[ \\t\\n\\r]',
|
4077
|
+
if has_terminal?(@regexps[gr = '\G[ \\t\\n\\r]'] ||= Regexp.new(gr), :regexp, index)
|
3966
4078
|
r0 = instantiate_node(SyntaxNode,input, index...(index + 1))
|
3967
4079
|
@index += 1
|
3968
4080
|
else
|