def _nt_composite_type
start_index = index
if node_cache[:composite_type].has_key?(index)
cached = node_cache[:composite_type][index]
if cached
cached = SyntaxNode.new(input, index...(index + 1)) if cached == true
@index = cached.interval.end
end
return cached
end
i0 = index
i1, s1 = index, []
if has_terminal?('\G[mM]', true, index)
r2 = true
@index += 1
else
r2 = nil
end
s1 << r2
if r2
if has_terminal?('\G[eE]', true, index)
r3 = true
@index += 1
else
r3 = nil
end
s1 << r3
if r3
if has_terminal?('\G[sS]', true, index)
r4 = true
@index += 1
else
r4 = nil
end
s1 << r4
if r4
if has_terminal?('\G[sS]', true, index)
r5 = true
@index += 1
else
r5 = nil
end
s1 << r5
if r5
if has_terminal?('\G[aA]', true, index)
r6 = true
@index += 1
else
r6 = nil
end
s1 << r6
if r6
if has_terminal?('\G[gG]', true, index)
r7 = true
@index += 1
else
r7 = nil
end
s1 << r7
if r7
if has_terminal?('\G[eE]', true, index)
r8 = true
@index += 1
else
r8 = nil
end
s1 << r8
end
end
end
end
end
end
if s1.last
r1 = instantiate_node(SyntaxNode,input, i1...index, s1)
r1.extend(CompositeType0)
else
@index = i1
r1 = nil
end
if r1
r0 = r1
else
i9, s9 = index, []
if has_terminal?('\G[mM]', true, index)
r10 = true
@index += 1
else
r10 = nil
end
s9 << r10
if r10
if has_terminal?('\G[uU]', true, index)
r11 = true
@index += 1
else
r11 = nil
end
s9 << r11
if r11
if has_terminal?('\G[lL]', true, index)
r12 = true
@index += 1
else
r12 = nil
end
s9 << r12
if r12
if has_terminal?('\G[tT]', true, index)
r13 = true
@index += 1
else
r13 = nil
end
s9 << r13
if r13
if has_terminal?('\G[iI]', true, index)
r14 = true
@index += 1
else
r14 = nil
end
s9 << r14
if r14
if has_terminal?('\G[pP]', true, index)
r15 = true
@index += 1
else
r15 = nil
end
s9 << r15
if r15
if has_terminal?('\G[aA]', true, index)
r16 = true
@index += 1
else
r16 = nil
end
s9 << r16
if r16
if has_terminal?('\G[rR]', true, index)
r17 = true
@index += 1
else
r17 = nil
end
s9 << r17
if r17
if has_terminal?('\G[tT]', true, index)
r18 = true
@index += 1
else
r18 = nil
end
s9 << r18
end
end
end
end
end
end
end
end
if s9.last
r9 = instantiate_node(SyntaxNode,input, i9...index, s9)
r9.extend(CompositeType1)
else
@index = i9
r9 = nil
end
if r9
r0 = r9
else
r19 = _nt_extension_token
if r19
r0 = r19
else
@index = i0
r0 = nil
end
end
end
node_cache[:composite_type][start_index] = r0
r0
end