class Peggy::AST
The root node of an Abstract Syntax Tree. Every node in the tree maps to a production found in the parse.
Attributes
_options[R]
Public Class Methods
new(source, results, options={})
click to toggle source
Calls superclass method
Peggy::Node::new
# File lib/parse/ast.rb, line 163 def initialize source, results, options={} super nil @results = results @_options = options @ignore = Array(options[:ignore]) # XXX: turn to set self._source = source build_left nil, 0, self end
Public Instance Methods
to_s()
click to toggle source
# File lib/parse/ast.rb, line 172 def to_s _format end
Private Instance Methods
build_children(parent, index)
click to toggle source
# File lib/parse/ast.rb, line 203 def build_children parent, index while index < parent._range.last i2 = build_left parent, index break if i2 <= index index = i2 end end
build_left(parent, index, node=nil)
click to toggle source
# File lib/parse/ast.rb, line 178 def build_left parent, index, node=nil result = parent ? parent._range.last : index row = @results[index] return result unless row order = row[:found_order] return result unless order order.reverse_each do |name| continue if @ignore.include? name to = row[name] if node node._name = name else node = Node.new name end node._range = index...to node._source = _source #puts "Built #{node.to_s}" parent << node if parent build_children parent, to if parent && to > index && to < parent._range.last parent = node node = nil end result end