From c7e9da89f18efb8ad06e94d9ba4a855c15fd509c Mon Sep 17 00:00:00 2001 From: Anders Nilsson <csandersn@bode> Date: Tue, 26 May 2009 08:56:41 +0200 Subject: [PATCH] First demo version for Actors meeting in Lund. --- examples/actors/MergeActors.java | 2 +- examples/actors/xdf/MergeActors.jrag | 30 +++++++++++++++++++++- examples/actors/xdf/SSR.jrag | 4 +-- examples/actors/xlim/GeneratedAspects.jrag | 2 +- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/examples/actors/MergeActors.java b/examples/actors/MergeActors.java index b37e10f..41fb854 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 586daa1..6e5fe29 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 fb58374..3407e26 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 f5a41a0..b7f5eab 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); } -- GitLab