From 748308e11e6791284b302f61e5bc0d99a0957b6a Mon Sep 17 00:00:00 2001 From: Iru Cai Date: Wed, 8 Oct 2014 21:15:43 +0800 Subject: First commit --- src/spiglet/visitor/GJVisitor.java | 211 +++++++++++++++++++++++++++++++++++++ 1 file changed, 211 insertions(+) create mode 100644 src/spiglet/visitor/GJVisitor.java (limited to 'src/spiglet/visitor/GJVisitor.java') diff --git a/src/spiglet/visitor/GJVisitor.java b/src/spiglet/visitor/GJVisitor.java new file mode 100644 index 0000000..f78417b --- /dev/null +++ b/src/spiglet/visitor/GJVisitor.java @@ -0,0 +1,211 @@ +// +// Generated by JTB 1.3.2 +// + +package spiglet.visitor; +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.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; + +/** + * All GJ visitors must implement this interface. + */ + +public interface GJVisitor { + + // + // GJ Auto class visitors + // + + public R visit(NodeList n, A argu); + public R visit(NodeListOptional n, A argu); + public R visit(NodeOptional n, A argu); + public R visit(NodeSequence n, A argu); + public R visit(NodeToken n, A argu); + + // + // User-generated visitor methods below + // + + /** + * f0 -> "MAIN" + * f1 -> StmtList() + * f2 -> "END" + * f3 -> ( Procedure() )* + * f4 -> + */ + public R visit(Goal n, A argu); + + /** + * f0 -> ( ( Label() )? Stmt() )* + */ + public R visit(StmtList n, A argu); + + /** + * f0 -> Label() + * f1 -> "[" + * f2 -> IntegerLiteral() + * f3 -> "]" + * f4 -> StmtExp() + */ + public R visit(Procedure n, A argu); + + /** + * f0 -> NoOpStmt() + * | ErrorStmt() + * | CJumpStmt() + * | JumpStmt() + * | HStoreStmt() + * | HLoadStmt() + * | MoveStmt() + * | PrintStmt() + */ + public R visit(Stmt n, A argu); + + /** + * f0 -> "NOOP" + */ + public R visit(NoOpStmt n, A argu); + + /** + * f0 -> "ERROR" + */ + public R visit(ErrorStmt n, A argu); + + /** + * f0 -> "CJUMP" + * f1 -> Temp() + * f2 -> Label() + */ + public R visit(CJumpStmt n, A argu); + + /** + * f0 -> "JUMP" + * f1 -> Label() + */ + public R visit(JumpStmt n, A argu); + + /** + * f0 -> "HSTORE" + * f1 -> Temp() + * f2 -> IntegerLiteral() + * f3 -> Temp() + */ + public R visit(HStoreStmt n, A argu); + + /** + * f0 -> "HLOAD" + * f1 -> Temp() + * f2 -> Temp() + * f3 -> IntegerLiteral() + */ + public R visit(HLoadStmt n, A argu); + + /** + * f0 -> "MOVE" + * f1 -> Temp() + * f2 -> Exp() + */ + public R visit(MoveStmt n, A argu); + + /** + * f0 -> "PRINT" + * f1 -> SimpleExp() + */ + public R visit(PrintStmt n, A argu); + + /** + * f0 -> Call() + * | HAllocate() + * | BinOp() + * | SimpleExp() + */ + public R visit(Exp n, A argu); + + /** + * f0 -> "BEGIN" + * f1 -> StmtList() + * f2 -> "RETURN" + * f3 -> SimpleExp() + * f4 -> "END" + */ + public R visit(StmtExp n, A argu); + + /** + * f0 -> "CALL" + * f1 -> SimpleExp() + * f2 -> "(" + * f3 -> ( Temp() )* + * f4 -> ")" + */ + public R visit(Call n, A argu); + + /** + * f0 -> "HALLOCATE" + * f1 -> SimpleExp() + */ + public R visit(HAllocate n, A argu); + + /** + * f0 -> Operator() + * f1 -> Temp() + * f2 -> SimpleExp() + */ + public R visit(BinOp n, A argu); + + /** + * f0 -> "LT" + * | "PLUS" + * | "MINUS" + * | "TIMES" + */ + public R visit(Operator n, A argu); + + /** + * f0 -> Temp() + * | IntegerLiteral() + * | Label() + */ + public R visit(SimpleExp n, A argu); + + /** + * f0 -> "TEMP" + * f1 -> IntegerLiteral() + */ + public R visit(Temp n, A argu); + + /** + * f0 -> + */ + public R visit(IntegerLiteral n, A argu); + + /** + * f0 -> + */ + public R visit(Label n, A argu); + +} -- cgit v1.2.3