2
0
mirror of https://github.com/Laupetin/OpenAssetTools.git synced 2025-09-05 08:17:25 +00:00

Matcher and sequence testing stuffs

This commit is contained in:
Jan
2021-02-13 14:54:34 +01:00
parent 0f70f9586c
commit 37232e3176
36 changed files with 1070 additions and 62 deletions

View File

@@ -3,7 +3,7 @@
#include <unordered_map>
#include "HeaderParserValue.h"
#include "Parsing/AbstractLexer.h"
#include "Parsing/Impl/AbstractLexer.h"
class HeaderLexer final : public AbstractLexer<HeaderParserValue>
{

View File

@@ -2,7 +2,7 @@
#include "HeaderLexer.h"
#include "HeaderParserState.h"
#include "Parsing/AbstractParser.h"
#include "Parsing/Impl/AbstractParser.h"
#include "Persistence/IDataRepository.h"
class HeaderParser final : public AbstractParser<HeaderParserValue, HeaderParserState>

View File

@@ -5,7 +5,7 @@ HeaderMatcherCharacter::HeaderMatcherCharacter(const char c)
{
}
MatcherResult<HeaderParserValue> HeaderMatcherCharacter::CanMatch(AbstractLexer<HeaderParserValue>* lexer, const unsigned tokenOffset)
MatcherResult<HeaderParserValue> HeaderMatcherCharacter::CanMatch(ILexer<HeaderParserValue>* lexer, const unsigned tokenOffset)
{
const auto& token = lexer->GetToken(tokenOffset);
return token.m_type == HeaderParserValueType::CHARACTER && token.CharacterValue() == m_char

View File

@@ -8,7 +8,7 @@ class HeaderMatcherCharacter final : public AbstractMatcher<HeaderParserValue>
char m_char;
protected:
MatcherResult<HeaderParserValue> CanMatch(AbstractLexer<HeaderParserValue>* lexer, unsigned tokenOffset) override;
MatcherResult<HeaderParserValue> CanMatch(ILexer<HeaderParserValue>* lexer, unsigned tokenOffset) override;
public:
explicit HeaderMatcherCharacter(char c);

View File

@@ -13,6 +13,11 @@ MatcherFactoryWrapper<HeaderParserValue> HeaderMatcherFactory::Type(HeaderParser
return MatcherFactoryWrapper<HeaderParserValue>(std::make_unique<HeaderMatcherValueType>(type));
}
MatcherFactoryWrapper<HeaderParserValue> HeaderMatcherFactory::Identifier() const
{
return MatcherFactoryWrapper<HeaderParserValue>(std::make_unique<HeaderMatcherValueType>(HeaderParserValueType::IDENTIFIER));
}
MatcherFactoryWrapper<HeaderParserValue> HeaderMatcherFactory::Char(char c) const
{
return MatcherFactoryWrapper<HeaderParserValue>(std::make_unique<HeaderMatcherCharacter>(c));

View File

@@ -9,5 +9,6 @@ public:
explicit HeaderMatcherFactory(const IMatcherForLabelSupplier<HeaderParserValue>* labelSupplier);
_NODISCARD MatcherFactoryWrapper<HeaderParserValue> Type(HeaderParserValueType type) const;
_NODISCARD MatcherFactoryWrapper<HeaderParserValue> Identifier() const;
_NODISCARD MatcherFactoryWrapper<HeaderParserValue> Char(char c) const;
};

View File

@@ -5,7 +5,7 @@ HeaderMatcherValueType::HeaderMatcherValueType(HeaderParserValueType type)
{
}
MatcherResult<HeaderParserValue> HeaderMatcherValueType::CanMatch(AbstractLexer<HeaderParserValue>* lexer, const unsigned tokenOffset)
MatcherResult<HeaderParserValue> HeaderMatcherValueType::CanMatch(ILexer<HeaderParserValue>* lexer, const unsigned tokenOffset)
{
return lexer->GetToken(tokenOffset).m_type == m_type
? MatcherResult<HeaderParserValue>::Match(1)

View File

@@ -8,7 +8,7 @@ class HeaderMatcherValueType final : public AbstractMatcher<HeaderParserValue>
HeaderParserValueType m_type;
protected:
MatcherResult<HeaderParserValue> CanMatch(AbstractLexer<HeaderParserValue>* lexer, unsigned tokenOffset) override;
MatcherResult<HeaderParserValue> CanMatch(ILexer<HeaderParserValue>* lexer, unsigned tokenOffset) override;
public:
explicit HeaderMatcherValueType(HeaderParserValueType type);

View File

@@ -13,6 +13,6 @@ SequenceNamespace::SequenceNamespace()
});
}
void SequenceNamespace::ProcessMatch(HeaderParserState* state, const SequenceResult<HeaderParserValue>& result) const
void SequenceNamespace::ProcessMatch(HeaderParserState* state, SequenceResult<HeaderParserValue>& result) const
{
}

View File

@@ -1,15 +1,16 @@
#pragma once
#include "Parsing/Header/Impl/HeaderParser.h"
#include "Parsing/Sequence/AbstractSequence.h"
#include "Parsing/Header/Impl/HeaderParserState.h"
#include "Parsing/Header/Impl/HeaderParserValue.h"
class SequenceNamespace final : public AbstractSequence<HeaderParserValue, HeaderParserState>
class SequenceNamespace final : public HeaderParser::sequence_t
{
static constexpr int CAPTURE_NAME = 0;
protected:
void ProcessMatch(HeaderParserState* state, const SequenceResult<HeaderParserValue>& result) const override;
void ProcessMatch(HeaderParserState* state, SequenceResult<HeaderParserValue>& result) const override;
public:
SequenceNamespace();