Parent

Files

Class/Module Index [+]

Quicksearch

Treetop::Compiler::ParsingExpression

Attributes

address[R]
builder[R]
parent_expression[R]
subexpression_address[R]
var_symbols[R]

Public Instance Methods

accumulate_subexpression_result() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 65
def accumulate_subexpression_result
  builder.accumulate accumulator_var, subexpression_result_var
end
accumulator_var() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 45
def accumulator_var
  var(:accumulator)
end
assign_failure(start_index_var) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 93
def assign_failure(start_index_var)
  assign_result("nil")
end
assign_lazily_instantiated_node() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 97
def assign_lazily_instantiated_node
  assign_result("true")
end
assign_result(value_ruby) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 69
def assign_result(value_ruby)
  builder.assign result_var, value_ruby
end
begin_comment(expression) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 133
def begin_comment(expression)
  #builder << "# begin #{on_one_line(expression)}"
end
compile(address, builder, parent_expression) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 6
def compile(address, builder, parent_expression)
  @address = address
  @builder = builder
  @parent_expression = parent_expression
end
declared_module_name() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 16
def declared_module_name
  parent_expression && parent_expression.node_class_name
end
decorated?() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 24
def decorated?
  parent_expression && (parent_expression.node_class_name || parent_expression.node_class_name || parent_expression.inline_module_name)
end
end_comment(expression) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 137
def end_comment(expression)
  #builder << "# end #{on_one_line(expression)}"
end
epsilon_node() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 89
def epsilon_node
  "instantiate_node(SyntaxNode,input, index...index)"
end
extend_result(module_name) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 73
def extend_result(module_name)
  builder.extend result_var, module_name
end
extend_result_with_declared_module() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 77
def extend_result_with_declared_module
  extend_result declared_module_name if declared_module_name
end
extend_result_with_inline_module() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 81
def extend_result_with_inline_module
  extend_result inline_module_name if inline_module_name
end
init_value(var_symbol) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 125
def init_value(var_symbol)
  case var_symbol
  when :accumulator then '[]'
  when :start_index then 'index'
  else nil
  end
end
inline_module_name() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 20
def inline_module_name
  parent_expression && parent_expression.inline_module_name
end
node_class_name() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 12
def node_class_name
  parent_expression && parent_expression.node_class_name || 'SyntaxNode'
end
obtain_new_subexpression_address() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 61
def obtain_new_subexpression_address
  @subexpression_address = builder.next_address
end
on_one_line(expression) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 141
def on_one_line(expression)
  expression.text_value.tr("\n", ' ')
end
optional_arg(arg) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 28
def optional_arg(arg)
  if arg
    ", #{arg}"
  else
    ''
  end
end
reset_index() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 85
def reset_index
  builder.assign '@index', start_index_var
end
result_var() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 41
def result_var
  var(:result)
end
start_index_var() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 49
def start_index_var
  var(:start_index)
end
subexpression_result_var() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 53
def subexpression_result_var
  "r#{subexpression_address}"
end
subexpression_success?() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 57
def subexpression_success?
  subexpression_result_var
end
use_vars(*var_symbols) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 36
def use_vars(*var_symbols)
  @var_symbols = var_symbols
  builder << var_initialization
end
var(var_symbol) click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 116
def var(var_symbol)
  case var_symbol
  when :result then "r#{address}"
  when :accumulator then "s#{address}"
  when :start_index then "i#{address}"
  else raise "Unknown var symbol #{var_symbol}."
  end
end
var_initialization() click to toggle source
# File lib/treetop/compiler/node_classes/parsing_expression.rb, line 101
def var_initialization
  left, right = [], []
  var_symbols.each do |symbol|
    if init_value(symbol)
      left << var(symbol)
      right << init_value(symbol)
    end
  end
  if left.empty?
    ""
  else
    left.join(', ') + ' = ' + right.join(', ')
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.