diff --git a/src/Parser/Parsing/Impl/AbstractLexer.h b/src/Parser/Parsing/Impl/AbstractLexer.h index 37fc15d4..ee4b4617 100644 --- a/src/Parser/Parsing/Impl/AbstractLexer.h +++ b/src/Parser/Parsing/Impl/AbstractLexer.h @@ -303,8 +303,9 @@ public: if (static_cast(m_token_cache.size()) <= amount) { const auto& lastToken = m_token_cache.back(); - while (m_line_cache.front().m_line_number != lastToken.GetPos().m_line - || m_line_cache.front().m_filename.get() != lastToken.GetPos().m_filename.get()) + while (!m_line_cache.empty() + && (m_line_cache.front().m_line_number != lastToken.GetPos().m_line + || m_line_cache.front().m_filename.get() != lastToken.GetPos().m_filename.get())) { m_line_cache.pop_front(); m_line_index--; @@ -336,7 +337,7 @@ public: _NODISCARD ParserLine GetLineForPos(const TokenPos& pos) const override { - for(const auto& line : m_line_cache) + for (const auto& line : m_line_cache) { if (line.m_filename.get() == pos.m_filename.get() && line.m_line_number == pos.m_line) diff --git a/src/ZoneCommon/Parsing/ZoneDefinition/Matcher/ZoneDefinitionCommonMatchers.cpp b/src/ZoneCommon/Parsing/ZoneDefinition/Matcher/ZoneDefinitionCommonMatchers.cpp index 57632889..48b0ec9c 100644 --- a/src/ZoneCommon/Parsing/ZoneDefinition/Matcher/ZoneDefinitionCommonMatchers.cpp +++ b/src/ZoneCommon/Parsing/ZoneDefinition/Matcher/ZoneDefinitionCommonMatchers.cpp @@ -13,7 +13,10 @@ std::unique_ptr ZoneDefinitionCommonMat create.Identifier(), create.AnyCharBesides({',', '<', '>', '"', '\\', '*', '?', '|', ':'}) })), - create.Type(SimpleParserValueType::NEW_LINE).NoConsume() + create.Or({ + create.Type(SimpleParserValueType::NEW_LINE), + create.Type(SimpleParserValueType::END_OF_FILE) + }).NoConsume() }).Transform([](SimpleMatcherFactory::token_list_t& tokens) { std::ostringstream str; diff --git a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp index 7c773e9f..d04fbd78 100644 --- a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp +++ b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionEntry.cpp @@ -13,7 +13,10 @@ SequenceZoneDefinitionEntry::SequenceZoneDefinitionEntry() create.Char(','), create.Optional(create.Char(',').Tag(TAG_REFERENCE)), create.Label(ZoneDefinitionCommonMatchers::LABEL_ASSET_NAME).Capture(CAPTURE_ASSET_NAME), - create.Type(SimpleParserValueType::NEW_LINE) + create.Or({ + create.Type(SimpleParserValueType::NEW_LINE), + create.Type(SimpleParserValueType::END_OF_FILE) + }) }); } diff --git a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionIgnore.cpp b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionIgnore.cpp index b1337279..2d15441e 100644 --- a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionIgnore.cpp +++ b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionIgnore.cpp @@ -10,7 +10,10 @@ SequenceZoneDefinitionIgnore::SequenceZoneDefinitionIgnore() create.Keyword("ignore"), create.Char(','), create.Identifier().Capture(CAPTURE_IGNORE_NAME), - create.Type(SimpleParserValueType::NEW_LINE) + create.Or({ + create.Type(SimpleParserValueType::NEW_LINE), + create.Type(SimpleParserValueType::END_OF_FILE) + }) }); } diff --git a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionInclude.cpp b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionInclude.cpp index c41f99ec..e1fc5868 100644 --- a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionInclude.cpp +++ b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionInclude.cpp @@ -10,7 +10,10 @@ SequenceZoneDefinitionInclude::SequenceZoneDefinitionInclude() create.Keyword("include"), create.Char(','), create.Identifier().Capture(CAPTURE_INCLUDE_NAME), - create.Type(SimpleParserValueType::NEW_LINE) + create.Or({ + create.Type(SimpleParserValueType::NEW_LINE), + create.Type(SimpleParserValueType::END_OF_FILE) + }) }); } diff --git a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionMetaData.cpp b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionMetaData.cpp index 5809d378..291054ae 100644 --- a/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionMetaData.cpp +++ b/src/ZoneCommon/Parsing/ZoneDefinition/Sequence/SequenceZoneDefinitionMetaData.cpp @@ -11,7 +11,10 @@ SequenceZoneDefinitionMetaData::SequenceZoneDefinitionMetaData() create.Identifier().Capture(CAPTURE_KEY), create.Char(','), create.Identifier().Capture(CAPTURE_VALUE), - create.Type(SimpleParserValueType::NEW_LINE) + create.Or({ + create.Type(SimpleParserValueType::NEW_LINE), + create.Type(SimpleParserValueType::END_OF_FILE) + }) }); }