#pragma once #include "Parsing/Impl/AbstractParser.h" #include "Parsing/Simple/SimpleLexer.h" #include "Parsing/Simple/SimpleParserValue.h" #include "StructuredDataDef/CommonStructuredDataDef.h" #include "StructuredDataDefParserState.h" #include "Utils/ClassUtils.h" namespace sdd { class StructuredDataDefParser final : public AbstractParser { std::vector> m_all_tests; std::vector m_no_scope_tests; std::vector m_def_tests; std::vector m_enum_tests; std::vector m_struct_tests; void CreateSequenceCollections(); protected: const std::vector& GetTestsForState() override; public: explicit StructuredDataDefParser(SimpleLexer* lexer); _NODISCARD std::vector> GetDefs() const; }; } // namespace sdd