32 lines
958 B
C++
32 lines
958 B
C++
#ifndef AST_PRINTER_H
|
|
#define AST_PRINTER_H
|
|
|
|
#include "ast.h"
|
|
#include <iostream>
|
|
|
|
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
|