sunlang/src/ast_printer.h

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