module Raabro::ModuleMethods

def parse(input, opts={})

def parse(input, opts={})
  d = opts[:debug].to_i
  opts[:rewrite] = false if d > 0
  opts[:all] = false if d > 1
  opts[:prune] = false if d > 2
  opts[:prune] = true unless opts.has_key?(:prune)
  root = self.respond_to?(:root) ? :root : @last
  t =
    if opts[:all] == false
      _parse(root, Raabro::Input.new(input, opts))
    else
      all(nil, Raabro::Input.new(input, opts), root)
    end
  return reparse_for_error(input, opts, t) if opts[:error] && t.result != 1
  return nil if opts[:prune] != false && t.result != 1
  t = t.children.first if t.parter == :all
  return rewrite(t) if opts[:rewrite] != false
  t
end