2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-07-05 18:51:55 +00:00

Add ZoneDefinition Lexer

This commit is contained in:
Jan
2021-03-10 14:58:02 +01:00
parent c47ea48b6b
commit 8798779b39
21 changed files with 232 additions and 14 deletions

View File

@ -0,0 +1,14 @@
#include "SequenceZoneDefinitionConsumeEmptyLines.h"
#include "Parsing/Simple/Matcher/SimpleMatcherFactory.h"
SequenceZoneDefinitionConsumeEmptyLines::SequenceZoneDefinitionConsumeEmptyLines()
{
const SimpleMatcherFactory create(this);
AddMatchers(create.Loop(create.Type(SimpleParserValueType::NEW_LINE)));
}
void SequenceZoneDefinitionConsumeEmptyLines::ProcessMatch(ZoneDefinition* state, SequenceResult<SimpleParserValue>& result) const
{
}

View File

@ -0,0 +1,12 @@
#pragma once
#include "Parsing/ZoneDefinition/ZoneDefinitionParser.h"
class SequenceZoneDefinitionConsumeEmptyLines final : public ZoneDefinitionParser::sequence_t
{
protected:
void ProcessMatch(ZoneDefinition* state, SequenceResult<SimpleParserValue>& result) const override;
public:
SequenceZoneDefinitionConsumeEmptyLines();
};

View File

@ -1,16 +1,19 @@
#include "SequenceZoneDefinitionEntry.h"
#include "Parsing/ZoneDefinition/Matcher/ZoneDefinitionCommonMatchers.h"
#include "Parsing/Simple/Matcher/SimpleMatcherFactory.h"
SequenceZoneDefinitionEntry::SequenceZoneDefinitionEntry()
{
const SimpleMatcherFactory create(this);
AddLabeledMatchers(ZoneDefinitionCommonMatchers::AssetName(this), ZoneDefinitionCommonMatchers::LABEL_ASSET_NAME);
AddMatchers({
create.Identifier().Capture(CAPTURE_TYPE_NAME),
create.Char(','),
create.Optional(create.Char(',').Tag(TAG_REFERENCE)),
create.Identifier().Capture(CAPTURE_ASSET_NAME)
create.Label(ZoneDefinitionCommonMatchers::LABEL_ASSET_NAME).Capture(CAPTURE_ASSET_NAME),
create.Type(SimpleParserValueType::NEW_LINE)
});
}

View File

@ -9,8 +9,9 @@ SequenceZoneDefinitionIgnore::SequenceZoneDefinitionIgnore()
AddMatchers({
create.Keyword("ignore"),
create.Char(','),
create.Identifier().Capture(CAPTURE_IGNORE_NAME)
});
create.Identifier().Capture(CAPTURE_IGNORE_NAME),
create.Type(SimpleParserValueType::NEW_LINE)
});
}
void SequenceZoneDefinitionIgnore::ProcessMatch(ZoneDefinition* state, SequenceResult<SimpleParserValue>& result) const

View File

@ -9,7 +9,8 @@ SequenceZoneDefinitionInclude::SequenceZoneDefinitionInclude()
AddMatchers({
create.Keyword("include"),
create.Char(','),
create.Identifier().Capture(CAPTURE_INCLUDE_NAME)
create.Identifier().Capture(CAPTURE_INCLUDE_NAME),
create.Type(SimpleParserValueType::NEW_LINE)
});
}

View File

@ -10,7 +10,8 @@ SequenceZoneDefinitionMetaData::SequenceZoneDefinitionMetaData()
create.Char('>'),
create.Identifier().Capture(CAPTURE_KEY),
create.Char(','),
create.Identifier().Capture(CAPTURE_VALUE)
create.Identifier().Capture(CAPTURE_VALUE),
create.Type(SimpleParserValueType::NEW_LINE)
});
}