Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Anders Nilsson
OwlCompiler
Commits
24d5c10e
Commit
24d5c10e
authored
Nov 12, 2006
by
Anders Nilsson
Browse files
JavaCC generation almost(?) complete
parent
849be243
Changes
3
Hide whitespace changes
Inline
Side-by-side
CompilerGeneration.jrag
View file @
24d5c10e
/* -*-Java-*- */
import java.io.*;
import java.util.*;
aspect AbsGrammarGeneration {
void ASTNode.genAbsGrammar(PrintStream pStream) {
...
...
@@ -138,25 +139,35 @@ aspect JavaCCGen {
pStream.println("void "+getId()+"() : {}");
pStream.println("{");
if (getId().equals("Device")) {
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
pStream.println(")");
} else {
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()+")");
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("}");
}
...
...
Misc.jrag
0 → 100644
View file @
24d5c10e
/* -*-Java-*- */
aspect Misc {
syn Start ASTNode.goStart() = getParent().goStart();
eq Start.goStart() = this;
}
Types.jrag
View file @
24d5c10e
/* -*-Java-*- */
import java.util.ArrayList;
aspect Types {
syn lazy OClass OClass.getSuperClass();
eq OwlClassDecl.getSuperClass() {
...
...
@@ -51,6 +53,25 @@ aspect Types {
// }
// return p;
}
syn lazy ArrayList OClass.getSubClasses();
eq OwlClassUse.getSubClasses() = decl().getSubClasses();
eq OwlClassDecl.getSubClasses() {
return goStart().getSubClasses(this,new ArrayList());
}
syn ArrayList ASTNode.getSubClasses(OwlClassDecl klass, ArrayList l) {
for (int i=0; i<getNumChild(); i++) {
getChild(i).getSubClasses(klass,l);
}
return l;
}
eq OwlClassDecl.getSubClasses(OwlClassDecl klass, ArrayList l) {
if (getSuperClass() == klass) {
l.add(this);
}
return l;
}
}
aspect Restrictions {
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment