@@ -40,7 +40,7 @@ namespace cucumber_cpp::library::cucumber_expression
4040 return tokens[position].Type () == type;
4141 }
4242
43- bool LookingAtAny (std::span<const Token> tokens, std::size_t position, std::vector<TokenType> types)
43+ bool LookingAtAny (std::span<const Token> tokens, std::size_t position, const std::vector<TokenType>& types)
4444 {
4545 return std::ranges::any_of (types, [tokens, position](TokenType type)
4646 {
@@ -164,7 +164,7 @@ namespace cucumber_cpp::library::cucumber_expression
164164 if (!LookingAtAny (tokens, previous, { TokenType::startOfLine, TokenType::whiteSpace, TokenType::endParameter }))
165165 return { 0 , std::nullopt };
166166
167- auto [consumed, ast] = ParseTokensUntil (parserState.expression , subParser.subParsers , tokens, parserState.current , { TokenType::whiteSpace, TokenType::endOfLine, TokenType::beginParameter });
167+ auto [consumed, ast] = ParseTokensUntil (parserState.expression , subParser.subParsers , parserState.current , { TokenType::whiteSpace, TokenType::endOfLine, TokenType::beginParameter });
168168 auto subCurrent = parserState.current + consumed;
169169 if (std::ranges::none_of (ast, [](const auto & node)
170170 {
@@ -198,13 +198,13 @@ namespace cucumber_cpp::library::cucumber_expression
198198
199199 ExpressionParser::SubParser ExpressionParser::ParseBetweenGenerator (NodeType type, TokenType beginToken, TokenType endToken)
200200 {
201- auto subParser = SubParser { [this , type, beginToken, endToken](const ParserState& parserState, const SubParser& subParser) -> Result
201+ return { [this , type, beginToken, endToken](const ParserState& parserState, const SubParser& subParser) -> Result
202202 {
203203 if (!LookingAt (parserState.tokens , parserState.current , beginToken))
204204 return { 0 , std::nullopt };
205205
206206 auto subCurrent = parserState.current + 1 ;
207- auto [consumed, ast] = ParseTokensUntil (parserState.expression , subParser.subParsers , parserState. tokens , subCurrent, { endToken, TokenType::endOfLine });
207+ auto [consumed, ast] = ParseTokensUntil (parserState.expression , subParser.subParsers , subCurrent, { endToken, TokenType::endOfLine });
208208 subCurrent += consumed;
209209
210210 // endToken not found
@@ -222,10 +222,9 @@ namespace cucumber_cpp::library::cucumber_expression
222222 ast,
223223 } };
224224 } };
225- return subParser;
226225 }
227226
228- std::tuple<std::size_t , std::vector<Node>> ExpressionParser::ParseTokensUntil (std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::span< const Token> tokens, std:: size_t startAt, std::vector<TokenType> endTokens)
227+ std::tuple<std::size_t , std::vector<Node>> ExpressionParser::ParseTokensUntil (std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::size_t startAt, const std::vector<TokenType>& endTokens) const
229228 {
230229 auto current = startAt;
231230 auto size = tokens.size ();
@@ -236,7 +235,7 @@ namespace cucumber_cpp::library::cucumber_expression
236235 if (LookingAtAny (tokens, current, endTokens))
237236 break ;
238237
239- auto [consumed, node] = ParseToken (expression, parsers, tokens, current);
238+ auto [consumed, node] = ParseToken (expression, parsers, current);
240239 if (consumed == 0 )
241240 throw NoEligibleParsers{ tokens };
242241
@@ -246,7 +245,7 @@ namespace cucumber_cpp::library::cucumber_expression
246245 return { current - startAt, ast };
247246 }
248247
249- ExpressionParser::Result ExpressionParser::ParseToken (std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::span< const Token> tokens, std:: size_t startAt)
248+ ExpressionParser::Result ExpressionParser::ParseToken (std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::size_t startAt) const
250249 {
251250 for (const auto & parser : parsers)
252251 {
0 commit comments