- From: Chris Davis <davisc@iivip.com>
- Date: Fri, 23 Apr 2010 15:24:20 -0500
- To: www-voice@w3.org
- CC: Petr Kuba <kuba@optimsys.cz>
Hello again Petr, I assume your interpreter (OptimTalk) is exposing individual ECMA equivalent lines (except <script> blocks) from the CCXML document to its ECMA engine one line at a time and that is how you manage to pass the test case. Your ECMA engine then has not seen the <var> declaration when it begins executing <transition>, allowing you to pass the test case. When you say: "I don't see any statement in the CCXML specification that <var> usage implies declaration of the variable at the begging of <transtion>. " the closest text seems to be here: http://www.w3.org/TR/2010/CR-ccxml-20100401/#Assign where the Recommendation says "Variables with transition scope are declared by <var> and <script> child elements of <transition>. " [ declaration seems to happen separately and prior to execution , like ECMA script itself ] Then it describes what happens after declaration:"The child <var> and <script> elements of <transition> are initialized in document order when the executable content is executed. " When you say the following is illegal according to CCXML: ------------------------ <transition event="ccxml.loaded"> <assign name="x" expr="3"/> <var name="x"/> </transition> ----------------------------- because of CCXML specification, Section 8.2.1.1: "It is illegal to make an assignment to a variable that has not been explicitly declared using <var> or a var statement within a <script>." --------------------------- I must point out that you *did* declare a <var>. It's right there after the <assign>, and it goes right into the <transition> scope during the declaration phase. Our integration(SPOT) sees <assign> and turns that into "variablename semicolon" (with a few exceptions, like object/array references) which will cause an ECMA error in the cases where there *is no <var> found in the scope chain*,which is my interpretation of the CCXML rule. Example: <assign name="x" expr="1"/> is *not* x = 1; // this would declare/assign x if not found but instead x; // will cause ECMA error if ECMA can't find it x=1; Sure, we can get RJ Auburn's input. Thanks for the lively discussion. Regards, Chris Petr Kuba wrote: > Hi Chris, > >> I don't see how any CCXML implementation can be passing this test case. >> Is yours passing? > > Yes, OptimTalk passes this test smoothly. > > > Your explanation below is correct but it is important to note that you > deal with a script. The following script in OptimTalk would behave the > same way as you describe: > > <transition event="ccxml.loaded"> > <var name="test"/> > <script> > [![CDATA[ > test = id; > > var id = 3; > ]]> > </script> > </transition> > > Here the test value would be 'undefined'. > > However, the test case deals with <var> tags. I assume that the <var> > tag is evaluated according to its position in a CCXML document. I > don't see any statement in the CCXML specification that <var> usage > implies declaration of the variable at the begging of <transtion>. > > I agree with you that it should be clarified whether the CCXML > interpreter behavior here should be the same as for ECMA Script. This > is probably issue for RJ Auburn. > > Anyway it is also important to consider consequences. For instance, > according to what you've described, this is correct code in ECMA script: > > x = 3; > var x; > > So if we want to follow the same behavior in CCXML this should be also > correct: > > <transition event="ccxml.loaded"> > <assign name="x" expr="3"/> > <var name="x"/> > </transition> > > which probably breaks the following statement in the CCXML > specification, Section 8.2.1.1: > > "It is illegal to make an assignment to a variable that has not been > explicitly declared using <var> or a var statement within a <script>." > > Regards, > Petr > -- Chris Davis Interact Incorporated R&D 512-502-9969x117
Received on Friday, 23 April 2010 20:24:57 UTC