# frozen_string_literal: true module Farseer class Any def initialize(parser) @parser = parser freeze end def parse(input) helper(input) end def helper(input, tokens = []) @parser.parse(input) .bind { |r| helper(r.rest, [*tokens, r.token]) } .map_none { Result.new(tokens.join, input) } end end end