Runtime::SyntaxNode
# File lib/treetop/compiler/node_classes/parsing_rule.rb, line 5 5: def compile(builder) 6: compile_inline_module_declarations(builder) 7: generate_method_definition(builder) 8: end
# File lib/treetop/compiler/node_classes/parsing_rule.rb, line 10
10: def compile_inline_module_declarations(builder)
11: parsing_expression.inline_modules.each_with_index do |inline_module, i|
12: inline_module.compile(i, builder, self)
13: builder.newline
14: end
15: end
# File lib/treetop/compiler/node_classes/parsing_rule.rb, line 34
34: def generate_cache_lookup(builder)
35: builder.if_ "node_cache[:#{name}].has_key?(index)" do
36: builder.assign 'cached', "node_cache[:#{name}][index]"
37: builder.if_ "cached" do
38: builder << 'cached = SyntaxNode.new(input, index...(index + 1)) if cached == true'
39: builder << '@index = cached.interval.end'
40: end
41: builder << 'return cached'
42: end
43: end
# File lib/treetop/compiler/node_classes/parsing_rule.rb, line 45
45: def generate_cache_storage(builder, result_var)
46: builder.assign "node_cache[:#{name}][start_index]", result_var
47: end
# File lib/treetop/compiler/node_classes/parsing_rule.rb, line 17
17: def generate_method_definition(builder)
18: builder.reset_addresses
19: expression_address = builder.next_address
20: result_var = "r#{expression_address}"
21:
22: builder.method_declaration(method_name) do
23: builder.assign 'start_index', 'index'
24: generate_cache_lookup(builder)
25: builder.newline
26: parsing_expression.compile(expression_address, builder)
27: builder.newline
28: generate_cache_storage(builder, result_var)
29: builder.newline
30: builder << result_var
31: end
32: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.