summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIru Cai <mytbk920423@gmail.com>2014-11-22 17:41:27 +0800
committerIru Cai <mytbk920423@gmail.com>2014-11-22 17:41:27 +0800
commit37365fc2749ff24ef5040a8db3462fc2deebd48f (patch)
tree939f8fbe88f19f3849f7f34426849cd011ab80ad
parent257e30fdea1698dbaa61e165c50a965369dbf026 (diff)
downloadminijava-37365fc2749ff24ef5040a8db3462fc2deebd48f.tar.xz
printing
-rw-r--r--src/spiglet/spiglet2kanga/Main.java2
-rw-r--r--src/spiglet/spiglet2kanga/SpgExpr.java20
-rw-r--r--src/spiglet/spiglet2kanga/SpgGoal.java6
-rw-r--r--src/spiglet/spiglet2kanga/SpgProc.java10
-rw-r--r--src/spiglet/spiglet2kanga/SpgSimpExpr.java14
-rw-r--r--src/spiglet/spiglet2kanga/SpgStmt.java25
-rw-r--r--src/spiglet/spiglet2kanga/SpgTemp.java4
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;
+ }
}