diff --git a/examples/actors/MergeActors.java b/examples/actors/MergeActors.java index b37e10ffc53006af0a07b597d692e1fea0aee884..41fb8544f8abed07ccd63e5d7b098044f655b6f3 100644 --- a/examples/actors/MergeActors.java +++ b/examples/actors/MergeActors.java @@ -27,7 +27,7 @@ public class MergeActors extends XdfParser { // } ast.mergeActors(); - ast.prettyPrint("",System.out); +// ast.prettyPrint("",System.out); } } diff --git a/examples/actors/xdf/MergeActors.jrag b/examples/actors/xdf/MergeActors.jrag index 586daa199ac06da4ecea64722dab9a36dd3f1220..6e5fe290690c9909692e36cebe69167d5d65f68c 100644 --- a/examples/actors/xdf/MergeActors.jrag +++ b/examples/actors/xdf/MergeActors.jrag @@ -7,6 +7,9 @@ */ import java.util.HashSet; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.PrintStream; aspect MergeActors { void Element.mergeActors() {} @@ -45,7 +48,10 @@ aspect MergeActors { } } // Now generate files for the newly merged actor instances. - for (Instance i : getInstances()) {} + System.out.println("** Merging finished, now generate files **"); + for (Instance i : getInstances()) { + i.genFile(); + } } // void Connection.mergeActors() { // Instance src = getSource(); @@ -60,6 +66,18 @@ aspect MergeActors { xlimInstance().merge(inst.xlimInstance()); } + void Instance.genFile() { + System.out.println("generating actor: "+name()); + try { + if (!(xlimInstance() instanceof xlimAST.EmptyStart)) { + System.out.println(" Writing"); + xlimInstance().prettyPrint("",new PrintStream(new File(name()+".xlim"))); + } + } catch (FileNotFoundException e) { + System.out.println("Could not print to file: "+name()); + } + } + } aspect Misc { @@ -79,6 +97,16 @@ aspect Misc { return getInstances(new HashSet<Instance>()); } syn HashSet<Instance> Element.getInstances(HashSet<Instance> inst) = inst; + eq XDF.getInstances(HashSet<Instance> inst) { + for (Element e : getElements()) { + inst = e.getInstances(inst); + } + return inst; + } + eq Instance.getInstances(HashSet<Instance> inst) { + inst.add(this); + return inst; + } } aspect Rewrites { diff --git a/examples/actors/xdf/SSR.jrag b/examples/actors/xdf/SSR.jrag index fb583748d43c7f4889cfb946e116bc6d2fd2d262..3407e2671db98d65a89134c896c9213c89d36979 100644 --- a/examples/actors/xdf/SSR.jrag +++ b/examples/actors/xdf/SSR.jrag @@ -30,14 +30,14 @@ aspect SSR { aspect SDF { syn boolean Instance.isSDF() = xlimInstance().isSDF(); - syn xlimAST.Start Instance.xlimInstance() { + syn lazy xlimAST.Start Instance.xlimInstance() { try { System.out.println("Trying to open: "+name()); xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name()+".xlim")); return parser.Start(); } catch (Exception e) { System.out.println( name()+".xlim not found"); -// e.printStackTrace(); + e.printStackTrace(); return new xlimAST.EmptyStart(); } } diff --git a/examples/actors/xlim/GeneratedAspects.jrag b/examples/actors/xlim/GeneratedAspects.jrag index f5a41a0b248eb0827a19f6c1950912f6d0a847ce..b7f5eabf2ab21bebf49f7112c9f7e249939c7bfd 100644 --- a/examples/actors/xlim/GeneratedAspects.jrag +++ b/examples/actors/xlim/GeneratedAspects.jrag @@ -215,7 +215,7 @@ aspect PrettyPrinter { } public void actor_port.prettyPrint(String ind, PrintStream pStream) { - pStream.print(ind+"<actor_port "); + pStream.print(ind+"<actor-port "); for (int i=0; i<getNumAttribute(); i++) { getAttribute(i).prettyPrint(ind,pStream); }