|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectspiglet.visitor.GJDepthFirst<KangaResult,KangaContext>
spiglet.translate.KangaTranslator
public final class KangaTranslator
Translates a Spiglet AST to a Kanga AST. The grammar for the Kanga language can be found here, and its specification here.
| Constructor Summary | |
|---|---|
KangaTranslator()
Creates a translator visitor. |
|
| Method Summary | |
|---|---|
Goal |
translate(Goal p)
Visits a Spiglet AST, constructing a Kanga AST along the way, and then returns the root of the latter tree. |
KangaResult |
visit(BinOp n,
KangaContext argu)
operator -> Operator() temp -> Temp() simpleExp -> SimpleExp() |
KangaResult |
visit(Call n,
KangaContext argu)
nodeToken -> "CALL" simpleExp -> SimpleExp() nodeToken1 -> "(" nodeListOptional -> ( Temp() )* nodeToken2 -> ")" |
KangaResult |
visit(CJumpStmt n,
KangaContext argu)
nodeToken -> "CJUMP" temp -> Temp() label -> Label() |
KangaResult |
visit(ErrorStmt n,
KangaContext argu)
nodeToken -> "ERROR" |
KangaResult |
visit(Exp n,
KangaContext argu)
nodeChoice -> Call() | HAllocate() | BinOp() | SimpleExp() |
KangaResult |
visit(HAllocate n,
KangaContext argu)
nodeToken -> "HALLOCATE" simpleExp -> SimpleExp() |
KangaResult |
visit(HLoadStmt n,
KangaContext argu)
nodeToken -> "HLOAD" temp -> Temp() temp1 -> Temp() integerLiteral -> IntegerLiteral() |
KangaResult |
visit(HStoreStmt n,
KangaContext argu)
nodeToken -> "HSTORE" temp -> Temp() integerLiteral -> IntegerLiteral() temp1 -> Temp() |
KangaResult |
visit(IntegerLiteral n,
KangaContext argu)
nodeToken -> <INTEGER_LITERAL> |
KangaResult |
visit(JumpStmt n,
KangaContext argu)
nodeToken -> "JUMP" label -> Label() |
KangaResult |
visit(Label n,
KangaContext argu)
nodeToken -> <IDENTIFIER> |
KangaResult |
visit(MoveStmt n,
KangaContext argu)
nodeToken -> "MOVE" temp -> Temp() exp -> Exp() |
KangaResult |
visit(NoOpStmt n,
KangaContext argu)
nodeToken -> "NOOP" |
KangaResult |
visit(PrintStmt n,
KangaContext argu)
nodeToken -> "PRINT" simpleExp -> SimpleExp() |
KangaResult |
visit(Procedure n,
KangaContext argu)
label -> Label() nodeToken -> "[" integerLiteral -> IntegerLiteral() nodeToken1 -> "]" stmtExp -> StmtExp() |
KangaResult |
visit(SimpleExp n,
KangaContext argu)
nodeChoice -> Temp() | IntegerLiteral() | Label() |
KangaResult |
visit(StmtList n,
KangaContext argu)
nodeListOptional -> ( ( Label() )? Stmt() )* |
KangaResult |
visit(Temp n,
KangaContext argu)
nodeToken -> "TEMP" integerLiteral -> IntegerLiteral() |
| Methods inherited from class spiglet.visitor.GJDepthFirst |
|---|
visit, 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 |
|---|
public KangaTranslator()
translate(spiglet.syntaxtree.Goal) to produce
a Kanga AST from a given Spiglet AST.
| Method Detail |
|---|
public Goal translate(Goal p)
s registers as callee-saved and t registers as
caller-saved, the a registers are caller-saved, as well;
the v0 and v1 registers are used as scratch spaces for
the translator, and the v0 register is used to store return
values.
p - the Spiglet AST's root node (Goal)
public KangaResult visit(StmtList n,
KangaContext argu)
GJDepthFirstnodeListOptional -> ( ( Label() )? Stmt() )*
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Procedure n,
KangaContext argu)
GJDepthFirstlabel -> Label() nodeToken -> "[" integerLiteral -> IntegerLiteral() nodeToken1 -> "]" stmtExp -> StmtExp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(NoOpStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "NOOP"
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(ErrorStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "ERROR"
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(JumpStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "JUMP" label -> Label()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(PrintStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "PRINT" simpleExp -> SimpleExp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(MoveStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "MOVE" temp -> Temp() exp -> Exp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(CJumpStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "CJUMP" temp -> Temp() label -> Label()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(HLoadStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "HLOAD" temp -> Temp() temp1 -> Temp() integerLiteral -> IntegerLiteral()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(HStoreStmt n,
KangaContext argu)
GJDepthFirstnodeToken -> "HSTORE" temp -> Temp() integerLiteral -> IntegerLiteral() temp1 -> Temp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Exp n,
KangaContext argu)
GJDepthFirst
nodeChoice -> Call()
| HAllocate()
| BinOp()
| SimpleExp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(HAllocate n,
KangaContext argu)
GJDepthFirstnodeToken -> "HALLOCATE" simpleExp -> SimpleExp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(BinOp n,
KangaContext argu)
GJDepthFirstoperator -> Operator() temp -> Temp() simpleExp -> SimpleExp()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Call n,
KangaContext argu)
GJDepthFirst
nodeToken -> "CALL"
simpleExp -> SimpleExp()
nodeToken1 -> "("
nodeListOptional -> ( Temp() )*
nodeToken2 -> ")"
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(SimpleExp n,
KangaContext argu)
GJDepthFirst
nodeChoice -> Temp()
| IntegerLiteral()
| Label()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(IntegerLiteral n,
KangaContext argu)
GJDepthFirstnodeToken -> <INTEGER_LITERAL>
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Temp n,
KangaContext argu)
GJDepthFirstnodeToken -> "TEMP" integerLiteral -> IntegerLiteral()
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Label n,
KangaContext argu)
GJDepthFirstnodeToken -> <IDENTIFIER>
visit in interface GJVisitor<KangaResult,KangaContext>visit in class GJDepthFirst<KangaResult,KangaContext>
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||