diff --git a/WorkArounds.jrag b/WorkArounds.jrag new file mode 100644 index 0000000000000000000000000000000000000000..eddb1a0545ea842279df105b8c40f8077a155a5f --- /dev/null +++ b/WorkArounds.jrag @@ -0,0 +1,15 @@ +/* -*-Java-*- */ + +/* + * Copyright (C) 2007 Anders Nilsson <anders.nilsson@cs.lth.se> + * + * This file is part of XmlSchemaCompiler. + */ + + +aspect Fixes { + int ASTNode.numChildren; + int ASTNode.numChildren() {return jjtGetNumChildren();} + int List.getNumNoTransformChild() {return getNumChildNoTransform();} + int Opt.getNumChildNoTransfrom() {return getNumChildNoTransform();} +} \ No newline at end of file diff --git a/examples/actors/xdf/MergeActors.jrag b/examples/actors/xdf/MergeActors.jrag index 0c9333f591a580f1b73d53d9324961341c96f1c1..4dcf792c6ddea69747ebc7edd8b8245a388dd869 100644 --- a/examples/actors/xdf/MergeActors.jrag +++ b/examples/actors/xdf/MergeActors.jrag @@ -40,6 +40,8 @@ aspect MergeActors { } i.merge(i.next); i.setName(i.name()+"_"+i.next.name()); + i.next.remove_me = true; + i.next.is$Final(false); i.next = i.next.next; } } @@ -73,11 +75,16 @@ aspect Misc { } aspect Rewrites { - boolean Connection.remove_me = false; + boolean ComplexElement.remove_me = false; rewrite Connection { when (remove_me) to ComplexElement { return new ComplexElement(); } } + rewrite Instance + when (remove_me) to ComplexElement { + return new ComplexElement(); + } + } } \ No newline at end of file diff --git a/examples/actors/xlim/Merge.jrag b/examples/actors/xlim/Merge.jrag new file mode 100644 index 0000000000000000000000000000000000000000..2edcdb3e20789a69ea8f78994d6958316dd937d2 --- /dev/null +++ b/examples/actors/xlim/Merge.jrag @@ -0,0 +1,36 @@ +/* -*-Java-*- */ + +/* + * Copyright (C) 2009 Anders Nilsson <anders.nilsson@cs.lth.se> + * + * This file is part of Actors model compiler. + */ + +import java.util.HashSet; + +aspect Merge { + public void design.merge(design dest) { + HashSet<operation> ops = getOperations(new HashSet<operation>()); + for (Element e : getElements()) { + if (e.isAction()) { + for (operation o : ops) { + ((module) e).addElement(o); + } + } + } + } +} + +aspect Operations { + syn HashSet<operation> Element.getOperations(HashSet<operation> ops) = ops; + eq ComplexElement.getOperations(HashSet<operation> ops) { + for (Element e : getElements()) { + ops = e.getOperations(ops); + } + return ops; + } + eq operation.getOperations(HashSet<operation> ops) { + ops.add(this); + return ops; + } +} \ No newline at end of file