- From: Twan van Laarhoven <twanvl@hotmail.com>
- Date: Thu, 23 Jan 2003 17:19:48 +0100
- To: public-qt-comments@w3.org
Hi,
The expression:
if (A) then B instance of element C context type else/D
According to precedence rules, should be interpreted the same as:
if (A) then (B instance of element C context type else/D)
However, this is not a valid expression, since there is no 'else' in if
expression. The first expression should therefor be interpreted as:
if (A) then (B instance of element C context type) else (/D)
Where "type" is treated as a QName. This interpretation is a valid
expression. To Determine which of the two choices must be made information
is needed about whether an additional "else" statement follows the
expression. Determining this requires an indeterminate large lookahead,
since "/D" could be any number of tokens ("/D/E/F/G" etc.)
This problem can also occur with for (and possibly every, some and let)
for $A as element B context type in /C return D
Solutions to this problem could be:
1. Require parenthesis around type expressions
2. Require parenthesis around in, then, as, where, and maybe more
expressions
3. Clearly state that the simpler-to-parse rules must be followed, even if
that leads to syntax errors
Of these solutions I prefer the third, since it does not significantly
change the language, when this problem would arise (which is quite unlikely)
parenthesis could always be added.
Twan van Laarhoven
ps. Sorry for the Hotmail spam:
_________________________________________________________________
Protect your PC - get McAfee.com VirusScan Online
http://clinic.mcafee.com/clinic/ibuy/campaign.asp?cid=3963
Received on Thursday, 23 January 2003 11:20:20 UTC