From ef61c135497f9a37f8f989d90e69faaff87392fb Mon Sep 17 00:00:00 2001
From: Anders Nilsson <anders.nilsson@cs.lth.se>
Date: Tue, 28 Nov 2006 16:26:09 +0100
Subject: [PATCH] Working on generating rewrites for class specialization.
 Synching

---
 .bzrignore              |  1 +
 CompilerGeneration.jrag | 51 ++++++++++++++++++++++++++++++++++++-----
 GenCompiler.java        |  7 +++++-
 Names.jrag              |  5 ++++
 4 files changed, 57 insertions(+), 7 deletions(-)
 create mode 100644 Names.jrag

diff --git a/.bzrignore b/.bzrignore
index 1524860..5ac1328 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -8,3 +8,4 @@ testontologies/ontologyV06_Jambalaya.properties
 siaras/Parser.java
 siaras/Siaras.ast
 siaras/PrettyPrinter.jrag
+siaras/Rewrites.jrag
diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag
index 5edbf27..941619e 100644
--- a/CompilerGeneration.jrag
+++ b/CompilerGeneration.jrag
@@ -105,25 +105,64 @@ aspect AbsGrammarGeneration {
 }
 
 aspect GenPrettyPrinter {
-	public void ASTNode.genPrettyPrinter(PrintStream pStream) {
+	public void ASTNode.genPrettyPrinter(String ind, PrintStream pStream) {
 		for (int i=0; i<getNumChild(); i++) {
-			getChild(i).genPrettyPrinter(pStream);
+			getChild(i).genPrettyPrinter(ind, pStream);
 		}
 	}
 
-	public void Start.genPrettyPrinter(PrintStream pStream) {
-		pStream.println("");
+	public void Start.genPrettyPrinter(String ind, PrintStream pStream) {
+		pStream.println();
 		pStream.println("import java.io.PrintStream;");
-		pStream.println("");
+		pStream.println();
 		pStream.println("aspect PrettyPrinter {");
 		pStream.println("  public void ASTNode.prettyPrint(String indent, PrintStream pStream) {");
 		pStream.println("    String childIndent = indent + \"  \";");
 		pStream.println("    for (int i=0; i<getNumChild(); i++) {");
 		pStream.println("      getChild(i).prettyPrint(childIndent,pStream);");
 		pStream.println("    }");
-		pStream.println("  }");
+		pStream.println("  }\n");
+		super.genPrettyPrinter(ind,pStream);
+		pStream.println("}\n");
+	}
+
+	public void OwlClassDecl.genPrettyPrinter(String ind, PrintStream pStream) {
+		pStream.print("  public void "+name());
+		pStream.println(".prettyPrint(String indent, PrintStream pStream) {");
+		pStream.print("    System.out.print(indent+\"<"+name());
+		for (int i=0; i<getNumAttribute(); i++) {
+			getAttribute(i).genPrettyPrinter(ind,pStream);
+		}
+		pStream.println(" >\");");
+		for (int i=0; i<getNumElement(); i++) {
+			getElement(i).genPrettyPrinter(ind,pStream);
+		}
+		pStream.println("    System.out.print(indent+\"</"+name()+">\");");
+		pStream.println("}\n");		
+	}
+}
+
+aspect GenRewrites {
+
+    public void ASTNode.genRewrites(PrintStream pStream) {
+		for (int i=0; i<getNumChild(); i++) {
+			getChild(i).genRewrites(pStream);
+		}
+    }
+
+	public void Start.genRewrites(PrintStream pStream) {
+		pStream.println();
+		pStream.println("import java.io.PrintStream;");
+		pStream.println();
+		pStream.println("aspect Rewrites {");
+		super.genRewrites(pStream);
 		pStream.println("}");
 	}
+
+	public void OwlClassDecl.genRewrites(PrintStream pStream) {
+		String ind = "  ";
+		
+	}
 }
 
 // JavaCC grammar is not generated, but hand-written  as general as is possible
diff --git a/GenCompiler.java b/GenCompiler.java
index 44ff49a..2582d7a 100644
--- a/GenCompiler.java
+++ b/GenCompiler.java
@@ -34,10 +34,15 @@ public class GenCompiler extends Parser {
 			pStream = new PrintStream(new File(fileName));
 			ast.genParser(pStream);
 
+			// Generate Rewrites
+			fileName = "siaras/Rewrites.jrag";
+			pStream = new PrintStream(new File(fileName));
+			ast.genRewrites(pStream);
+
 			// Generate PrettyPrinter
 			fileName = "siaras/PrettyPrinter.jrag";
 			pStream = new PrintStream(new File(fileName));
-			ast.genPrettyPrinter(pStream);
+			ast.genPrettyPrinter("",pStream);
 		} catch (java.io.FileNotFoundException e) {
 			System.out.println("Could not create file: "+fileName);
 			e.printStackTrace();
diff --git a/Names.jrag b/Names.jrag
new file mode 100644
index 0000000..a24da6c
--- /dev/null
+++ b/Names.jrag
@@ -0,0 +1,5 @@
+/* -*-Java-*- */
+
+aspect Names {
+	syn String OClass.name() = getId();
+}
-- 
GitLab