diff --git a/examples/actors/XdfParser.java b/examples/actors/XdfParser.java new file mode 100644 index 0000000000000000000000000000000000000000..cbebc0c3a261d24b7af605f62f33946f24e19d47 --- /dev/null +++ b/examples/actors/XdfParser.java @@ -0,0 +1,38 @@ +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.InputStreamReader; +import java.io.Reader; + +import xdfAST.XmlParser; +import xdfAST.ParseException; +import xdfAST.Start; + +public class XdfParser { + + protected static Start parse(String args[]) { + Reader r = getReader(args); + Start ast = null; + try { + XmlParser parser = new XmlParser(r); + + ast = parser.Start(); + } catch (ParseException e) { + System.out.println(e.getMessage()); + } + return ast; + } + + private static Reader getReader(String[] args) { + Reader r = null; + if (args.length != 1) { + r = new InputStreamReader(System.in); + } else { + try { + r = new FileReader(args[0]); + } catch (FileNotFoundException e1) { + System.err.println("Dumper: file " + args[0] + " not found"); + } + } + return r; + } +} diff --git a/examples/actors/XdfPrettyPrint.java b/examples/actors/XdfPrettyPrint.java new file mode 100644 index 0000000000000000000000000000000000000000..585b86df1fa47b0c68df7c30b4b766f77a38ee8b --- /dev/null +++ b/examples/actors/XdfPrettyPrint.java @@ -0,0 +1,10 @@ +import xdfAST.Start; + +public class XdfPrettyPrint extends XdfParser { + public static void main(String args[]) { + Start ast = parse(args); + + // Dump the AST + ast.prettyPrint(" ", System.out); + } +} diff --git a/examples/actors/XlimParser.java b/examples/actors/XlimParser.java new file mode 100644 index 0000000000000000000000000000000000000000..cd5eb3be429ed8ec7c993dae90692603b97548b3 --- /dev/null +++ b/examples/actors/XlimParser.java @@ -0,0 +1,38 @@ +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.InputStreamReader; +import java.io.Reader; + +import xlimAST.XmlParser; +import xlimAST.ParseException; +import xlimAST.Start; + +public class XlimParser { + + protected static Start parse(String args[]) { + Reader r = getReader(args); + Start ast = null; + try { + XmlParser parser = new XmlParser(r); + + ast = parser.Start(); + } catch (ParseException e) { + System.out.println(e.getMessage()); + } + return ast; + } + + private static Reader getReader(String[] args) { + Reader r = null; + if (args.length != 1) { + r = new InputStreamReader(System.in); + } else { + try { + r = new FileReader(args[0]); + } catch (FileNotFoundException e1) { + System.err.println("Dumper: file " + args[0] + " not found"); + } + } + return r; + } +} diff --git a/examples/actors/XlimPrettyPrint.java b/examples/actors/XlimPrettyPrint.java new file mode 100644 index 0000000000000000000000000000000000000000..c5ceb9651b2bb6e3c346e44d9e6d1fa759e313c3 --- /dev/null +++ b/examples/actors/XlimPrettyPrint.java @@ -0,0 +1,10 @@ +import xlimAST.Start; + +public class XlimPrettyPrint extends XlimParser { + public static void main(String args[]) { + Start ast = parse(args); + + // Dump the AST + ast.prettyPrint(" ", System.out); + } +} diff --git a/examples/actors/build.xml b/examples/actors/build.xml new file mode 100644 index 0000000000000000000000000000000000000000..9c63cee01e0b2e1329f829713d33e7b7cc56fe6b --- /dev/null +++ b/examples/actors/build.xml @@ -0,0 +1,52 @@ +<!-- + Targets for working from terminal window: + build (default) - generates java files and compiles them + clean - removes all generated files and class files + Targets for working from Eclipse: + gen - generates java files + genClean - removes all generated files and their class files + --> +<project name="Actors model compiler" default="build" basedir="."> + + <!-- "tools" is the directory where generators and libraries are located. --> + <property name="tools" value="../../tools"/> + + <property name="javacc.home" value="${tools}/javacc-4.0"/> + + <!-- compile sources --> + <target name="build" depends="xdf,xlim"> + <javac debug="true" nowarn="true" srcdir="." includes="**/*.java" excludes="tools/**" classpath=".:${tools}/beaver-rt.jar:${tools}/junit.jar"/> + </target> + + + <target name="xdf"> + <ant antfile="./xlim/build.xml" target="gen" inheritAll="false"/> + </target> + + <target name="xlim"> + <ant antfile="./xdf/build.xml" target="gen" inheritAll="false"/> + </target> + + <!-- remove generated source files and .class files --> + <target name="clean" depends="cleanGen"> + <!-- delete all .class files recursively --> + <delete> + <fileset dir="." includes="**/*.class" excludes="beaver/*.class"/> + </delete> + </target> + +<!-- <target name="jar" depends="build"> --> +<!-- <jar destfile="X3DCompiler.jar" basedir="." includes="**/*.class" excludes="test/**"> --> +<!-- <manifest> --> +<!-- <attribute name="Main-Class" value="GenOntology"/> --> +<!-- </manifest> --> +<!-- </jar> --> +<!-- </target> --> + + <!-- remove generated source files and their .class files --> + <target name="cleanGen"> + <delete dir="xlimAST"/> + <delete dir="xdfAST"/> + </target> +</project> + diff --git a/examples/actors/xdf/SSR.jrag b/examples/actors/xdf/SSR.jrag index e1d452a3cd9efd0596bc284223c6efdc0ec92d57..045a82e4670702a14bee5dd8e853a48df56c27a5 100644 --- a/examples/actors/xdf/SSR.jrag +++ b/examples/actors/xdf/SSR.jrag @@ -7,8 +7,10 @@ */ import java.io.PrintStream; +import java.io.FileReader; import java.util.LinkedList; + aspect SSR { void ASTNode.genSSR(java.io.PrintStream out) { @@ -26,7 +28,16 @@ aspect SSR { } aspect SDF { - syn boolean Instance.isSDF() = true; + syn boolean Instance.isSDF() = xlim().isSDF(); + syn xlimAST.Start Instance.xlim() { + try { + xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name())); + return parser.Start(); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } } aspect StaticSchedule { @@ -105,7 +116,7 @@ aspect misc { } eq Instance.getInstance(String s) { // System.out.println(name()+" == "+s); - if (name().equals(s)) { + if (id().equals(s)) { return this; } else { return super.getInstance(s); @@ -113,9 +124,48 @@ aspect misc { } syn String ComplexElement.name() = ""; - eq Instance.name() = id(); + eq Instance.name() = getUIDNote().value(); + + Note Instance.getUIDNote() { + for (Element e : getElements()) { + if (e instanceof Note) { + System.out.println("Checking "+e.kind()); + if (e.kind().equals("UID")) { + System.out.println(" Yes"); + return (Note) e; + } + } + } + return new Note(); // Probably better than returning null + } + + syn String Element.kind() = ""; + eq Note.kind() { + for (Attribute a : getAttributes()) { + System.out.println(" checking: "+a); + if (a.isKind()) { + System.out.println(" found "+value()); + return value(); + } + } + return ""; + } + + syn boolean Attribute.isKind() = false; + eq kind.isKind() = true; + + syn String Element.value() = ""; + eq Note.value() { + for (Attribute a : getAttributes()) { + if (a instanceof value) { + return fix(a.getAttrValue().getLITERAL()); + } + } + return ""; + } - String Instance.id() { + syn String ComplexElement.id() = ""; + eq Instance.id() { for (int i=0; i<getNumAttribute(); i++) { Attribute a = getAttribute(i); if (a instanceof id) {