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