#ifndef AST_PRINTER_H #define AST_PRINTER_H #include "ast.h" #include class ASTPrinter : public ASTVisitor { public: void print(ASTNode& node); void visit(NumberExpr& node) override; void visit(StringExpr& node) override; void visit(VariableExpr& node) override; void visit(AssignExpr& node) override; void visit(CallExpr& node) override; void visit(NewExpr& node) override; void visit(GetPropExpr& node) override; void visit(SetPropExpr& node) override; void visit(BinaryExpr& node) override; void visit(ReturnStmt& node) override; void visit(VarDeclStmt& node) override; void visit(BlockStmt& node) override; void visit(IfStmt& node) override; void visit(WhileStmt& node) override; void visit(ForStmt& node) override; void visit(ExpressionStmt& node) override; void visit(FunctionDef& node) override; void visit(ClassDef& node) override; }; #endif // AST_PRINTER_H