From 07e3cdab08770755ca67f862d370e9a3b7992548 Mon Sep 17 00:00:00 2001 From: Anders Nilsson <anders.nilsson@control.lth.se> Date: Fri, 21 Jan 2011 16:39:29 +0100 Subject: [PATCH] Modifying compiler generation to support new OWL format. --- CompilerGeneration.jrag | 8 ++++++++ GenCompiler.java | 1 + JavaCCChunks.jrag | 6 +++--- Misc.jrag | 12 ++++++++++++ Names.jrag | 15 ++++++++++++--- Rewrites.jrag | 14 ++++++++++++++ 6 files changed, 50 insertions(+), 6 deletions(-) diff --git a/CompilerGeneration.jrag b/CompilerGeneration.jrag index 2ade2e8..c277c98 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 0a53d87..589a5d3 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 7e5c256..7a8c942 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 d4775d6..99bb395 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 ec7fcc8..100864c 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 c62fc43..48169f5 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 { -- GitLab