module Raabro::ModuleMethods

def seq(name, input, *parsers)

def seq(name, input, *parsers)
  r = ::Raabro::Tree.new(name, :seq, input)
  start = input.offset
  c = nil
  loop do
    pa = parsers.shift
    break unless pa
    if parsers.first == '!'
      parsers.shift
      c = nott(nil, input, pa)
      r.children << c
    elsif q = _quantify(parsers.first)
      parsers.shift
      c = rep(nil, input, pa, *q)
      r.children.concat(c.children)
    else
      c = _parse(pa, input)
      r.children << c
    end
    break if c.result != 1
  end
  if c && c.result == 1
    r.result = 1
    r.length = input.offset - start
  else
    input.offset = start
  end
  r
end