diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index 2ade2e8d1314205f65f4a907006d546c551e9cec..c277c988ab50d84806ec0a67450a41b9ab0783cb 100644 --- a/CompilerGeneration.jrag +++ b/CompilerGeneration.jrag @@ -91,6 +91,14 @@ aspect AbsGrammarGeneration { // } } + void ClassDeclaration.genAbsGrammar(PrintStream pStream) { + pStream.print(name()); + pStream.print(" : "+getSuperClass().name()); + pStream.print(" ::="); + getProperties().genAbsGrammar(pStream); + pStream.println(";"); + } + void Properties.genAbsGrammar(PrintStream pStream) { for (int i=0; i<getNumProperty(); i++) { pStream.print(" "); diff --git a/GenCompiler.java b/GenCompiler.java index 0a53d87bb23c7620112bb0ed0109a1fa9e003739..589a5d313ff27a29071787e14be99b359a607c96 100644 --- a/GenCompiler.java +++ b/GenCompiler.java @@ -43,6 +43,7 @@ public class GenCompiler extends Parser { } Start ast = parse(owlFile); + ast.setGrammarName(name); File siarasDir = new File(dirName); if (!siarasDir.isDirectory()) { diff --git a/JavaCCChunks.jrag b/JavaCCChunks.jrag index 7e5c25694bd0517f4b50bc32bc2e8bb6258329e6..7a8c942251cd27b43d1e568e1d90cd0a9d1ee218 100644 --- a/JavaCCChunks.jrag +++ b/JavaCCChunks.jrag @@ -31,11 +31,11 @@ aspect JavaCCChunks { pStream.println(" STATIC = false;"); pStream.println("} "); pStream.println(); - pStream.println("PARSER_BEGIN("+name()+"Parser)"); + pStream.println("PARSER_BEGIN("+grammarName()+"Parser)"); pStream.println(" package AST;"); - pStream.println(" public class "+name()+"Parser {"); + pStream.println(" public class "+grammarName()+"Parser {"); pStream.println("}"); - pStream.println("PARSER_END("+name()+"Parser)"); + pStream.println("PARSER_END("+grammarName()+"Parser)"); pStream.println(); pStream.println("//----------------------------------------------//"); pStream.println("// LEXICAL TOKENS //"); diff --git a/Misc.jrag b/Misc.jrag index d4775d6f183005e4177395bda7e252c8ce2923fc..99bb3956079735c884c32ba8d6fad305237a248b 100644 --- a/Misc.jrag +++ b/Misc.jrag @@ -31,4 +31,16 @@ aspect Misc { } return s.toString(); } + + + syn Attribute Element.iri() = null; + eq ComplexElement.iri() { + for (int i=0; i<getNumAttribute(); i++) { + Attribute a = getAttribute(i); + if (a instanceof IRI) { + return a; + } + } + return null; + } } diff --git a/Names.jrag b/Names.jrag index ec7fcc8af7f4f3df5aefa56e621878f607aeea8d..100864c39e72df494169797ff445b598ce2f08aa 100644 --- a/Names.jrag +++ b/Names.jrag @@ -20,7 +20,16 @@ */ aspect Names { - syn String OClass.name() = getId(); - syn String OwlProperty.name() = getId(); - syn String OwlRestriction.name() = getRestrictionClassId(); + syn String Element.name() = ""; + eq OClass.name() = getId(); + eq OwlProperty.name() = getId(); + eq OwlRestriction.name() = getRestrictionClassId(); + eq Declaration.name() = getElement(0).name(); + eq Clazz.name() = iri().name(); + eq NamedIndividual.name() = iri().trim(); + + + static String ASTNode.gName = "owl"; + public void ASTNode.setGrammarName(String s) {gName = s;} + public String ASTNode.grammarName() {return gName;} } diff --git a/Rewrites.jrag b/Rewrites.jrag index c62fc43785cf39842175819cb838c6b645b39179..48169f591f9465ce271c5a895a72473c7f73acc2 100644 --- a/Rewrites.jrag +++ b/Rewrites.jrag @@ -224,6 +224,20 @@ aspect MiscUtilities { } return (ComplexElement) e; } + + syn boolean Declaration.isClassDecl() = getElement(0).isClass(); + eq ClassDeclaration.isClassDecl() = true; + eq IndividualDeclaration.isClassDecl() = false; + syn boolean Declaration.isIndividualDecl() = getElement(0).isIndividual(); + eq IndividualDeclaration.isIndividualDecl() = true; + eq ClassDeclaration.isIndividualDecl() = false; + + syn boolean Element.isClass() = false; + eq Clazz.isClass() = true; + + syn boolean Element.isIndividual() = false; + eq NamedIndividual.isIndividual() = true; + } aspect RewriteClasses {