class Rsec::RepeatAtLeastN

repeat at least n.abs times <- [n, inf) <br/>

Public Instance Methods

_parse(ctx) click to toggle source
# File lib/rsec/parsers/repeat.rb, line 68
def _parse ctx
  rp_node = []
  n.times do
    res = base._parse(ctx)
    return INVALID if INVALID[res]
    rp_node.push res
  end
  # note this may be an infinite action
  # returns if the pos didn't change
  loop do
    save = ctx.pos
    res = base._parse ctx
    if (INVALID[res] or ctx.pos == save)
      ctx.pos = save
      break
    end
    rp_node.push res
  end
  rp_node
end