2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
|
# File 'lib/vendor/treetop/lib/treetop/compiler/metagrammar.rb', line 2694
def _nt_inline_module
start_index = index
if node_cache[:inline_module].has_key?(index)
cached = node_cache[:inline_module][index]
@index = cached.interval.end if cached
return cached
end
i0, s0 = index, []
if input.index('{', index) == index
r1 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure('{')
r1 = nil
end
s0 << r1
if r1
s2, i2 = [], index
loop do
i3 = index
r4 = _nt_inline_module
if r4
r3 = r4
else
i5, s5 = index, []
i6 = index
if input.index(Regexp.new('[{}]'), index) == index
r7 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
r7 = nil
end
if r7
r6 = nil
else
self.index = i6
r6 = instantiate_node(SyntaxNode,input, index...index)
end
s5 << r6
if r6
if index < input_length
r8 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure("any character")
r8 = nil
end
s5 << r8
end
if s5.last
r5 = instantiate_node(SyntaxNode,input, i5...index, s5)
r5.extend(InlineModule0)
else
self.index = i5
r5 = nil
end
if r5
r3 = r5
else
self.index = i3
r3 = nil
end
end
if r3
s2 << r3
else
break
end
end
r2 = instantiate_node(SyntaxNode,input, i2...index, s2)
s0 << r2
if r2
if input.index('}', index) == index
r9 = instantiate_node(SyntaxNode,input, index...(index + 1))
@index += 1
else
terminal_parse_failure('}')
r9 = nil
end
s0 << r9
end
end
if s0.last
r0 = instantiate_node(InlineModule,input, i0...index, s0)
r0.extend(InlineModule1)
else
self.index = i0
r0 = nil
end
node_cache[:inline_module][start_index] = r0
return r0
end
|