#pragma once #ifndef FLEX_SCANNER # define yyFlexLexer jsonBaseFlexLexer # include #endif #include #include #include #include #include #include namespace json { class jsonParser : public yyFlexLexer { public: using yyFlexLexer::yyFlexLexer; int yylex() override; static void appendEscape(const char *, std::string &); static void appendEscape(unsigned long, std::string &); protected: virtual void beginObject() = 0; virtual void beginArray() = 0; virtual void pushBoolean(bool) = 0; virtual void pushNumber(std::string_view) = 0; virtual void pushNull() = 0; virtual void pushText(std::string &&) = 0; virtual void pushKey(std::string &&) = 0; virtual void endArray() = 0; virtual void endObject() = 0; void LexerError(const char * msg) override; std::string buf; }; }