diff options
author | Iru Cai <mytbk920423@gmail.com> | 2014-11-22 17:41:27 +0800 |
---|---|---|
committer | Iru Cai <mytbk920423@gmail.com> | 2014-11-22 17:41:27 +0800 |
commit | 37365fc2749ff24ef5040a8db3462fc2deebd48f (patch) | |
tree | 939f8fbe88f19f3849f7f34426849cd011ab80ad | |
parent | 257e30fdea1698dbaa61e165c50a965369dbf026 (diff) | |
download | minijava-37365fc2749ff24ef5040a8db3462fc2deebd48f.tar.xz |
printing
-rw-r--r-- | src/spiglet/spiglet2kanga/Main.java | 2 | ||||
-rw-r--r-- | src/spiglet/spiglet2kanga/SpgExpr.java | 20 | ||||
-rw-r--r-- | src/spiglet/spiglet2kanga/SpgGoal.java | 6 | ||||
-rw-r--r-- | src/spiglet/spiglet2kanga/SpgProc.java | 10 | ||||
-rw-r--r-- | src/spiglet/spiglet2kanga/SpgSimpExpr.java | 14 | ||||
-rw-r--r-- | src/spiglet/spiglet2kanga/SpgStmt.java | 25 | ||||
-rw-r--r-- | src/spiglet/spiglet2kanga/SpgTemp.java | 4 |
7 files changed, 81 insertions, 0 deletions
diff --git a/src/spiglet/spiglet2kanga/Main.java b/src/spiglet/spiglet2kanga/Main.java index 3778ef3..b1ba60f 100644 --- a/src/spiglet/spiglet2kanga/Main.java +++ b/src/spiglet/spiglet2kanga/Main.java @@ -21,6 +21,8 @@ public class Main { */
SpgGoal goal = new SpgGoal();
root.accept(new GenKangaVisitor(), goal);
+
+ goal.printGoal();
}
catch(TokenMgrError e){
//Handle Lexical Errors
diff --git a/src/spiglet/spiglet2kanga/SpgExpr.java b/src/spiglet/spiglet2kanga/SpgExpr.java index da9fa46..f10c4b7 100644 --- a/src/spiglet/spiglet2kanga/SpgExpr.java +++ b/src/spiglet/spiglet2kanga/SpgExpr.java @@ -24,4 +24,24 @@ public class SpgExpr extends SpgSym { callParams.addElement(t); } + public String toString() { + String str; + switch (type) { + case ALLOC: + return "ALLOC " + se.toString(); + case BinOp: + return op + " " + oprand.toString() + " " + se.toString(); + case CALL: + str = "CALL " + se.toString(); + for (int i=0; i<callParams.size(); i++) { + str += " " + callParams.elementAt(i).toString(); + } + return str; + case Simple: + return ((SpgSimpExpr)this).toString(); + default: + return null; + + } + } } diff --git a/src/spiglet/spiglet2kanga/SpgGoal.java b/src/spiglet/spiglet2kanga/SpgGoal.java index c7dd464..9490743 100644 --- a/src/spiglet/spiglet2kanga/SpgGoal.java +++ b/src/spiglet/spiglet2kanga/SpgGoal.java @@ -12,4 +12,10 @@ public class SpgGoal extends SpgSym { public void addProc(SpgProc p) { procs.addElement(p); } + + public void printGoal() { + for (int i=0; i<procs.size(); i++) { + procs.elementAt(i).printProc(); + } + } } diff --git a/src/spiglet/spiglet2kanga/SpgProc.java b/src/spiglet/spiglet2kanga/SpgProc.java index 5d62dfa..c4d6e5f 100644 --- a/src/spiglet/spiglet2kanga/SpgProc.java +++ b/src/spiglet/spiglet2kanga/SpgProc.java @@ -21,4 +21,14 @@ public class SpgProc extends SpgSym { statements.addElement(s); } + public void printProc() { + System.err.println(name + "[" + argCount + "]"); + for (int i=0; i<statements.size(); i++) { + System.err.println(statements.elementAt(i).toString()); + } + if (retexp!=null) { + System.err.println("RETURN " + retexp.toString()); + } + System.err.println(); + } } diff --git a/src/spiglet/spiglet2kanga/SpgSimpExpr.java b/src/spiglet/spiglet2kanga/SpgSimpExpr.java index 6b1b212..eec575d 100644 --- a/src/spiglet/spiglet2kanga/SpgSimpExpr.java +++ b/src/spiglet/spiglet2kanga/SpgSimpExpr.java @@ -10,4 +10,18 @@ public class SpgSimpExpr extends SpgExpr { super(SpgExpr.ExpType.Simple); type = t; } + + public String toString() { + switch (type) { + case INT: + return String.valueOf(num); + case LB: + return s; + case TEMP: + return ((SpgTemp)this).toString(); + default: + return null; + + } + } } diff --git a/src/spiglet/spiglet2kanga/SpgStmt.java b/src/spiglet/spiglet2kanga/SpgStmt.java index 832c489..d5921b9 100644 --- a/src/spiglet/spiglet2kanga/SpgStmt.java +++ b/src/spiglet/spiglet2kanga/SpgStmt.java @@ -14,4 +14,29 @@ public class SpgStmt extends SpgSym{ public SpgStmt(StmtType t) { type = t; } + + public String toString() { + String str=""; + if (lb!=null) str = lb + " "; + switch (type) { + case CJUMP: + return str + "CJUMP " + tmp1.toString() + " " + jmptarget; + case ERROR: + return str + "ERROR"; + case JUMP: + return str + "JUMP " + jmptarget; + case LOAD: + return str + "LD " + tmp1.toString() + " " + tmp2.toString() + " " + imm; + case MOVE: + return str + "MOVE " + tmp1.toString() + " " + exp.toString(); + case NOOP: + return str + "NOOP"; + case PRINT: + return str + "PRINT " + exp.toString(); + case STORE: + return str + "STORE " + tmp1.toString() + " " + imm + " " + tmp2.toString(); + default: + return null; + } + } } diff --git a/src/spiglet/spiglet2kanga/SpgTemp.java b/src/spiglet/spiglet2kanga/SpgTemp.java index 3703a2e..2636382 100644 --- a/src/spiglet/spiglet2kanga/SpgTemp.java +++ b/src/spiglet/spiglet2kanga/SpgTemp.java @@ -9,4 +9,8 @@ public class SpgTemp extends SpgSimpExpr { public int tempNum() { return num; } + + public String toString() { + return "TEMP " + num; + } } |