#pragma once
#include "statement.h"
namespace lbug {
namespace main {
class ClientContext;
}
namespace parser {
class SingleQuery;
class QueryPart;
class ReadingClause;
class UpdatingClause;
class WithClause;
class ReturnClause;
class StatementVisitor {
public:
StatementVisitor() = default;
virtual ~StatementVisitor() = default;
void visit(const Statement& statement);
private:
virtual void visitQuery(const Statement& statement);
virtual void visitSingleQuery(const SingleQuery* singleQuery);
virtual void visitQueryPart(const QueryPart* queryPart);
virtual void visitReadingClause(const ReadingClause* readingClause);
virtual void visitMatch(const ReadingClause* ) {}
virtual void visitUnwind(const ReadingClause* ) {}
virtual void visitInQueryCall(const ReadingClause* ) {}
virtual void visitLoadFrom(const ReadingClause* ) {}
virtual void visitUpdatingClause(const UpdatingClause* );
virtual void visitSet(const UpdatingClause* ) {}
virtual void visitDelete(const UpdatingClause* ) {}
virtual void visitInsert(const UpdatingClause* ) {}
virtual void visitMerge(const UpdatingClause* ) {}
virtual void visitWithClause(const WithClause* ) {}
virtual void visitReturnClause(const ReturnClause* ) {}
virtual void visitCreateSequence(const Statement& ) {}
virtual void visitDrop(const Statement& ) {}
virtual void visitCreateTable(const Statement& ) {}
virtual void visitCreateType(const Statement& ) {}
virtual void visitAlter(const Statement& ) {}
virtual void visitCopyFrom(const Statement& ) {}
virtual void visitCopyTo(const Statement& ) {}
virtual void visitStandaloneCall(const Statement& ) {}
virtual void visitExplain(const Statement& );
virtual void visitCreateMacro(const Statement& ) {}
virtual void visitTransaction(const Statement& ) {}
virtual void visitExtension(const Statement& ) {}
virtual void visitExportDatabase(const Statement& ) {}
virtual void visitImportDatabase(const Statement& ) {}
virtual void visitAttachDatabase(const Statement& ) {}
virtual void visitDetachDatabase(const Statement& ) {}
virtual void visitUseDatabase(const Statement& ) {}
virtual void visitCreateGraph(const Statement& ) {}
virtual void visitUseGraph(const Statement& ) {}
virtual void visitStandaloneCallFunction(const Statement& ) {}
virtual void visitExtensionClause(const Statement& ) {}
};
} }