Re: April CCXML: test case conflicts with ECMA rules - ISSUE-677

Chris and Petr:

This is tracked as ISSUE-677. 

It is the intent that each of the executable content items (var, assign, script and so on) should be executed and fed to the ecmascript interpreter one at a time, Thus we believe Petr's understanding of the specification is correct. 

Chris: Does this resolve the question for you? 

Best regards,

	RJ



---
RJ Auburn
CTO, Voxeo Corporation
Chair, Editor and Chair, CCXML, VBWG, W3C

Come join us at our Voxeo Customer Summit, June 21st – June 23rd at the Hard Rock Hotel, register today for your All Access Pass:  
http://www.voxeo.com/summits/customer



On Apr 24, 2010, at 4:24 AM, Chris Davis wrote:

> 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 Sunday, 25 April 2010 21:40:38 UTC