W3C home > Mailing lists > Public > www-voice@w3.org > April to June 2010

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

From: RJ Auburn <rj@voxeo.com>
Date: Mon, 26 Apr 2010 05:39:59 +0800
Cc: www-voice <www-voice@w3.org>, Petr Kuba <kuba@optimsys.cz>, W3C Voice Browser Working Group <w3c-voice-wg@w3.org>
Message-Id: <ADCF8025-ADA0-4E22-9D85-EACED48DF70D@voxeo.com>
To: Chris Davis <davisc@iivip.com>
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 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Sunday, 25 April 2010 21:40:44 GMT