37 lines
997 B
Java
37 lines
997 B
Java
package midend.visit;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import frontend.ast.CompUnit;
|
|
import frontend.ast.decl.Decl;
|
|
import frontend.ast.func.FuncDef;
|
|
import frontend.ast.func.MainFuncDef;
|
|
import midend.symbol.SymbolManager;
|
|
|
|
public class Visitor {
|
|
private CompUnit compUnit;
|
|
|
|
public Visitor(CompUnit compUnit) {
|
|
this.compUnit = compUnit;
|
|
SymbolManager.reset();
|
|
SymbolManager.nextTable();
|
|
}
|
|
|
|
public void visit() {
|
|
ArrayList<Decl> decls = this.compUnit.GetDecls();
|
|
ArrayList<FuncDef> funcDefs = this.compUnit.GetFuncDefs();
|
|
MainFuncDef mainFuncDef = this.compUnit.GetMainFuncDef();
|
|
|
|
for (Decl decl : decls) {
|
|
VisitorDecl.visitDecl(decl);
|
|
}
|
|
|
|
for (FuncDef funcDef : funcDefs) {
|
|
VisitorFuncDef.visitFuncDef(funcDef);
|
|
}
|
|
|
|
VisitorFuncDef.visitMainFuncDef(mainFuncDef);
|
|
}
|
|
//:TODO:符号表的变换,什么时候往前进一个符号表,这需要人工手工来操作
|
|
}
|