#ifndef DBMS_PARSERS_IPARSERBASE_H #define DBMS_PARSERS_IPARSERBASE_H #include #include #include #include #include namespace DB { /** Базовый класс для большинства парсеров */ class IParserBase : public IParser { public: bool parse(Pos & pos, Pos end, ASTPtr & node, String & expected) { expected = getName(); Pos begin = pos; bool res = parseImpl(pos, end, node, expected); if (res) { String s(begin, pos - begin); //std::cerr << getName() << ": " << s << std::endl; } return res; } protected: virtual bool parseImpl(Pos & pos, Pos end, ASTPtr & node, String & expected) = 0; }; } #endif