mips without optimize

This commit is contained in:
colden
2025-12-12 20:14:00 +08:00
parent 84827838e2
commit c94bebf37b
130 changed files with 5462 additions and 4182 deletions

70
midend/visit/VisitorBlock.java Normal file → Executable file
View File

@@ -1,35 +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));
}
}
}
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));
}
}
}