- From: chris nuernberger <cnuernber@gmail.com>
- Date: Fri, 8 Feb 2013 11:36:37 -0700
- To: Stefan Radomski <radomski@tk.informatik.tu-darmstadt.de>
- Cc: "www-voice@w3.org (www-voice@w3.org)" <www-voice@w3.org>
- Message-ID: <CAG=GWve7N1tYTS-sjV226P-_4qSbgP0AbGLYvXYkc7SMwnM3dw@mail.gmail.com>
I had the *exact* same issue. I *think* it is in the pseudo-code. I believe the pseudo-code should be ammended to: modified-- procedure addStatesToEnter(state,statesToEnter,statesForDefaultEntry): if isHistoryState(state): if historyValue[state.id]: for s in historyValue[state.id]: addStatesToEnter(s,statesToEnter,statesForDefaultEntry) for anc in getProperAncestors(s,state): statesToEnter.add(anc) else: for t in state.transition: for s in getTargetStates(t.target): addStatesToEnter(s,statesToEnter,statesForDefaultEntry) --begin modifications-- for anc in getProperAncestors(s,state): statesToEnter.add(anc) --end modifications-- else: statesToEnter.add(state) if isCompoundState(state): statesForDefaultEntry.add(state) for s in getTargetStates(state.initial): addStatesToEnter(s,statesToEnter,statesForDefaultEntry) elif isParallelState(state): for s in getChildStates(state): addStatesToEnter(s,statesToEnter,statesForDefaultEntry) Chris On Fri, Feb 8, 2013 at 11:28 AM, Stefan Radomski < radomski@tk.informatik.tu-darmstadt.de> wrote: > Hi there, > > I do have a problem with the following scxml document putting my > interpreter in an illegal configuration: > > <scxml > xmlns="http://www.w3.org/2005/07/scxml" > version="1.0" > profile="ecmascript" > id="root" > initial="a"> > > <state id="a"> > <transition target="h" /> > </state> > > <state id="b" initial="b1"> > <history id="h"> > <transition target="b1.2"/> > </history> > > <state id="b1" initial="b1.1"> > <state id="b1.1"/> > <state id="b1.2"> > <transition event="t2" target="b1.3"/> > </state> > <state id="b1.3"> > <transition event="t3" target="a"/> > </state> > </state> > </state> > </scxml> > > The problem is with entering state "h" from "a" for the first time. With > regard to "procedure enterStates(enabledTransitions)", this means that > tstates > contains only "h" with "a" as the source state and "root" as their > ancestor. The procedure > "addStatesToEnter(s,statesToEnter,statesForDefaultEntry)" will recognize s > as being a history state and call itself with "b1.2", adding "b1.2" into > "statesToEnter". > > When returning into the enterStates procedure again, only tStates will be > iterated to get the set of proper ancestors to enter as well, but tStates > still only contains "h", not "b1.2", meaning "b" will be entered as a > proper ancestor of "h" but "b1" will not as "b1.2" is only contained in > statesToEnter, not in tStates and thus, its proper ancestors are never > added into statesToEnter resulting in a configuration of {"b", "b1.2"}. > > What did I miss here? What part of the pseudo-code is supposed to add "b1" > into statesToEnter with the document above? As having b1.2 and not b1 in > the configuration is supposed to be illegal. > > Best regards > Stefan > -- A foolish consistency is the hobgoblin of little minds - Emerson
Received on Friday, 8 February 2013 18:37:08 UTC