skips skipper between tokens
# File lib/rsec/helpers.rb, line 339 def [] idx, &p raise 'index out of range' if idx > rest.size or idx < 0 # optimize parsers, use skip if possible new_first = (0 == idx ? first : Rsec.try_skip_pattern(first)) new_rest = rest().map.with_index do |p, i| # NOTE rest start with 1 (i+1) == idx ? p : Rsec.try_skip_pattern(p) end SeqOne_[new_first, new_rest, skipper, idx].map p end
# File lib/rsec/parsers/seq.rb, line 35 def _parse ctx res = first._parse ctx return INVALID if INVALID[res] ret = [res] rest.each do |e| return INVALID if INVALID[skipper._parse ctx] res = e._parse ctx return INVALID if INVALID[res] ret << res end ret end
# File lib/rsec/helpers.rb, line 354 def inner &p Inner[self].map p end
# File lib/rsec/helpers.rb, line 350 def unbox &p Unbox[self].map p end