// // Generated by JTB 1.3.2 // package spiglet.visitor; import java.util.Enumeration; import spiglet.syntaxtree.BinOp; import spiglet.syntaxtree.CJumpStmt; import spiglet.syntaxtree.Call; import spiglet.syntaxtree.ErrorStmt; import spiglet.syntaxtree.Exp; import spiglet.syntaxtree.Goal; import spiglet.syntaxtree.HAllocate; import spiglet.syntaxtree.HLoadStmt; import spiglet.syntaxtree.HStoreStmt; import spiglet.syntaxtree.IntegerLiteral; import spiglet.syntaxtree.JumpStmt; import spiglet.syntaxtree.Label; import spiglet.syntaxtree.MoveStmt; import spiglet.syntaxtree.NoOpStmt; import spiglet.syntaxtree.Node; import spiglet.syntaxtree.NodeList; import spiglet.syntaxtree.NodeListOptional; import spiglet.syntaxtree.NodeOptional; import spiglet.syntaxtree.NodeSequence; import spiglet.syntaxtree.NodeToken; import spiglet.syntaxtree.Operator; import spiglet.syntaxtree.PrintStmt; import spiglet.syntaxtree.Procedure; import spiglet.syntaxtree.SimpleExp; import spiglet.syntaxtree.Stmt; import spiglet.syntaxtree.StmtExp; import spiglet.syntaxtree.StmtList; import spiglet.syntaxtree.Temp; /** * Provides default methods which visit each node in the tree in depth-first * order. Your visitors may extend this class. */ public class GJVoidDepthFirst implements GJVoidVisitor { // // Auto class visitors--probably don't need to be overridden. // public void visit(NodeList n, A argu) { int _count=0; for ( Enumeration e = n.elements(); e.hasMoreElements(); ) { e.nextElement().accept(this,argu); _count++; } } public void visit(NodeListOptional n, A argu) { if ( n.present() ) { int _count=0; for ( Enumeration e = n.elements(); e.hasMoreElements(); ) { e.nextElement().accept(this,argu); _count++; } } } public void visit(NodeOptional n, A argu) { if ( n.present() ) n.node.accept(this,argu); } public void visit(NodeSequence n, A argu) { int _count=0; for ( Enumeration e = n.elements(); e.hasMoreElements(); ) { e.nextElement().accept(this,argu); _count++; } } public void visit(NodeToken n, A argu) {} // // User-generated visitor methods below // /** * f0 -> "MAIN" * f1 -> StmtList() * f2 -> "END" * f3 -> ( Procedure() )* * f4 -> */ public void visit(Goal n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); n.f3.accept(this, argu); n.f4.accept(this, argu); } /** * f0 -> ( ( Label() )? Stmt() )* */ public void visit(StmtList n, A argu) { n.f0.accept(this, argu); } /** * f0 -> Label() * f1 -> "[" * f2 -> IntegerLiteral() * f3 -> "]" * f4 -> StmtExp() */ public void visit(Procedure n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); n.f3.accept(this, argu); n.f4.accept(this, argu); } /** * f0 -> NoOpStmt() * | ErrorStmt() * | CJumpStmt() * | JumpStmt() * | HStoreStmt() * | HLoadStmt() * | MoveStmt() * | PrintStmt() */ public void visit(Stmt n, A argu) { n.f0.accept(this, argu); } /** * f0 -> "NOOP" */ public void visit(NoOpStmt n, A argu) { n.f0.accept(this, argu); } /** * f0 -> "ERROR" */ public void visit(ErrorStmt n, A argu) { n.f0.accept(this, argu); } /** * f0 -> "CJUMP" * f1 -> Temp() * f2 -> Label() */ public void visit(CJumpStmt n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); } /** * f0 -> "JUMP" * f1 -> Label() */ public void visit(JumpStmt n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); } /** * f0 -> "HSTORE" * f1 -> Temp() * f2 -> IntegerLiteral() * f3 -> Temp() */ public void visit(HStoreStmt n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); n.f3.accept(this, argu); } /** * f0 -> "HLOAD" * f1 -> Temp() * f2 -> Temp() * f3 -> IntegerLiteral() */ public void visit(HLoadStmt n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); n.f3.accept(this, argu); } /** * f0 -> "MOVE" * f1 -> Temp() * f2 -> Exp() */ public void visit(MoveStmt n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); } /** * f0 -> "PRINT" * f1 -> SimpleExp() */ public void visit(PrintStmt n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); } /** * f0 -> Call() * | HAllocate() * | BinOp() * | SimpleExp() */ public void visit(Exp n, A argu) { n.f0.accept(this, argu); } /** * f0 -> "BEGIN" * f1 -> StmtList() * f2 -> "RETURN" * f3 -> SimpleExp() * f4 -> "END" */ public void visit(StmtExp n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); n.f3.accept(this, argu); n.f4.accept(this, argu); } /** * f0 -> "CALL" * f1 -> SimpleExp() * f2 -> "(" * f3 -> ( Temp() )* * f4 -> ")" */ public void visit(Call n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); n.f3.accept(this, argu); n.f4.accept(this, argu); } /** * f0 -> "HALLOCATE" * f1 -> SimpleExp() */ public void visit(HAllocate n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); } /** * f0 -> Operator() * f1 -> Temp() * f2 -> SimpleExp() */ public void visit(BinOp n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); n.f2.accept(this, argu); } /** * f0 -> "LT" * | "PLUS" * | "MINUS" * | "TIMES" */ public void visit(Operator n, A argu) { n.f0.accept(this, argu); } /** * f0 -> Temp() * | IntegerLiteral() * | Label() */ public void visit(SimpleExp n, A argu) { n.f0.accept(this, argu); } /** * f0 -> "TEMP" * f1 -> IntegerLiteral() */ public void visit(Temp n, A argu) { n.f0.accept(this, argu); n.f1.accept(this, argu); } /** * f0 -> */ public void visit(IntegerLiteral n, A argu) { n.f0.accept(this, argu); } /** * f0 -> */ public void visit(Label n, A argu) { n.f0.accept(this, argu); } }