piglet.translate
Class SpigletTranslator

java.lang.Object
  extended by piglet.visitor.GJDepthFirst<SpigletResult,SpigletContext>
      extended by piglet.translate.SpigletTranslator
All Implemented Interfaces:
GJVisitor<SpigletResult,SpigletContext>

public final class SpigletTranslator
extends GJDepthFirst<SpigletResult,SpigletContext>

Translates a Piglet AST to a Spiglet AST. The grammar for the Spiglet language can be found here, and its specification here.

Author:
Santoso Wijaya

Constructor Summary
SpigletTranslator()
          Creates a translator visitor.
 
Method Summary
 Goal translate(Goal p)
          Visits a Piglet AST, constructing a Spiglet AST along the way, and then returns the root of the latter tree.
 SpigletResult visit(BinOp n, SpigletContext argu)
           operator -> Operator() exp -> Exp() exp1 -> Exp()
 SpigletResult visit(Call n, SpigletContext argu)
           nodeToken -> "CALL" exp -> Exp() nodeToken1 -> "(" nodeListOptional -> ( Exp() )* nodeToken2 -> ")"
 SpigletResult visit(CJumpStmt n, SpigletContext argu)
           nodeToken -> "CJUMP" exp -> Exp() label -> Label()
 SpigletResult visit(ErrorStmt n, SpigletContext argu)
           nodeToken -> "ERROR"
 SpigletResult visit(Exp n, SpigletContext argu)
           nodeChoice -> StmtExp() | Call() | HAllocate() | BinOp() | Temp() | IntegerLiteral() | Label()
 SpigletResult visit(HAllocate n, SpigletContext argu)
           nodeToken -> "HALLOCATE" exp -> Exp()
 SpigletResult visit(HLoadStmt n, SpigletContext argu)
           nodeToken -> "HLOAD" temp -> Temp() exp -> Exp() integerLiteral -> IntegerLiteral()
 SpigletResult visit(HStoreStmt n, SpigletContext argu)
           nodeToken -> "HSTORE" exp -> Exp() integerLiteral -> IntegerLiteral() exp1 -> Exp()
 SpigletResult visit(IntegerLiteral n, SpigletContext argu)
           nodeToken -> <INTEGER_LITERAL>
 SpigletResult visit(JumpStmt n, SpigletContext argu)
           nodeToken -> "JUMP" label -> Label()
 SpigletResult visit(Label n, SpigletContext argu)
           nodeToken -> <IDENTIFIER>
 SpigletResult visit(MoveStmt n, SpigletContext argu)
           nodeToken -> "MOVE" temp -> Temp() exp -> Exp()
 SpigletResult visit(NoOpStmt n, SpigletContext argu)
           nodeToken -> "NOOP"
 SpigletResult visit(PrintStmt n, SpigletContext argu)
           nodeToken -> "PRINT" exp -> Exp()
 SpigletResult visit(Procedure n, SpigletContext argu)
           label -> Label() nodeToken -> "[" integerLiteral -> IntegerLiteral() nodeToken1 -> "]" stmtExp -> StmtExp()
 SpigletResult visit(StmtExp n, SpigletContext argu)
           nodeToken -> "BEGIN" stmtList -> StmtList() nodeToken1 -> "RETURN" exp -> Exp() nodeToken2 -> "END"
 SpigletResult visit(StmtList n, SpigletContext argu)
           nodeListOptional -> ( ( Label() )? Stmt() )*
 SpigletResult visit(Temp n, SpigletContext argu)
           nodeToken -> "TEMP" integerLiteral -> IntegerLiteral()
 
Methods inherited from class piglet.visitor.GJDepthFirst
visit, visit, visit, visit, visit, visit, visit, visit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SpigletTranslator

public SpigletTranslator()
Creates a translator visitor. Call translate(piglet.syntaxtree.Goal) to produce a Spiglet AST from a given Piglet AST.

Method Detail

translate

public Goal translate(Goal p)
Visits a Piglet AST, constructing a Spiglet AST along the way, and then returns the root of the latter tree.

Parameters:
p - the Piglet AST's root node (Goal)
Returns:
the root of the translated Spiglet AST (Goal)

visit

public SpigletResult visit(StmtList n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeListOptional -> ( ( Label() )? Stmt() )*
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(Procedure n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 label -> Label()
 nodeToken -> "["
 integerLiteral -> IntegerLiteral()
 nodeToken1 -> "]"
 stmtExp -> StmtExp()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(NoOpStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "NOOP"
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(ErrorStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "ERROR"
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(JumpStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "JUMP"
 label -> Label()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(MoveStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "MOVE"
 temp -> Temp()
 exp -> Exp()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(PrintStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "PRINT"
 exp -> Exp()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(CJumpStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "CJUMP"
 exp -> Exp()
 label -> Label()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(HLoadStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "HLOAD"
 temp -> Temp()
 exp -> Exp()
 integerLiteral -> IntegerLiteral()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(HStoreStmt n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "HSTORE"
 exp -> Exp()
 integerLiteral -> IntegerLiteral()
 exp1 -> Exp()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(Exp n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeChoice -> StmtExp()
       | Call()
       | HAllocate()
       | BinOp()
       | Temp()
       | IntegerLiteral()
       | Label()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(Call n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "CALL"
 exp -> Exp()
 nodeToken1 -> "("
 nodeListOptional -> ( Exp() )*
 nodeToken2 -> ")"
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(HAllocate n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "HALLOCATE"
 exp -> Exp()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(BinOp n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 operator -> Operator()
 exp -> Exp()
 exp1 -> Exp()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(StmtExp n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "BEGIN"
 stmtList -> StmtList()
 nodeToken1 -> "RETURN"
 exp -> Exp()
 nodeToken2 -> "END"
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(IntegerLiteral n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> <INTEGER_LITERAL>
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(Temp n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> "TEMP"
 integerLiteral -> IntegerLiteral()
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>

visit

public SpigletResult visit(Label n,
                           SpigletContext argu)
Description copied from class: GJDepthFirst
 nodeToken -> <IDENTIFIER>
 

Specified by:
visit in interface GJVisitor<SpigletResult,SpigletContext>
Overrides:
visit in class GJDepthFirst<SpigletResult,SpigletContext>