Make ZoneDefinition sequences also accept eof instead of new line

This commit is contained in:
Jan 2021-03-10 15:17:36 +01:00
parent 8798779b39
commit 9b15afa70e
6 changed files with 24 additions and 8 deletions

View File

@ -303,8 +303,9 @@ public:
if (static_cast<int>(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)

View File

@ -13,7 +13,10 @@ std::unique_ptr<ZoneDefinitionCommonMatchers::matcher_t> 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;

View File

@ -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)
})
});
}

View File

@ -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)
})
});
}

View File

@ -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)
})
});
}

View File

@ -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)
})
});
}