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