class Cucumber::CucumberExpressions::CucumberExpressionParser

def parse_between(type, begin_token, end_token, parsers)

def parse_between(type, begin_token, end_token, parsers)
  lambda do |expression, tokens, current|
    return [0, nil] unless looking_at(tokens, current, begin_token)
    sub_current = current + 1
    consumed, ast = parse_tokens_until(expression, parsers, tokens, sub_current, [end_token, TokenType::END_OF_LINE])
    sub_current += consumed
    # endToken not found
    raise MissingEndToken.new(expression, begin_token, end_token, tokens[current]) unless looking_at(tokens, sub_current, end_token)
    # consumes endToken
    start = tokens[current].start
    _end = tokens[sub_current].end
    consumed = sub_current + 1 - current
    ast = [Node.new(type, ast, nil, start, _end)]
    return [consumed, ast]
  end
end