
import ast;

class Visitor
{
    int depth = -1;

    void visit(Module ast)
    {
        assert(0);
    }

    void visit(ImportDeclaration ast)
    {
        assert(0);
    }

    void visit(FuncDeclaration ast)
    {
        assert(0);
    }

    void visit(FuncBodyDeclaration ast)
    {
        assert(0);
    }

    void visit(StaticMemberVarDeclaration ast)
    {
        assert(0);
    }

    void visit(VarDeclaration ast)
    {
        assert(0);
    }

    void visit(MultiVarDeclaration ast)
    {
        assert(0);
    }

    void visit(ConstructDeclaration ast)
    {
        assert(0);
    }

    void visit(VersionDeclaration ast)
    {
        assert(0);
    }

    void visit(TypedefDeclaration ast)
    {
        assert(0);
    }

    void visit(MacroDeclaration ast)
    {
        assert(0);
    }

    void visit(MacroUnDeclaration ast)
    {
        assert(0);
    }

    void visit(StructDeclaration ast)
    {
        assert(0);
    }

    void visit(AnonStructDeclaration ast)
    {
        assert(0);
    }

    void visit(ExternCDeclaration ast)
    {
        assert(0);
    }

    void visit(EnumDeclaration ast)
    {
        assert(0);
    }

    void visit(DummyDeclaration ast)
    {
        assert(0);
    }

    void visit(ErrorDeclaration ast)
    {
        assert(0);
    }

    void visit(ProtDeclaration ast)
    {
        assert(0);
    }

    void visit(LitExpr ast)
    {
        assert(0);
    }

    void visit(IdentExpr ast)
    {
        assert(0);
    }

    void visit(DotIdExpr ast)
    {
        assert(0);
    }

    void visit(CallExpr ast)
    {
        assert(0);
    }

    void visit(CmpExpr ast)
    {
        assert(0);
    }

    void visit(MulExpr ast)
    {
        assert(0);
    }

    void visit(AddExpr ast)
    {
        assert(0);
    }

    void visit(OrOrExpr ast)
    {
        assert(0);
    }

    void visit(AndAndExpr ast)
    {
        assert(0);
    }

    void visit(OrExpr ast)
    {
        assert(0);
    }

    void visit(XorExpr ast)
    {
        assert(0);
    }

    void visit(AndExpr ast)
    {
        assert(0);
    }

    void visit(AssignExpr ast)
    {
        assert(0);
    }

    void visit(DeclarationExpr ast)
    {
        assert(0);
    }

    void visit(PostExpr ast)
    {
        assert(0);
    }

    void visit(PreExpr ast)
    {
        assert(0);
    }

    void visit(PtrExpr ast)
    {
        assert(0);
    }

    void visit(AddrExpr ast)
    {
        assert(0);
    }

    void visit(NegExpr ast)
    {
        assert(0);
    }

    void visit(ComExpr ast)
    {
        assert(0);
    }

    void visit(DeleteExpr ast)
    {
        assert(0);
    }

    void visit(NotExpr ast)
    {
        assert(0);
    }

    void visit(StringofExpr ast)
    {
        assert(0);
    }

    void visit(IndexExpr ast)
    {
        assert(0);
    }

    void visit(CondExpr ast)
    {
        assert(0);
    }

    void visit(CastExpr ast)
    {
        assert(0);
    }

    void visit(NewExpr ast)
    {
        assert(0);
    }

    void visit(OuterScopeExpr ast)
    {
        assert(0);
    }

    void visit(CommaExpr ast)
    {
        assert(0);
    }

    void visit(SizeofExpr ast)
    {
        assert(0);
    }

    void visit(ExprInit ast)
    {
        assert(0);
    }

    void visit(ArrayInit ast)
    {
        assert(0);
    }

    void visit(BasicType ast)
    {
        assert(0);
    }

    void visit(ClassType ast)
    {
        assert(0);
    }

    void visit(EnumType ast)
    {
        assert(0);
    }

    void visit(PointerType ast)
    {
        assert(0);
    }

    void visit(RefType ast)
    {
        assert(0);
    }

    void visit(ArrayType ast)
    {
        assert(0);
    }

    void visit(FunctionType ast)
    {
        assert(0);
    }

    void visit(TemplateType ast)
    {
        assert(0);
    }

    void visit(Param ast)
    {
        assert(0);
    }

    void visit(CommentStatement ast)
    {
        assert(0);
    }

    void visit(CompoundStatement ast)
    {
        assert(0);
    }

    void visit(ReturnStatement ast)
    {
        assert(0);
    }

    void visit(ExpressionStatement ast)
    {
        assert(0);
    }

    void visit(VersionStatement ast)
    {
        assert(0);
    }

    void visit(IfStatement ast)
    {
        assert(0);
    }

    void visit(ForStatement ast)
    {
        assert(0);
    }

    void visit(SwitchStatement ast)
    {
        assert(0);
    }

    void visit(CaseStatement ast)
    {
        assert(0);
    }

    void visit(BreakStatement ast)
    {
        assert(0);
    }

    void visit(ContinueStatement ast)
    {
        assert(0);
    }

    void visit(DefaultStatement ast)
    {
        assert(0);
    }

    void visit(WhileStatement ast)
    {
        assert(0);
    }

    void visit(DoWhileStatement ast)
    {
        assert(0);
    }

    void visit(GotoStatement ast)
    {
        assert(0);
    }

    void visit(LabelStatement ast)
    {
        assert(0);
    }

};
