Parent

Files

Parslet::GraphvizVisitor

Attributes

parent[R]

Public Class Methods

new(g) click to toggle source
# File lib/parslet/graphviz.rb, line 16
def initialize g
  @graph = g
  @known_links = Set.new
  @visited = Set.new
end

Public Instance Methods

downwards(child) click to toggle source
# File lib/parslet/graphviz.rb, line 71
def downwards child
  if @parent && !@known_links.include?([@parent, child])
    @graph.add_edges(@parent, child)
    @known_links << [@parent, child]
  end
end
escape(str) click to toggle source
# File lib/parslet/graphviz.rb, line 65
def escape str
  str.gsub('"', "'")
end
node(name, opts={}) click to toggle source
# File lib/parslet/graphviz.rb, line 68
def node name, opts={}
  @graph.add_nodes name.to_s, opts
end
recurse(node, current) click to toggle source
# File lib/parslet/graphviz.rb, line 77
def recurse node, current
  @parent = current
  node.accept(self)
end
visit_alternative(alternatives) click to toggle source
# File lib/parslet/graphviz.rb, line 43
def visit_alternative(alternatives)
  p = parent
  alternatives.each do |atom|
    recurse atom, p
  end
end
visit_entity(name, block) click to toggle source
# File lib/parslet/graphviz.rb, line 27
def visit_entity(name, block)
  s = node(name)

  downwards s

  return if @visited.include?(name)
  @visited << name

  recurse block.call, s
end
visit_lookahead(positive, atom) click to toggle source
# File lib/parslet/graphviz.rb, line 55
def visit_lookahead(positive, atom)
  recurse atom, parent
end
visit_named(name, atom) click to toggle source
# File lib/parslet/graphviz.rb, line 37
def visit_named(name, atom)
  recurse atom, parent
end
visit_parser(root) click to toggle source
# File lib/parslet/graphviz.rb, line 24
def visit_parser(root)
  recurse root, node('parser')
end
visit_re(regexp) click to toggle source
# File lib/parslet/graphviz.rb, line 58
def visit_re(regexp)
  # downwards node(regexp.object_id, label: escape("re(#{regexp.inspect})"))
end
visit_repetition(tag, min, max, atom) click to toggle source
# File lib/parslet/graphviz.rb, line 40
def visit_repetition(tag, min, max, atom)
  recurse atom, parent
end
visit_sequence(sequence) click to toggle source
# File lib/parslet/graphviz.rb, line 49
def visit_sequence(sequence)
  p = parent
  sequence.each do |atom|
    recurse atom, p
  end
end
visit_str(str) click to toggle source
# File lib/parslet/graphviz.rb, line 61
def visit_str(str)
  # downwards node(str.object_id, label: escape("#{str.inspect}"))
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.