llvmir some opt
This commit is contained in:
35
midend/visit/VisitorBlock.java
Normal file
35
midend/visit/VisitorBlock.java
Normal file
@@ -0,0 +1,35 @@
|
||||
package midend.visit;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import frontend.ast.block.Block;
|
||||
import frontend.ast.block.BlockItem;
|
||||
import frontend.ast.block.Stmt;
|
||||
import frontend.ast.decl.Decl;
|
||||
import midend.symbol.SymbolManager;
|
||||
|
||||
public class VisitorBlock {
|
||||
public static void visitBlock(Block block) {
|
||||
if (!block.isFuncBlock()) {
|
||||
SymbolManager.nextTable();
|
||||
}
|
||||
// System.out.println("(block)now table: " + SymbolManager.getCurrentTableId());
|
||||
// System.out.println("bsequence: " + SymbolManager.getCurrentSequence());//TODO:debug
|
||||
ArrayList<BlockItem> blockItems = block.getBlockItems();
|
||||
for (BlockItem blockItem : blockItems) {
|
||||
visitBlockItem(blockItem);
|
||||
}
|
||||
if (!block.isFuncBlock()) {
|
||||
SymbolManager.nextTable();
|
||||
}
|
||||
// System.out.println("(block)now table: " + SymbolManager.getCurrentTableId());//TODO:debug
|
||||
}
|
||||
|
||||
public static void visitBlockItem(BlockItem blockItem) {
|
||||
if (blockItem.getChild(0) instanceof Decl) {
|
||||
VisitorDecl.visitDecl((Decl) blockItem.getChild(0));
|
||||
} else {
|
||||
VisitorStmt.visitStmt((Stmt) blockItem.getChild(0));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user