From 02b2c93e30ccc0f6efafa1573eab85de08d24be5 Mon Sep 17 00:00:00 2001 From: Jan Date: Mon, 21 Apr 2025 18:12:57 +0100 Subject: [PATCH] WIP --- src/Parser/Parsing/Impl/AbstractLexer.h | 6 +-- .../Parsing/Impl/DefinesStreamProxy.cpp | 51 +++++++++---------- src/Parser/Parsing/Impl/DefinesStreamProxy.h | 19 ++++--- src/Utils/Utils/Arguments/ArgumentParser.cpp | 10 ++-- 4 files changed, 43 insertions(+), 43 deletions(-) diff --git a/src/Parser/Parsing/Impl/AbstractLexer.h b/src/Parser/Parsing/Impl/AbstractLexer.h index 637be807..e92602af 100644 --- a/src/Parser/Parsing/Impl/AbstractLexer.h +++ b/src/Parser/Parsing/Impl/AbstractLexer.h @@ -18,10 +18,10 @@ template class AbstractLexer : public ILexer protected: std::deque m_token_cache; std::deque m_line_cache; - IParserLineStream* const m_stream; + IParserLineStream* m_stream; - unsigned m_line_index; - unsigned m_current_line_offset; + size_t m_line_index; + size_t m_current_line_offset; explicit AbstractLexer(IParserLineStream* stream) : m_stream(stream), diff --git a/src/Parser/Parsing/Impl/DefinesStreamProxy.cpp b/src/Parser/Parsing/Impl/DefinesStreamProxy.cpp index 38e80040..405f9ad7 100644 --- a/src/Parser/Parsing/Impl/DefinesStreamProxy.cpp +++ b/src/Parser/Parsing/Impl/DefinesStreamProxy.cpp @@ -5,7 +5,6 @@ #include "Parsing/Simple/Expression/ISimpleExpression.h" #include "Parsing/Simple/Expression/SimpleExpressionMatchers.h" #include "Parsing/Simple/SimpleExpressionInterpreter.h" -#include "Utils/ClassUtils.h" #include "Utils/StringUtils.h" #include @@ -40,7 +39,7 @@ DefinesStreamProxy::DefineParameterPosition::DefineParameterPosition(const unsig } DefinesStreamProxy::Define::Define() - : m_contains_token_pasting_operators(false){}; + : m_contains_token_pasting_operators(false) {}; DefinesStreamProxy::Define::Define(std::string name, std::string value) : m_name(std::move(name)), @@ -114,7 +113,7 @@ void DefinesStreamProxy::Define::IdentifyParameters(const std::vector= inputSize) - throw new ParsingException(TokenPos(*line.m_filename, line.m_line_number, static_cast(linePos + 1)), - "Token-pasting operator cannot be used on unclosed string"); + throw ParsingException(TokenPos(*line.m_filename, line.m_line_number, static_cast(linePos + 1)), + "Token-pasting operator cannot be used on unclosed string"); offset++; } @@ -743,12 +736,16 @@ namespace unsigned m_end; }; - void EmitPastedTokens( - ParserLine& line, unsigned& linePos, std::ostream& out, const std::string& input, const TokenPasteToken& token0, const TokenPasteToken& token1) + void EmitPastedTokens(const ParserLine& line, + const unsigned& linePos, + std::ostream& out, + const std::string& input, + const TokenPasteToken& token0, + const TokenPasteToken& token1) { if ((token0.m_type == TokenPasteTokenType::STRING) != (token1.m_type == TokenPasteTokenType::STRING)) - throw new ParsingException(TokenPos(*line.m_filename, line.m_line_number, static_cast(linePos + 1)), - "String token can only use token-pasting operator on other string token"); + throw ParsingException(TokenPos(*line.m_filename, line.m_line_number, static_cast(linePos + 1)), + "String token can only use token-pasting operator on other string token"); if (token0.m_type == TokenPasteTokenType::STRING) { out << '"'; @@ -767,7 +764,7 @@ namespace } // namespace void DefinesStreamProxy::ProcessTokenPastingOperators( - ParserLine& line, unsigned& linePos, std::vector& callstack, std::string& input, unsigned& inputPos) + const ParserLine& line, const unsigned& linePos, std::vector& callstack, std::string& input, unsigned& inputPos) { std::ostringstream ss; @@ -789,7 +786,7 @@ void DefinesStreamProxy::ProcessTokenPastingOperators( if (c == '#' && IsTokenPastingOperatorForwardLookup(input, i)) { if (currentToken.m_type == TokenPasteTokenType::NONE) - throw new ParsingException(CreatePos(line, linePos), "Cannot use token-pasting operator without previous token"); + throw ParsingException(CreatePos(line, linePos), "Cannot use token-pasting operator without previous token"); if (previousToken.m_end < currentToken.m_start) ss << std::string(input, previousToken.m_end, currentToken.m_start - previousToken.m_end); @@ -816,12 +813,12 @@ void DefinesStreamProxy::ProcessTokenPastingOperators( ss << std::string(input, previousToken.m_end, inputSize - previousToken.m_end); if (pasteNext) - throw new ParsingException(CreatePos(line, linePos), "Cannot use token-pasting operator without following token"); + throw ParsingException(CreatePos(line, linePos), "Cannot use token-pasting operator without following token"); input = ss.str(); } -void DefinesStreamProxy::InsertMacroParameters(std::ostringstream& out, const DefinesStreamProxy::Define* macro, std::vector& parameterValues) +void DefinesStreamProxy::InsertMacroParameters(std::ostringstream& out, const Define* macro, const std::vector& parameterValues) { if (parameterValues.empty() || macro->m_parameter_positions.empty()) { @@ -829,7 +826,7 @@ void DefinesStreamProxy::InsertMacroParameters(std::ostringstream& out, const De return; } - auto lastPos = 0u; + auto lastPos = 0uz; for (const auto& parameterPosition : macro->m_parameter_positions) { if (lastPos < parameterPosition.m_parameter_position) @@ -857,7 +854,7 @@ void DefinesStreamProxy::ExpandMacro(ParserLine& line, std::ostringstream& out, std::vector& callstack, const DefinesStreamProxy::Define* macro, - std::vector& parameterValues) + const std::vector& parameterValues) { std::ostringstream rawOutput; InsertMacroParameters(rawOutput, macro, parameterValues); @@ -873,7 +870,7 @@ void DefinesStreamProxy::ExpandMacro(ParserLine& line, } void DefinesStreamProxy::ContinueMacroParameters( - const ParserLine& line, unsigned& linePos, MacroParameterState& state, const std::string& input, unsigned& inputPos) + const ParserLine& line, const unsigned& linePos, MacroParameterState& state, const std::string& input, unsigned& inputPos) { const auto inputLength = input.size(); while (state.m_parameter_state != ParameterState::NOT_IN_PARAMETERS && inputPos < inputLength) diff --git a/src/Parser/Parsing/Impl/DefinesStreamProxy.h b/src/Parser/Parsing/Impl/DefinesStreamProxy.h index 28d8564a..d9beffb6 100644 --- a/src/Parser/Parsing/Impl/DefinesStreamProxy.h +++ b/src/Parser/Parsing/Impl/DefinesStreamProxy.h @@ -107,26 +107,29 @@ private: _NODISCARD bool MatchIfdefDirective(const ParserLine& line, size_t directiveStartPosition, size_t directiveEndPosition); _NODISCARD bool MatchElseDirective(const ParserLine& line, size_t directiveStartPosition, size_t directiveEndPosition); _NODISCARD bool MatchEndifDirective(const ParserLine& line, size_t directiveStartPosition, size_t directiveEndPosition); - _NODISCARD bool MatchDirectives(ParserLine& line); + _NODISCARD bool MatchDirectives(const ParserLine& line); - void ExtractParametersFromMacroUsage(const ParserLine& line, unsigned& linePos, MacroParameterState& state, const std::string& input, unsigned& inputPos); - bool FindMacroForIdentifier(const std::string& input, unsigned wordStart, unsigned wordEnd, const Define*& value) const; + static void ExtractParametersFromMacroUsage( + const ParserLine& line, const unsigned& linePos, MacroParameterState& state, const std::string& input, unsigned& inputPos); + bool FindMacroForIdentifier(const std::string& input, unsigned identifierStart, unsigned identifierEnd, const Define*& value) const; static bool MatchDefinedExpression(const ParserLine& line, size_t& pos, std::string& definitionName); void ExpandDefinedExpressions(ParserLine& line) const; - bool FindNextMacro(const std::string& input, unsigned& inputPos, unsigned& defineStart, const DefinesStreamProxy::Define*& define); + bool FindNextMacro(const std::string& input, unsigned& inputPos, unsigned& defineStart, const DefinesStreamProxy::Define*& define) const; - void ProcessTokenPastingOperators(ParserLine& line, unsigned& linePos, std::vector& callstack, std::string& input, unsigned& inputPos); - void InsertMacroParameters(std::ostringstream& out, const DefinesStreamProxy::Define* macro, std::vector& parameterValues); + static void ProcessTokenPastingOperators( + const ParserLine& line, const unsigned& linePos, std::vector& callstack, std::string& input, unsigned& inputPos); + static void InsertMacroParameters(std::ostringstream& out, const DefinesStreamProxy::Define* macro, const std::vector& parameterValues); void ExpandMacro(ParserLine& line, unsigned& linePos, std::ostringstream& out, std::vector& callstack, const DefinesStreamProxy::Define* macro, - std::vector& parameterValues); + const std::vector& parameterValues); - void ContinueMacroParameters(const ParserLine& line, unsigned& linePos, MacroParameterState& state, const std::string& input, unsigned& inputPos); + static void + ContinueMacroParameters(const ParserLine& line, const unsigned& linePos, MacroParameterState& state, const std::string& input, unsigned& inputPos); void ContinueMultiLineMacro(ParserLine& line); void ProcessNestedMacros(ParserLine& line, unsigned& linePos, std::vector& callstack, std::string& input, unsigned& inputPos); diff --git a/src/Utils/Utils/Arguments/ArgumentParser.cpp b/src/Utils/Utils/Arguments/ArgumentParser.cpp index 1f89a5ed..caff4ce1 100644 --- a/src/Utils/Utils/Arguments/ArgumentParser.cpp +++ b/src/Utils/Utils/Arguments/ArgumentParser.cpp @@ -42,7 +42,7 @@ bool ArgumentParser::ParseArguments(std::vector& args) m_path = args[0]; const auto argCount = args.size(); - for (unsigned argIndex = 1u; argIndex < argCount; argIndex++) + for (auto argIndex = 1uz; argIndex < argCount; argIndex++) { auto& arg = args[argIndex]; @@ -85,7 +85,7 @@ bool ArgumentParser::ParseArguments(std::vector& args) return false; } - if (m_matched_options.find(matchedOption) != m_matched_options.end()) + if (m_matched_options.contains(matchedOption)) { if (!matchedOption->m_multi_use) { @@ -106,7 +106,7 @@ bool ArgumentParser::ParseArguments(std::vector& args) } auto& parameters = m_matched_options[matchedOption]; - for (unsigned parameterIndex = 0; parameterIndex < parameterCount; parameterIndex++) + for (auto parameterIndex = 0uz; parameterIndex < parameterCount; parameterIndex++) { std::string& param = args[argIndex + parameterIndex + 1]; @@ -116,14 +116,14 @@ bool ArgumentParser::ParseArguments(std::vector& args) return false; } - parameters.push_back(param); + parameters.emplace_back(param); } argIndex += parameterCount; } else { - m_matched_arguments.push_back(arg); + m_matched_arguments.emplace_back(arg); } }