- From: Torbjörn Lager <torbjorn.lager@gmail.com>
- Date: Sun, 6 May 2007 10:46:18 +0200
- To: www-voice@w3.org
I think the draft needs a clearer definition (and not just an algorithm) of "least common ancestor" (LCA), together with a few clear examples of the tricky bordering cases. Here's what has been bugging me for a while. In my own understanding, given <state id="s1"> <state id="s11"> <state id="s12"> </state> the following should hold 1) LCA(s11,s12) = s1 2) LCA(s11,s11) = s1 3) LCA(s1,s11) = s1 However, the algorithm in the draft: state findLeastCommonAncestor(state1, state2) { if (isDescendent(state2, state1)) { return state1; } elsif(isDescendent(state1, state2)) { return state2; } elsif (state1 == state2) { return state1; } else for anc in listAncestors(state1, SCXML) { if (isDescendant(state2, anc)){ return anc;} }//end for //end else } doesn't get 2) right, since findLeastCommonAncestor(s11,s11) = s11, which I believe is wrong. I propose that } elsif (state1 == state2) { return state1; be changed into } elsif (state1 == state2) { return getParent(state1); Best regards, Torbjörn
Received on Sunday, 6 May 2007 08:46:22 UTC