diff --git a/examples/actors/SSRAnalysis.java b/examples/actors/SSRAnalysis.java index a39078ec5549138fca51ceeb424aa87dcb5b2ceb..021dd6124479c4baf3adea9c56d67e3dfabbd712 100644 --- a/examples/actors/SSRAnalysis.java +++ b/examples/actors/SSRAnalysis.java @@ -8,14 +8,15 @@ import xdfAST.Start; import xdfAST.Instance; -import java.util.LinkedList; +import java.util.HashSet; public class SSRAnalysis extends XdfParser { public static void main(String args[]) { Start ast = parse(args); ast.genSSR(System.out); - LinkedList<Instance> l = ast.genStaticSchedule(new LinkedList<Instance>()); + HashSet<Instance> l = ast.genStaticSchedule(new HashSet<Instance>()); + System.out.println("\n\n"); for (Instance i: l){ do { @@ -24,6 +25,17 @@ public class SSRAnalysis extends XdfParser { } while (i != null); System.out.println(); } + + String s = genScheduleXML(l); + } + + + static String genScheduleXML(HashSet<Instance> set) { + StringBuffer sb = new StringBuffer(); + sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + sb.append("<Schedule>\n"); + + return sb.toString(); } } diff --git a/examples/actors/xdf/SSR.jrag b/examples/actors/xdf/SSR.jrag index 045a82e4670702a14bee5dd8e853a48df56c27a5..5ebd9446ed345b7546432150546362ba27ba32cb 100644 --- a/examples/actors/xdf/SSR.jrag +++ b/examples/actors/xdf/SSR.jrag @@ -8,7 +8,7 @@ import java.io.PrintStream; import java.io.FileReader; -import java.util.LinkedList; +import java.util.HashSet; aspect SSR { @@ -28,14 +28,15 @@ aspect SSR { } aspect SDF { - syn boolean Instance.isSDF() = xlim().isSDF(); - syn xlimAST.Start Instance.xlim() { + syn boolean Instance.isSDF() { try { - xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name())); - return parser.Start(); + System.out.println("Trying to open: "+name()); + xlimAST.XmlParser parser = new xlimAST.XmlParser(new FileReader(name()+".xlim")); + return parser.Start().isSDF(); } catch (Exception e) { - e.printStackTrace(); - return null; + System.out.println( name()+".xlim not found"); +// e.printStackTrace(); + return false; } } } @@ -45,31 +46,35 @@ aspect StaticSchedule { public Instance Instance.prev; - syn LinkedList<Instance> ASTNode.genStaticSchedule(LinkedList<Instance> l) = l; - eq Start.genStaticSchedule(LinkedList<Instance> l) = getSpecification().genStaticSchedule(l); - eq Specification.genStaticSchedule(LinkedList<Instance> l) { + syn HashSet<Instance> ASTNode.genStaticSchedule(HashSet<Instance> l) = l; + eq Start.genStaticSchedule(HashSet<Instance> l) = getSpecification().genStaticSchedule(l); + eq Specification.genStaticSchedule(HashSet<Instance> l) { for (int i=0; i<getNumElement(); i++) { l = getElement(i).genStaticSchedule(l); } return l; } - eq XDF.genStaticSchedule(LinkedList<Instance> l) { + eq XDF.genStaticSchedule(HashSet<Instance> l) { for (int i=0; i<getNumElement(); i++) { l = getElement(i).genStaticSchedule(l); } return l; } - eq Connection.genStaticSchedule(LinkedList<Instance> l) { + eq Connection.genStaticSchedule(HashSet<Instance> l) { Instance src = getSource(); Instance dest = getDest(); - if (src.isSDF() && dest.isSDF()) { + if (dest.isSDF() && src.isSDF()) { src.next = dest; dest.prev = src; + l.remove(dest); } if (src.prev == null) { l.add(src); } -// System.out.println(src.name()); + if (dest.prev == null) { + l.add(dest); + } + System.out.println(src.name()); return l; // Instance dest = getDest(); } @@ -129,9 +134,9 @@ aspect misc { Note Instance.getUIDNote() { for (Element e : getElements()) { if (e instanceof Note) { - System.out.println("Checking "+e.kind()); +// System.out.println("Checking "+e.kind()); if (e.kind().equals("UID")) { - System.out.println(" Yes"); +// System.out.println(" Yes"); return (Note) e; } } @@ -142,10 +147,10 @@ aspect misc { syn String Element.kind() = ""; eq Note.kind() { for (Attribute a : getAttributes()) { - System.out.println(" checking: "+a); +// System.out.println(" checking: "+a); if (a.isKind()) { - System.out.println(" found "+value()); - return value(); +// System.out.println(" found "+fix(a.getAttrValue().getLITERAL())); + return fix(a.getAttrValue().getLITERAL()); } } return "";