From a618854413b50f6056e4cf614e8b8c447cdd9611 Mon Sep 17 00:00:00 2001 From: Jordan Woyak Date: Fri, 17 Jan 2025 02:07:23 -0600 Subject: [PATCH] ExpressionParser: Remove RemoveInertTokens. --- .../DolphinQt/Config/Mapping/IOWindow.cpp | 1 - .../ControlReference/ExpressionParser.cpp | 21 ++++++++++--------- .../ControlReference/ExpressionParser.h | 1 - 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp b/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp index 0a77ae20f2..c042ee862c 100644 --- a/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp +++ b/Source/Core/DolphinQt/Config/Mapping/IOWindow.cpp @@ -191,7 +191,6 @@ void ControlExpressionSyntaxHighlighter::highlightBlock(const QString&) // This doesn't need to be run for every "block", but it works. if (ciface::ExpressionParser::ParseStatus::Successful == tokenize_status) { - ciface::ExpressionParser::RemoveInertTokens(&tokens); const auto parse_status = ciface::ExpressionParser::ParseTokens(tokens); if (ciface::ExpressionParser::ParseStatus::Successful != parse_status.status) diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp b/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp index f3cb5206af..00e3200989 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.cpp @@ -671,6 +671,11 @@ ParseResult ParseResult::MakeErrorResult(Token token, std::string description) return result; } +bool IsInertToken(const Token& tok) +{ + return tok.type == TOK_COMMENT || tok.type == TOK_WHITESPACE; +} + class Parser { public: @@ -700,7 +705,12 @@ private: return tok; } - Token Peek() { return *m_it; } + Token Peek() + { + while (IsInertToken(*m_it)) + ++m_it; + return *m_it; + } bool Expects(TokenType type) { @@ -959,18 +969,9 @@ static ParseResult ParseComplexExpression(const std::string& str) if (tokenize_status != ParseStatus::Successful) return ParseResult::MakeErrorResult(Token(TOK_INVALID), Common::GetStringT("Tokenizing failed.")); - - RemoveInertTokens(&tokens); return ParseTokens(tokens); } -void RemoveInertTokens(std::vector* tokens) -{ - std::erase_if(*tokens, [](const Token& tok) { - return tok.type == TOK_COMMENT || tok.type == TOK_WHITESPACE; - }); -} - static std::unique_ptr ParseBarewordExpression(const std::string& str) { ControlQualifier qualifier; diff --git a/Source/Core/InputCommon/ControlReference/ExpressionParser.h b/Source/Core/InputCommon/ControlReference/ExpressionParser.h index bc39762127..3cda231ae2 100644 --- a/Source/Core/InputCommon/ControlReference/ExpressionParser.h +++ b/Source/Core/InputCommon/ControlReference/ExpressionParser.h @@ -195,6 +195,5 @@ private: ParseResult ParseExpression(const std::string& expr); ParseResult ParseTokens(const std::vector& tokens); -void RemoveInertTokens(std::vector* tokens); } // namespace ciface::ExpressionParser