Skip to content

Commit c0f54ae

Browse files
committed
refactor: update ParseTokensUntil and ParseToken signatures for consistency
1 parent ed62d0e commit c0f54ae

File tree

2 files changed

+9
-10
lines changed

2 files changed

+9
-10
lines changed

cucumber_cpp/library/cucumber_expression/ExpressionParser.cpp

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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
{

cucumber_cpp/library/cucumber_expression/ExpressionParser.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ namespace cucumber_cpp::library::cucumber_expression
4343

4444
SubParser ParseBetweenGenerator(NodeType type, TokenType beginToken, TokenType endToken);
4545

46-
std::tuple<std::size_t, std::vector<Node>> 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);
47-
Result ParseToken(std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::span<const Token> tokens, std::size_t startAt);
46+
std::tuple<std::size_t, std::vector<Node>> ParseTokensUntil(std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::size_t startAt, const std::vector<TokenType>& endTokens) const;
47+
Result ParseToken(std::string_view expression, std::span<const std::reference_wrapper<SubParser>> parsers, std::size_t startAt) const;
4848

4949
Tokens tokens;
5050
};

0 commit comments

Comments
 (0)