代码拉取完成,页面将自动刷新
同步操作将从 格维开源社区/subc-llvm 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#pragma once
#include "ast.h"
#include "parser.h"
class PrintVisitor : public Visitor, public TypeVisitor {
private:
llvm::raw_ostream *out;
public:
PrintVisitor(std::shared_ptr<Program> program, llvm::raw_ostream *out = &llvm::outs());
llvm::Value * VisitProgram(Program *p) override;
llvm::Value * VisitBlockStmt(BlockStmt *p) override;
llvm::Value * VisitDeclStmt(DeclStmt *p) override;
llvm::Value * VisitIfStmt(IfStmt *p) override;
llvm::Value * VisitForStmt(ForStmt *p) override;
llvm::Value * VisitContinueStmt(ContinueStmt *p) override;
llvm::Value * VisitReturnStmt(ReturnStmt *p) override;
llvm::Value * VisitBreakStmt(BreakStmt *p) override;
llvm::Value * VisitSwitchStmt(SwitchStmt *p) override;
llvm::Value * VisitCaseStmt(CaseStmt *p) override;
llvm::Value * VisitDefaultStmt(DefaultStmt *p) override;
llvm::Value * VisitDoWhileStmt(DoWhileStmt *p) override;
llvm::Value * VisitVariableDecl(VariableDecl *decl) override;
llvm::Value * VisitFuncDecl(FuncDecl *decl) override;
llvm::Value * VisitNumberExpr(NumberExpr *expr) override;
llvm::Value * VisitStringExpr(StringExpr *expr) override;
llvm::Value * VisitBinaryExpr(BinaryExpr *binaryExpr) override;
llvm::Value * VisitUnaryExpr(UnaryExpr *expr) override;
llvm::Value * VisitCastExpr(CastExpr *expr) override;
llvm::Value * VisitSizeOfExpr(SizeOfExpr *expr) override;
llvm::Value * VisitPostIncExpr(PostIncExpr *expr) override;
llvm::Value * VisitPostDecExpr(PostDecExpr *expr) override;
llvm::Value * VisitPostSubscript(PostSubscript *expr) override;
llvm::Value * VisitPostMemberDotExpr(PostMemberDotExpr *expr) override;
llvm::Value * VisitPostMemberArrowExpr(PostMemberArrowExpr *expr) override;
llvm::Value * VisitPostFuncCall(PostFuncCall *expr) override;
llvm::Value * VisitThreeExpr(ThreeExpr *expr) override;
llvm::Value * VisitVariableAccessExpr(VariableAccessExpr *factorExpr) override;
llvm::Type * VisitPrimaryType(CPrimaryType *ty) override;
llvm::Type * VisitPointType(CPointType *ty) override;
llvm::Type * VisitArrayType(CArrayType *ty) override;
llvm::Type * VisitRecordType(CRecordType *ty) override;
llvm::Type * VisitFuncType(CFuncType *ty) override;
};
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。