|
|||||||||
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)
GJDepthFirst
nodeListOptional -> ( ( Label() )? Stmt() )*
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Procedure n, KangaContext argu)
GJDepthFirst
label -> 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)
GJDepthFirst
nodeToken -> "NOOP"
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(ErrorStmt n, KangaContext argu)
GJDepthFirst
nodeToken -> "ERROR"
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(JumpStmt n, KangaContext argu)
GJDepthFirst
nodeToken -> "JUMP" label -> Label()
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(PrintStmt n, KangaContext argu)
GJDepthFirst
nodeToken -> "PRINT" simpleExp -> SimpleExp()
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(MoveStmt n, KangaContext argu)
GJDepthFirst
nodeToken -> "MOVE" temp -> Temp() exp -> Exp()
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(CJumpStmt n, KangaContext argu)
GJDepthFirst
nodeToken -> "CJUMP" temp -> Temp() label -> Label()
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(HLoadStmt n, KangaContext argu)
GJDepthFirst
nodeToken -> "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)
GJDepthFirst
nodeToken -> "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)
GJDepthFirst
nodeToken -> "HALLOCATE" simpleExp -> SimpleExp()
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(BinOp n, KangaContext argu)
GJDepthFirst
operator -> 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)
GJDepthFirst
nodeToken -> <INTEGER_LITERAL>
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Temp n, KangaContext argu)
GJDepthFirst
nodeToken -> "TEMP" integerLiteral -> IntegerLiteral()
visit
in interface GJVisitor<KangaResult,KangaContext>
visit
in class GJDepthFirst<KangaResult,KangaContext>
public KangaResult visit(Label n, KangaContext argu)
GJDepthFirst
nodeToken -> <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 |