diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index 1485cea1ac700a64c0407d509833ec98ae793d72..67d0c68c4b2f70749336b75841028de3bcb4efb2 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -180,17 +180,21 @@ aspect GenRewrites { // crasch from NullPointerException. Children should be filled // in from rewrites instead Restrictions restr = getRestrictions(); + pStream.println(ind(3)+"List l;"); for (int i=0; i<restr.getNumOwlRestriction(); i++) { OwlRestriction r = restr.getOwlRestriction(i); + pStream.println(ind(3)+"l = new List();"); + pStream.println(ind(3)+"for (int i=0; i<getNumElement(); i++) {"); + pStream.println(ind(4)+"if (getElement(i) instanceof "+r.name()+") {"); + pStream.println(ind(5)+"l.add(getElement(i));"); + pStream.println(ind(4)+"}"); + pStream.println(ind(3)+"}"); if (r.allValuesFrom()) { - pStream.println(ind(3)+"node.set"+r.name()+"List(new List());"); -// pStream.println(ind(3)+"node.set"+r.name().substring(0,1).toLowerCase()+ -// r.name().substring(1)+"List(new List());"); + pStream.println(ind(3)+"node.set"+r.name()+"List(l);"); +// pStream.println(ind(3)+"node.set"+r.name()+"List(new List());"); } else { pStream.println(ind(3)+r.name()+" c"+ix+" = new "+r.name()+"();"); pStream.println(ind(3)+"node.set"+r.name()+"(c"+(ix++)+");"); -// pStream.println(ind(3)+"node.set"+r.name().substring(0,1).toLowerCase()+ -// r.name().substring(1)+"(c"+(ix++)+");"); } } pStream.println(ind(3)+"return node;"); @@ -200,107 +204,6 @@ aspect GenRewrites { } -// JavaCC grammar is not generated, but hand-written as general as is possible - -// aspect JavaCCGen { - -// public void ASTNode.genJavaCC(PrintStream pStream) { -// for (int i=0; i<getNumChild(); i++) { -// getChild(i).genAbsGrammar(pStream); -// } -// } - -// public void Start.genJavaCC(PrintStream pStream) { -// genJavaCCHeader(pStream); -// pStream.println(); -// genTokenDefs(pStream); -// pStream.println(); -// genJavaCCLiterals(pStream); -// pStream.println(); -// genJavaCCIdentifiers(pStream); -// pStream.println(); -// genJavaCCSeparators(pStream); -// pStream.println(); -// genJavaCCOperators(pStream); -// pStream.println(); - -// // OK, so now it's time to start generating some real grammar -// // productions. -// genJavaCCGrammar(pStream); -// } - -// void ASTNode.genTokenDefs(PrintStream pStream) { -// for (int i=0; i<getNumChild(); i++) { -// getChild(i).genTokenDefs(pStream); -// } -// } - -// void Start.genTokenDefs(PrintStream pStream) { -// pStream.println("<DEFAULT, BOUNDS> TOKEN : /* RESERVED WORDS */"); -// pStream.println("{"); -// pStream.println(" <XML \t : \"xml\" >"); -// super.genTokenDefs(pStream); -// pStream.println("}"); -// pStream.println(); -// } - -// void OwlClassDecl.genTokenDefs(PrintStream pStream) { -// pStream.println(" |<"+getId().toUpperCase()+" \t : \""+getId()+"\">"); -// } - -// void ASTNode.genJavaCCGrammar(PrintStream pStream) { -// for (int i=0; i<getNumChild(); i++) { -// getChild(i).genJavaCCGrammar(pStream); -// } -// } - -// void Start.genJavaCCGrammar(PrintStream pStream) { -// pStream.println("Start Start() #Start : {}"); -// pStream.println("{"); -// pStream.println(" (Device())*"); -// pStream.println(" { return jjtThis; }"); -// pStream.println("}"); -// pStream.println(); -// super.genJavaCCGrammar(pStream); -// } - -// void OwlClassDecl.genJavaCCGrammar(PrintStream pStream) { -// pStream.println("void "+getId()+"() : {}"); -// pStream.println("{"); -// if (getId().equals("Device")) { -// pStream.print(" \"<\""); -// // pStream.print("\"<\" ( <DEVICE> \">\""); -// // Restrictions restr = getRestrictions(); -// // for (int i=0; i< getNumRestriction(); i++) { -// // OwlRestriction res = restr.getOwlRestriction(i); -// // pStream.print("("+res.getRestrictionClassId()+")"+ -// // (res.allValuesFrom()?"*":"")+" "); -// // } -// // pStream.println(" #Device("+getNumRestriction()+"))"); -// // // List all subclasses -// // Iterator subIter = getSubClasses().iterator(); -// // while (subIter.hasNext()) { -// // OwlClassDecl subClass = (OwlClassDecl) subIter.next(); -// // pStream.println("| "+subClass.getId()+"()"); -// // } -// } -// pStream.print(" ( <"+getId().toUpperCase()+"> \">\""); -// Restrictions restr = getRestrictions(); -// for (int i=0; i< getNumRestriction(); i++) { -// OwlRestriction res = restr.getOwlRestriction(i); -// pStream.print("("+res.getRestrictionClassId()+"())"+ -// (res.allValuesFrom()?"*":"")+" "); -// } -// pStream.println(" #"+getId()+"("+getNumRestriction()+"))"); -// // List all subclasses -// Iterator subIter = getSubClasses().iterator(); -// while (subIter.hasNext()) { -// OwlClassDecl subClass = (OwlClassDecl) subIter.next(); -// pStream.println(" | "+subClass.getId()+"()"); -// } -// pStream.println("}"); -// } -// } aspect ParserGen { public void Start.genParser(PrintStream pStream) { diff --git a/Types.jrag b/Types.jrag index 7484a6e4162e653fdfe2dc979908cbca3420d7e0..b3158cee82ddd94ecf3ca5e9d6ce485a65335c22 100644 --- a/Types.jrag +++ b/Types.jrag @@ -109,7 +109,9 @@ aspect Restrictions { } void OwlRestriction.collectRestrictions(List l) { - l.add(this); + if (allValuesFrom()) { + l.add(this); + } } syn int OwlClassDecl.getNumRestriction() = getRestrictions().getNumOwlRestriction(); @@ -130,7 +132,9 @@ aspect Restrictions { } void OwlRestriction.collectOwnRestrictions(List l) { - l.add(this); + if (allValuesFrom()) { + l.add(this); + } } syn int OwlClassDecl.getNumOwnRestriction() = diff --git a/owl.ast b/owl.ast index f1a604ad33027a698435f5fa79b84bd4c674dbeb..c228d970b13f9fba1ffd0cd80526473c5db943aa 100644 --- a/owl.ast +++ b/owl.ast @@ -82,6 +82,6 @@ abstract OwlValuesFrom: ComplexElement; Properties ::= Property:Element*; -Restrictions ::= OwlRestriction*; +//Restrictions ::= OwlRestriction*; abstract OwlProperty : ComplexElement;