//
// 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);
}
}