fig 1.22.0 → 1.22.1.beta.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -56,7 +56,7 @@ module Fig
56
56
  if node_cache[:package].has_key?(index)
57
57
  cached = node_cache[:package][index]
58
58
  if cached
59
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
59
+ node_cache[:package][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
60
60
  @index = cached.interval.end
61
61
  end
62
62
  return cached
@@ -110,7 +110,7 @@ module Fig
110
110
  if node_cache[:config_statement].has_key?(index)
111
111
  cached = node_cache[:config_statement][index]
112
112
  if cached
113
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
113
+ node_cache[:config_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
114
114
  @index = cached.interval.end
115
115
  end
116
116
  return cached
@@ -119,22 +119,27 @@ module Fig
119
119
  i0 = index
120
120
  r1 = _nt_override
121
121
  if r1
122
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
122
123
  r0 = r1
123
124
  else
124
125
  r2 = _nt_include
125
126
  if r2
127
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
126
128
  r0 = r2
127
129
  else
128
130
  r3 = _nt_command
129
131
  if r3
132
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
130
133
  r0 = r3
131
134
  else
132
135
  r4 = _nt_path
133
136
  if r4
137
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
134
138
  r0 = r4
135
139
  else
136
140
  r5 = _nt_set
137
141
  if r5
142
+ r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true
138
143
  r0 = r5
139
144
  else
140
145
  @index = i0
@@ -45,7 +45,7 @@ module Fig
45
45
  if node_cache[:package_statement_with_ws].has_key?(index)
46
46
  cached = node_cache[:package_statement_with_ws][index]
47
47
  if cached
48
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
48
+ node_cache[:package_statement_with_ws][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
49
49
  @index = cached.interval.end
50
50
  end
51
51
  return cached
@@ -91,7 +91,7 @@ module Fig
91
91
  if node_cache[:package_statement].has_key?(index)
92
92
  cached = node_cache[:package_statement][index]
93
93
  if cached
94
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
94
+ node_cache[:package_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
95
95
  @index = cached.interval.end
96
96
  end
97
97
  return cached
@@ -100,18 +100,22 @@ module Fig
100
100
  i0 = index
101
101
  r1 = _nt_archive
102
102
  if r1
103
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
103
104
  r0 = r1
104
105
  else
105
106
  r2 = _nt_resource
106
107
  if r2
108
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
107
109
  r0 = r2
108
110
  else
109
111
  r3 = _nt_retrieve
110
112
  if r3
113
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
111
114
  r0 = r3
112
115
  else
113
116
  r4 = _nt_config
114
117
  if r4
118
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
115
119
  r0 = r4
116
120
  else
117
121
  @index = i0
@@ -149,16 +153,16 @@ module Fig
149
153
  if node_cache[:archive].has_key?(index)
150
154
  cached = node_cache[:archive][index]
151
155
  if cached
152
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
156
+ node_cache[:archive][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
153
157
  @index = cached.interval.end
154
158
  end
155
159
  return cached
156
160
  end
157
161
 
158
162
  i0, s0 = index, []
159
- if has_terminal?('archive', false, index)
160
- r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
161
- @index += 7
163
+ if (match_len = has_terminal?('archive', false, index))
164
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
165
+ @index += match_len
162
166
  else
163
167
  terminal_parse_failure('archive')
164
168
  r1 = nil
@@ -223,16 +227,16 @@ module Fig
223
227
  if node_cache[:resource].has_key?(index)
224
228
  cached = node_cache[:resource][index]
225
229
  if cached
226
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
230
+ node_cache[:resource][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
227
231
  @index = cached.interval.end
228
232
  end
229
233
  return cached
230
234
  end
231
235
 
232
236
  i0, s0 = index, []
233
- if has_terminal?('resource', false, index)
234
- r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
235
- @index += 8
237
+ if (match_len = has_terminal?('resource', false, index))
238
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
239
+ @index += match_len
236
240
  else
237
241
  terminal_parse_failure('resource')
238
242
  r1 = nil
@@ -301,16 +305,16 @@ module Fig
301
305
  if node_cache[:retrieve].has_key?(index)
302
306
  cached = node_cache[:retrieve][index]
303
307
  if cached
304
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
308
+ node_cache[:retrieve][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
305
309
  @index = cached.interval.end
306
310
  end
307
311
  return cached
308
312
  end
309
313
 
310
314
  i0, s0 = index, []
311
- if has_terminal?('retrieve', false, index)
312
- r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
313
- @index += 8
315
+ if (match_len = has_terminal?('retrieve', false, index))
316
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
317
+ @index += match_len
314
318
  else
315
319
  terminal_parse_failure('retrieve')
316
320
  r1 = nil
@@ -337,9 +341,9 @@ module Fig
337
341
  r4 = _nt_environment_variable_name
338
342
  s0 << r4
339
343
  if r4
340
- if has_terminal?('->', false, index)
341
- r5 = instantiate_node(SyntaxNode,input, index...(index + 2))
342
- @index += 2
344
+ if (match_len = has_terminal?('->', false, index))
345
+ r5 = instantiate_node(SyntaxNode,input, index...(index + match_len))
346
+ @index += match_len
343
347
  else
344
348
  terminal_parse_failure('->')
345
349
  r5 = nil
@@ -394,16 +398,16 @@ module Fig
394
398
  if node_cache[:config].has_key?(index)
395
399
  cached = node_cache[:config][index]
396
400
  if cached
397
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
401
+ node_cache[:config][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
398
402
  @index = cached.interval.end
399
403
  end
400
404
  return cached
401
405
  end
402
406
 
403
407
  i0, s0 = index, []
404
- if has_terminal?('config', false, index)
405
- r1 = instantiate_node(SyntaxNode,input, index...(index + 6))
406
- @index += 6
408
+ if (match_len = has_terminal?('config', false, index))
409
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
410
+ @index += match_len
407
411
  else
408
412
  terminal_parse_failure('config')
409
413
  r1 = nil
@@ -459,9 +463,9 @@ module Fig
459
463
  r7 = instantiate_node(SyntaxNode,input, i7...index, s7)
460
464
  s0 << r7
461
465
  if r7
462
- if has_terminal?('end', false, index)
463
- r9 = instantiate_node(SyntaxNode,input, index...(index + 3))
464
- @index += 3
466
+ if (match_len = has_terminal?('end', false, index))
467
+ r9 = instantiate_node(SyntaxNode,input, index...(index + match_len))
468
+ @index += match_len
465
469
  else
466
470
  terminal_parse_failure('end')
467
471
  r9 = nil
@@ -504,7 +508,7 @@ module Fig
504
508
  if node_cache[:config_statement_with_ws].has_key?(index)
505
509
  cached = node_cache[:config_statement_with_ws][index]
506
510
  if cached
507
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
511
+ node_cache[:config_statement_with_ws][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
508
512
  @index = cached.interval.end
509
513
  end
510
514
  return cached
@@ -568,16 +572,16 @@ module Fig
568
572
  if node_cache[:include].has_key?(index)
569
573
  cached = node_cache[:include][index]
570
574
  if cached
571
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
575
+ node_cache[:include][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
572
576
  @index = cached.interval.end
573
577
  end
574
578
  return cached
575
579
  end
576
580
 
577
581
  i0, s0 = index, []
578
- if has_terminal?('include', false, index)
579
- r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
580
- @index += 7
582
+ if (match_len = has_terminal?('include', false, index))
583
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
584
+ @index += match_len
581
585
  else
582
586
  terminal_parse_failure('include')
583
587
  r1 = nil
@@ -642,16 +646,16 @@ module Fig
642
646
  if node_cache[:override].has_key?(index)
643
647
  cached = node_cache[:override][index]
644
648
  if cached
645
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
649
+ node_cache[:override][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
646
650
  @index = cached.interval.end
647
651
  end
648
652
  return cached
649
653
  end
650
654
 
651
655
  i0, s0 = index, []
652
- if has_terminal?('override', false, index)
653
- r1 = instantiate_node(SyntaxNode,input, index...(index + 8))
654
- @index += 8
656
+ if (match_len = has_terminal?('override', false, index))
657
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
658
+ @index += match_len
655
659
  else
656
660
  terminal_parse_failure('override')
657
661
  r1 = nil
@@ -716,16 +720,16 @@ module Fig
716
720
  if node_cache[:set].has_key?(index)
717
721
  cached = node_cache[:set][index]
718
722
  if cached
719
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
723
+ node_cache[:set][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
720
724
  @index = cached.interval.end
721
725
  end
722
726
  return cached
723
727
  end
724
728
 
725
729
  i0, s0 = index, []
726
- if has_terminal?('set', false, index)
727
- r1 = instantiate_node(SyntaxNode,input, index...(index + 3))
728
- @index += 3
730
+ if (match_len = has_terminal?('set', false, index))
731
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
732
+ @index += match_len
729
733
  else
730
734
  terminal_parse_failure('set')
731
735
  r1 = nil
@@ -790,7 +794,7 @@ module Fig
790
794
  if node_cache[:path].has_key?(index)
791
795
  cached = node_cache[:path][index]
792
796
  if cached
793
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
797
+ node_cache[:path][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
794
798
  @index = cached.interval.end
795
799
  end
796
800
  return cached
@@ -798,34 +802,37 @@ module Fig
798
802
 
799
803
  i0, s0 = index, []
800
804
  i1 = index
801
- if has_terminal?('add', false, index)
802
- r2 = instantiate_node(SyntaxNode,input, index...(index + 3))
803
- @index += 3
805
+ if (match_len = has_terminal?('add', false, index))
806
+ r2 = instantiate_node(SyntaxNode,input, index...(index + match_len))
807
+ @index += match_len
804
808
  else
805
809
  terminal_parse_failure('add')
806
810
  r2 = nil
807
811
  end
808
812
  if r2
813
+ r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true
809
814
  r1 = r2
810
815
  else
811
- if has_terminal?('append', false, index)
812
- r3 = instantiate_node(SyntaxNode,input, index...(index + 6))
813
- @index += 6
816
+ if (match_len = has_terminal?('append', false, index))
817
+ r3 = instantiate_node(SyntaxNode,input, index...(index + match_len))
818
+ @index += match_len
814
819
  else
815
820
  terminal_parse_failure('append')
816
821
  r3 = nil
817
822
  end
818
823
  if r3
824
+ r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true
819
825
  r1 = r3
820
826
  else
821
- if has_terminal?('path', false, index)
822
- r4 = instantiate_node(SyntaxNode,input, index...(index + 4))
823
- @index += 4
827
+ if (match_len = has_terminal?('path', false, index))
828
+ r4 = instantiate_node(SyntaxNode,input, index...(index + match_len))
829
+ @index += match_len
824
830
  else
825
831
  terminal_parse_failure('path')
826
832
  r4 = nil
827
833
  end
828
834
  if r4
835
+ r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true
829
836
  r1 = r4
830
837
  else
831
838
  @index = i1
@@ -910,16 +917,16 @@ module Fig
910
917
  if node_cache[:command].has_key?(index)
911
918
  cached = node_cache[:command][index]
912
919
  if cached
913
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
920
+ node_cache[:command][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
914
921
  @index = cached.interval.end
915
922
  end
916
923
  return cached
917
924
  end
918
925
 
919
926
  i0, s0 = index, []
920
- if has_terminal?('command', false, index)
921
- r1 = instantiate_node(SyntaxNode,input, index...(index + 7))
922
- @index += 7
927
+ if (match_len = has_terminal?('command', false, index))
928
+ r1 = instantiate_node(SyntaxNode,input, index...(index + match_len))
929
+ @index += match_len
923
930
  else
924
931
  terminal_parse_failure('command')
925
932
  r1 = nil
@@ -963,9 +970,9 @@ module Fig
963
970
  end
964
971
  s0 << r5
965
972
  if r5
966
- if has_terminal?('end', false, index)
967
- r7 = instantiate_node(SyntaxNode,input, index...(index + 3))
968
- @index += 3
973
+ if (match_len = has_terminal?('end', false, index))
974
+ r7 = instantiate_node(SyntaxNode,input, index...(index + match_len))
975
+ @index += match_len
969
976
  else
970
977
  terminal_parse_failure('end')
971
978
  r7 = nil
@@ -1008,7 +1015,7 @@ module Fig
1008
1015
  if node_cache[:command_line].has_key?(index)
1009
1016
  cached = node_cache[:command_line][index]
1010
1017
  if cached
1011
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1018
+ node_cache[:command_line][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1012
1019
  @index = cached.interval.end
1013
1020
  end
1014
1021
  return cached
@@ -1097,7 +1104,7 @@ module Fig
1097
1104
  if node_cache[:descriptor_string].has_key?(index)
1098
1105
  cached = node_cache[:descriptor_string][index]
1099
1106
  if cached
1100
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1107
+ node_cache[:descriptor_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1101
1108
  @index = cached.interval.end
1102
1109
  end
1103
1110
  return cached
@@ -1105,10 +1112,11 @@ module Fig
1105
1112
 
1106
1113
  s0, i0 = [], index
1107
1114
  loop do
1108
- if has_terminal?('\G[^\\s#]', true, index)
1115
+ if has_terminal?(@regexps[gr = '\A[^\\s#]'] ||= Regexp.new(gr), :regexp, index)
1109
1116
  r1 = true
1110
1117
  @index += 1
1111
1118
  else
1119
+ terminal_parse_failure('[^\\s#]')
1112
1120
  r1 = nil
1113
1121
  end
1114
1122
  if r1
@@ -1134,7 +1142,7 @@ module Fig
1134
1142
  if node_cache[:config_name].has_key?(index)
1135
1143
  cached = node_cache[:config_name][index]
1136
1144
  if cached
1137
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1145
+ node_cache[:config_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1138
1146
  @index = cached.interval.end
1139
1147
  end
1140
1148
  return cached
@@ -1142,10 +1150,11 @@ module Fig
1142
1150
 
1143
1151
  s0, i0 = [], index
1144
1152
  loop do
1145
- if has_terminal?('\G[a-zA-Z0-9_.-]', true, index)
1153
+ if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9_.-]'] ||= Regexp.new(gr), :regexp, index)
1146
1154
  r1 = true
1147
1155
  @index += 1
1148
1156
  else
1157
+ terminal_parse_failure('[a-zA-Z0-9_.-]')
1149
1158
  r1 = nil
1150
1159
  end
1151
1160
  if r1
@@ -1195,7 +1204,7 @@ module Fig
1195
1204
  if node_cache[:quoted_or_bare_string].has_key?(index)
1196
1205
  cached = node_cache[:quoted_or_bare_string][index]
1197
1206
  if cached
1198
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1207
+ node_cache[:quoted_or_bare_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1199
1208
  @index = cached.interval.end
1200
1209
  end
1201
1210
  return cached
@@ -1205,10 +1214,11 @@ module Fig
1205
1214
  i1, s1 = index, []
1206
1215
  s2, i2 = [], index
1207
1216
  loop do
1208
- if has_terminal?('\G[^\\s#\\\\"]', true, index)
1217
+ if has_terminal?(@regexps[gr = '\A[^\\s#\\\\"]'] ||= Regexp.new(gr), :regexp, index)
1209
1218
  r3 = true
1210
1219
  @index += 1
1211
1220
  else
1221
+ terminal_parse_failure('[^\\s#\\\\"]')
1212
1222
  r3 = nil
1213
1223
  end
1214
1224
  if r3
@@ -1220,9 +1230,9 @@ module Fig
1220
1230
  r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1221
1231
  s1 << r2
1222
1232
  if r2
1223
- if has_terminal?('"', false, index)
1224
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1225
- @index += 1
1233
+ if (match_len = has_terminal?('"', false, index))
1234
+ r4 = true
1235
+ @index += match_len
1226
1236
  else
1227
1237
  terminal_parse_failure('"')
1228
1238
  r4 = nil
@@ -1232,19 +1242,21 @@ module Fig
1232
1242
  s5, i5 = [], index
1233
1243
  loop do
1234
1244
  i6 = index
1235
- if has_terminal?('\G[^"\\\\]', true, index)
1245
+ if has_terminal?(@regexps[gr = '\A[^"\\\\]'] ||= Regexp.new(gr), :regexp, index)
1236
1246
  r7 = true
1237
1247
  @index += 1
1238
1248
  else
1249
+ terminal_parse_failure('[^"\\\\]')
1239
1250
  r7 = nil
1240
1251
  end
1241
1252
  if r7
1253
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
1242
1254
  r6 = r7
1243
1255
  else
1244
1256
  i8, s8 = index, []
1245
- if has_terminal?('\\', false, index)
1246
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1247
- @index += 1
1257
+ if (match_len = has_terminal?('\\', false, index))
1258
+ r9 = true
1259
+ @index += match_len
1248
1260
  else
1249
1261
  terminal_parse_failure('\\')
1250
1262
  r9 = nil
@@ -1252,7 +1264,7 @@ module Fig
1252
1264
  s8 << r9
1253
1265
  if r9
1254
1266
  if index < input_length
1255
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
1267
+ r10 = true
1256
1268
  @index += 1
1257
1269
  else
1258
1270
  terminal_parse_failure("any character")
@@ -1268,6 +1280,7 @@ module Fig
1268
1280
  r8 = nil
1269
1281
  end
1270
1282
  if r8
1283
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
1271
1284
  r6 = r8
1272
1285
  else
1273
1286
  @index = i6
@@ -1283,9 +1296,9 @@ module Fig
1283
1296
  r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1284
1297
  s1 << r5
1285
1298
  if r5
1286
- if has_terminal?('"', false, index)
1287
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
1288
- @index += 1
1299
+ if (match_len = has_terminal?('"', false, index))
1300
+ r11 = true
1301
+ @index += match_len
1289
1302
  else
1290
1303
  terminal_parse_failure('"')
1291
1304
  r11 = nil
@@ -1303,15 +1316,17 @@ module Fig
1303
1316
  r1 = nil
1304
1317
  end
1305
1318
  if r1
1319
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1306
1320
  r0 = r1
1307
1321
  else
1308
1322
  i12, s12 = index, []
1309
1323
  s13, i13 = [], index
1310
1324
  loop do
1311
- if has_terminal?('\G[^\\s#\\\\\']', true, index)
1325
+ if has_terminal?(@regexps[gr = '\A[^\\s#\\\\\']'] ||= Regexp.new(gr), :regexp, index)
1312
1326
  r14 = true
1313
1327
  @index += 1
1314
1328
  else
1329
+ terminal_parse_failure('[^\\s#\\\\\']')
1315
1330
  r14 = nil
1316
1331
  end
1317
1332
  if r14
@@ -1323,9 +1338,9 @@ module Fig
1323
1338
  r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1324
1339
  s12 << r13
1325
1340
  if r13
1326
- if has_terminal?("'", false, index)
1327
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
1328
- @index += 1
1341
+ if (match_len = has_terminal?("'", false, index))
1342
+ r15 = true
1343
+ @index += match_len
1329
1344
  else
1330
1345
  terminal_parse_failure("'")
1331
1346
  r15 = nil
@@ -1335,19 +1350,21 @@ module Fig
1335
1350
  s16, i16 = [], index
1336
1351
  loop do
1337
1352
  i17 = index
1338
- if has_terminal?('\G[^\'\\\\]', true, index)
1353
+ if has_terminal?(@regexps[gr = '\A[^\'\\\\]'] ||= Regexp.new(gr), :regexp, index)
1339
1354
  r18 = true
1340
1355
  @index += 1
1341
1356
  else
1357
+ terminal_parse_failure('[^\'\\\\]')
1342
1358
  r18 = nil
1343
1359
  end
1344
1360
  if r18
1361
+ r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true
1345
1362
  r17 = r18
1346
1363
  else
1347
1364
  i19, s19 = index, []
1348
- if has_terminal?('\\', false, index)
1349
- r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
1350
- @index += 1
1365
+ if (match_len = has_terminal?('\\', false, index))
1366
+ r20 = true
1367
+ @index += match_len
1351
1368
  else
1352
1369
  terminal_parse_failure('\\')
1353
1370
  r20 = nil
@@ -1355,7 +1372,7 @@ module Fig
1355
1372
  s19 << r20
1356
1373
  if r20
1357
1374
  if index < input_length
1358
- r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
1375
+ r21 = true
1359
1376
  @index += 1
1360
1377
  else
1361
1378
  terminal_parse_failure("any character")
@@ -1371,6 +1388,7 @@ module Fig
1371
1388
  r19 = nil
1372
1389
  end
1373
1390
  if r19
1391
+ r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true
1374
1392
  r17 = r19
1375
1393
  else
1376
1394
  @index = i17
@@ -1386,9 +1404,9 @@ module Fig
1386
1404
  r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
1387
1405
  s12 << r16
1388
1406
  if r16
1389
- if has_terminal?("'", false, index)
1390
- r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
1391
- @index += 1
1407
+ if (match_len = has_terminal?("'", false, index))
1408
+ r22 = true
1409
+ @index += match_len
1392
1410
  else
1393
1411
  terminal_parse_failure("'")
1394
1412
  r22 = nil
@@ -1406,14 +1424,16 @@ module Fig
1406
1424
  r12 = nil
1407
1425
  end
1408
1426
  if r12
1427
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
1409
1428
  r0 = r12
1410
1429
  else
1411
1430
  s23, i23 = [], index
1412
1431
  loop do
1413
- if has_terminal?('\G[^\\s#]', true, index)
1432
+ if has_terminal?(@regexps[gr = '\A[^\\s#]'] ||= Regexp.new(gr), :regexp, index)
1414
1433
  r24 = true
1415
1434
  @index += 1
1416
1435
  else
1436
+ terminal_parse_failure('[^\\s#]')
1417
1437
  r24 = nil
1418
1438
  end
1419
1439
  if r24
@@ -1430,6 +1450,7 @@ module Fig
1430
1450
  r23.extend(QuotedOrBareString6)
1431
1451
  end
1432
1452
  if r23
1453
+ r23 = SyntaxNode.new(input, (index-1)...index) if r23 == true
1433
1454
  r0 = r23
1434
1455
  else
1435
1456
  @index = i0
@@ -1448,7 +1469,7 @@ module Fig
1448
1469
  if node_cache[:environment_variable_name].has_key?(index)
1449
1470
  cached = node_cache[:environment_variable_name][index]
1450
1471
  if cached
1451
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1472
+ node_cache[:environment_variable_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1452
1473
  @index = cached.interval.end
1453
1474
  end
1454
1475
  return cached
@@ -1456,10 +1477,11 @@ module Fig
1456
1477
 
1457
1478
  s0, i0 = [], index
1458
1479
  loop do
1459
- if has_terminal?('\G[a-zA-Z0-9_]', true, index)
1480
+ if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9_]'] ||= Regexp.new(gr), :regexp, index)
1460
1481
  r1 = true
1461
1482
  @index += 1
1462
1483
  else
1484
+ terminal_parse_failure('[a-zA-Z0-9_]')
1463
1485
  r1 = nil
1464
1486
  end
1465
1487
  if r1
@@ -1497,7 +1519,7 @@ module Fig
1497
1519
  if node_cache[:environment_variable_name_value].has_key?(index)
1498
1520
  cached = node_cache[:environment_variable_name_value][index]
1499
1521
  if cached
1500
- cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1522
+ node_cache[:environment_variable_name_value][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
1501
1523
  @index = cached.interval.end
1502
1524
  end
1503
1525
  return cached
@@ -1507,10 +1529,11 @@ module Fig
1507
1529
  i1, s1 = index, []
1508
1530
  s2, i2 = [], index
1509
1531
  loop do
1510
- if has_terminal?('\G[^\\s#\\\\\'"]', true, index)
1532
+ if has_terminal?(@regexps[gr = '\A[^\\s#\\\\\'"]'] ||= Regexp.new(gr), :regexp, index)
1511
1533
  r3 = true
1512
1534
  @index += 1
1513
1535
  else
1536
+ terminal_parse_failure('[^\\s#\\\\\'"]')
1514
1537
  r3 = nil
1515
1538
  end
1516
1539
  if r3
@@ -1522,9 +1545,9 @@ module Fig
1522
1545
  r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
1523
1546
  s1 << r2
1524
1547
  if r2
1525
- if has_terminal?('"', false, index)
1526
- r4 = instantiate_node(SyntaxNode,input, index...(index + 1))
1527
- @index += 1
1548
+ if (match_len = has_terminal?('"', false, index))
1549
+ r4 = true
1550
+ @index += match_len
1528
1551
  else
1529
1552
  terminal_parse_failure('"')
1530
1553
  r4 = nil
@@ -1534,19 +1557,21 @@ module Fig
1534
1557
  s5, i5 = [], index
1535
1558
  loop do
1536
1559
  i6 = index
1537
- if has_terminal?('\G[^"\\\\]', true, index)
1560
+ if has_terminal?(@regexps[gr = '\A[^"\\\\]'] ||= Regexp.new(gr), :regexp, index)
1538
1561
  r7 = true
1539
1562
  @index += 1
1540
1563
  else
1564
+ terminal_parse_failure('[^"\\\\]')
1541
1565
  r7 = nil
1542
1566
  end
1543
1567
  if r7
1568
+ r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true
1544
1569
  r6 = r7
1545
1570
  else
1546
1571
  i8, s8 = index, []
1547
- if has_terminal?('\\', false, index)
1548
- r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
1549
- @index += 1
1572
+ if (match_len = has_terminal?('\\', false, index))
1573
+ r9 = true
1574
+ @index += match_len
1550
1575
  else
1551
1576
  terminal_parse_failure('\\')
1552
1577
  r9 = nil
@@ -1554,7 +1579,7 @@ module Fig
1554
1579
  s8 << r9
1555
1580
  if r9
1556
1581
  if index < input_length
1557
- r10 = instantiate_node(SyntaxNode,input, index...(index + 1))
1582
+ r10 = true
1558
1583
  @index += 1
1559
1584
  else
1560
1585
  terminal_parse_failure("any character")
@@ -1570,6 +1595,7 @@ module Fig
1570
1595
  r8 = nil
1571
1596
  end
1572
1597
  if r8
1598
+ r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true
1573
1599
  r6 = r8
1574
1600
  else
1575
1601
  @index = i6
@@ -1585,9 +1611,9 @@ module Fig
1585
1611
  r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
1586
1612
  s1 << r5
1587
1613
  if r5
1588
- if has_terminal?('"', false, index)
1589
- r11 = instantiate_node(SyntaxNode,input, index...(index + 1))
1590
- @index += 1
1614
+ if (match_len = has_terminal?('"', false, index))
1615
+ r11 = true
1616
+ @index += match_len
1591
1617
  else
1592
1618
  terminal_parse_failure('"')
1593
1619
  r11 = nil
@@ -1604,15 +1630,17 @@ module Fig
1604
1630
  r1 = nil
1605
1631
  end
1606
1632
  if r1
1633
+ r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true
1607
1634
  r0 = r1
1608
1635
  else
1609
1636
  i12, s12 = index, []
1610
1637
  s13, i13 = [], index
1611
1638
  loop do
1612
- if has_terminal?('\G[^\\s#\\\\\'"]', true, index)
1639
+ if has_terminal?(@regexps[gr = '\A[^\\s#\\\\\'"]'] ||= Regexp.new(gr), :regexp, index)
1613
1640
  r14 = true
1614
1641
  @index += 1
1615
1642
  else
1643
+ terminal_parse_failure('[^\\s#\\\\\'"]')
1616
1644
  r14 = nil
1617
1645
  end
1618
1646
  if r14
@@ -1624,9 +1652,9 @@ module Fig
1624
1652
  r13 = instantiate_node(SyntaxNode,input, i13...index, s13)
1625
1653
  s12 << r13
1626
1654
  if r13
1627
- if has_terminal?("'", false, index)
1628
- r15 = instantiate_node(SyntaxNode,input, index...(index + 1))
1629
- @index += 1
1655
+ if (match_len = has_terminal?("'", false, index))
1656
+ r15 = true
1657
+ @index += match_len
1630
1658
  else
1631
1659
  terminal_parse_failure("'")
1632
1660
  r15 = nil
@@ -1636,19 +1664,21 @@ module Fig
1636
1664
  s16, i16 = [], index
1637
1665
  loop do
1638
1666
  i17 = index
1639
- if has_terminal?('\G[^\'\\\\]', true, index)
1667
+ if has_terminal?(@regexps[gr = '\A[^\'\\\\]'] ||= Regexp.new(gr), :regexp, index)
1640
1668
  r18 = true
1641
1669
  @index += 1
1642
1670
  else
1671
+ terminal_parse_failure('[^\'\\\\]')
1643
1672
  r18 = nil
1644
1673
  end
1645
1674
  if r18
1675
+ r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true
1646
1676
  r17 = r18
1647
1677
  else
1648
1678
  i19, s19 = index, []
1649
- if has_terminal?('\\', false, index)
1650
- r20 = instantiate_node(SyntaxNode,input, index...(index + 1))
1651
- @index += 1
1679
+ if (match_len = has_terminal?('\\', false, index))
1680
+ r20 = true
1681
+ @index += match_len
1652
1682
  else
1653
1683
  terminal_parse_failure('\\')
1654
1684
  r20 = nil
@@ -1656,7 +1686,7 @@ module Fig
1656
1686
  s19 << r20
1657
1687
  if r20
1658
1688
  if index < input_length
1659
- r21 = instantiate_node(SyntaxNode,input, index...(index + 1))
1689
+ r21 = true
1660
1690
  @index += 1
1661
1691
  else
1662
1692
  terminal_parse_failure("any character")
@@ -1672,6 +1702,7 @@ module Fig
1672
1702
  r19 = nil
1673
1703
  end
1674
1704
  if r19
1705
+ r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true
1675
1706
  r17 = r19
1676
1707
  else
1677
1708
  @index = i17
@@ -1687,9 +1718,9 @@ module Fig
1687
1718
  r16 = instantiate_node(SyntaxNode,input, i16...index, s16)
1688
1719
  s12 << r16
1689
1720
  if r16
1690
- if has_terminal?("'", false, index)
1691
- r22 = instantiate_node(SyntaxNode,input, index...(index + 1))
1692
- @index += 1
1721
+ if (match_len = has_terminal?("'", false, index))
1722
+ r22 = true
1723
+ @index += match_len
1693
1724
  else
1694
1725
  terminal_parse_failure("'")
1695
1726
  r22 = nil
@@ -1706,14 +1737,16 @@ module Fig
1706
1737
  r12 = nil
1707
1738
  end
1708
1739
  if r12
1740
+ r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true
1709
1741
  r0 = r12
1710
1742
  else
1711
1743
  s23, i23 = [], index
1712
1744
  loop do
1713
- if has_terminal?('\G[^\\s#]', true, index)
1745
+ if has_terminal?(@regexps[gr = '\A[^\\s#]'] ||= Regexp.new(gr), :regexp, index)
1714
1746
  r24 = true
1715
1747
  @index += 1
1716
1748
  else
1749
+ terminal_parse_failure('[^\\s#]')
1717
1750
  r24 = nil
1718
1751
  end
1719
1752
  if r24
@@ -1729,6 +1762,7 @@ module Fig
1729
1762
  r23 = instantiate_node(SyntaxNode,input, i23...index, s23)
1730
1763
  end
1731
1764
  if r23
1765
+ r23 = SyntaxNode.new(input, (index-1)...index) if r23 == true
1732
1766
  r0 = r23
1733
1767
  else
1734
1768
  @index = i0