[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [henshin-dev] multiRule Interpreter
|
Hi Gregor,
I'm glad that you were able to come up with a prototype so quickly.
Thanks a lot. I cannot judge whether your design decisions and the
implementation details are reasonable and correct. I think the best
person to judge this is Enrico. To me, your design decisions sound good
though.
Just one remark: you wrote "the kernel must not be mapped entirely into
each multiRule" -- I assume that is just a grammar mistake and you
actually meant that the kernel rule is not needed to be mapped entirely
(it can be mapped partially). That is at least what we discussed.
My suggestion for the next steps would be that first Enrico takes a look
at your code and then we implement some tests to check whether
everything works as expected. I am also keen to try out some examples
with nested amalgamation in the state space tools. :)
Cheers and happy holidays,
Christian
On 12/21/2011 03:39 PM, Gregor Bonifer wrote:
Hi,
I checked in a beta version of the interpreter under
branches/multiRuleInterpreter. Consider this a proposal! I made a
change to Match that might be a bit controversial but works just fine.
So, here is the outline of what I have done:
- private Map<Rule, List<Match>> Match.nestedMatches: A match holds a
map that contains a collection of matches for each multiRules. For
Rules without multiRules this simply remains empty.
- EmfEngine:
-- findMatch and findAllMatches work recursive to build a Match-tree
using an altered version of prepareMatchFinder, that allows injecting
usedObjects and prematches.
-- executeModelChanges accumulates the changes from a Match-tree into
a ModelChange-Object that is passed recursively(much easier that
merging two ChangeDescriptors). The traversal yields another
Match-tree representing the comatch.
For this to work, there is one important constraint for the
transformation model: As we discussed earlier, the kernel must not be
mapped entirely into each multiRule. However, if a kernelNode is
mapped inside the kernelRule(i.e. the node is preserved), either both
or none of the kernelNodes must be mapped into a multiRule. In case
both nodes are mapped there also has to be a mapping between the two
inside the multiRule.
Regards,
Gregor
_______________________________________________
henshin-dev mailing list
henshin-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/henshin-dev