#pragma once #include "Parsing/Sequence/SequenceResult.h" #include "Parsing/Simple/Matcher/SimpleMatcherFactory.h" namespace menu { class MenuMatcherFactory : public SimpleMatcherFactory { static constexpr auto TAG_INT = 1420; static constexpr auto TAG_NUMERIC = 1421; static constexpr auto TAG_EXPRESSION = 1422; static constexpr auto CAPTURE_FIRST_TOKEN = 1420; static constexpr auto CAPTURE_INT = 1421; static constexpr auto CAPTURE_NUMERIC = 1422; public: explicit MenuMatcherFactory(const IMatcherForLabelSupplier* labelSupplier); _NODISCARD MatcherFactoryWrapper Text() const; _NODISCARD MatcherFactoryWrapper Numeric() const; _NODISCARD MatcherFactoryWrapper IntExpression() const; _NODISCARD MatcherFactoryWrapper NumericExpression() const; _NODISCARD static int TokenNumericIntValue(const SimpleParserValue& value); _NODISCARD static double TokenNumericFloatingPointValue(const SimpleParserValue& value); _NODISCARD static std::string& TokenTextValue(const SimpleParserValue& value); _NODISCARD static int TokenIntExpressionValue(SequenceResult& result); _NODISCARD static double TokenNumericExpressionValue(SequenceResult& result); }; }