1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
|
# File 'lib/fig/grammar/v0.rb', line 1221
def _nt_config_name
start_index = index
if node_cache[:config_name].has_key?(index)
cached = node_cache[:config_name][index]
if cached
node_cache[:config_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
@index = cached.interval.end
end
return cached
end
s0, i0 = [], index
loop do
if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9_.-]'] ||= Regexp.new(gr), :regexp, index)
r1 = true
@index += 1
else
terminal_parse_failure('[a-zA-Z0-9_.-]')
r1 = nil
end
if r1
s0 << r1
else
break
end
end
if s0.empty?
@index = i0
r0 = nil
else
r0 = instantiate_node(SyntaxNode,input, i0...index, s0)
end
node_cache[:config_name][start_index] = r0
r0
end
|