- From: <scott_boag@us.ibm.com>
- Date: Mon, 26 Jan 2004 01:47:06 -0500
- To: Michael Dyck <jmdyck@ibiblio.org>
- Cc: public-qt-comments@w3.org
Hi Michael. Your last call comment in [1] has been given the ID qt-2004Jan0243-01. This is the official response from the XQuery and XSLT working groups. Your comments have been classified as flagging errors, and the resolution as follows. > ------------------------------------------------------------------------ > Query: <!---- blah ----> | e > Query: <?PITarget ?> | e > Query: <![CDATA[x]]> | e > > Problem: In each case, after the ">", the lexer is in DEFAULT, which > doesn't recognize "|" (or any other operator). > > Fix: In DEFAULT, for the transitions on "<!----", "<?", and > "<![CDATA[", change "pushState()" to "pushState(OPERATOR)". Note: I > reported this on November 28, 2002 (three versions ago), in http: > //lists.w3.org/Archives/Public/public-qt-comments/2002Nov/0105.html The relevant patterns now "pushState(OPERATOR)" when in non-element content, and "pushState" in the ELEMENT_CONTENT state. I apologize for missing your first comment on this. The samples you gave have been added to the regression tests for the test parser. > Query: <Q> { typeswitch (e) case e return e default return e } > </Q> Problem: After the "}", the lexer is in OPERATOR, which > doesn't recognize "</". Fix: In DEFAULT, the > transition for <"typeswitch" "("> should not involve > "pushState(OPERATOR)". <"typeswitch" "("> no longer pushes a state. The sample you gave has been added to the regression tests for the test parser. > Query: processing-instruction {x} {x} Problem: Accepting the > last "}" causes popState() on an empty stack. Fix: In OPERATOR, > the transition for "{" needs "pushState()". I believe I have now balanced the "{" "}" push/pops. This also required some fixes to a few of the validate long patterns, so that they no longer push. The sample you gave has been added to the regression tests for the test parser. > Query: declare variable $x as processing-instruction()? > external; e Problem: After the ")", the lexer is in OPERATOR, which > doesn't recognize "?". Fix: In ITEMTYPE, the > transition for <"processing-instruction" "("> should change > "pushState(OPERATOR)" to "pushState(OCCURRENCEINDICATOR)". Your suggested fix has been made, and the sample query added to the regression set. > Query: declare variable $x external; e Query: declare > function Q() external; e Problem: These leave DEFAULT on the stack. > It's not clear whether this means that the lexer should > reject them, but even if not, it's still bad form: a lexer > with a maximum stack size would be much more likely to hit > its limit. Fix: In DEFAULT, for the transitions on <"declare" > "variable" "$"> and <"declare" "function">, don't > "pushState(DEFAULT)". The extraneous pushes have been removed. Thank you for raising the comment. I would be grateful if you would confirm that this provides an adequate resolution. -scott [1] http://lists.w3.org/Archives/Public/public-qt-comments/2004Jan/0243.html
Received on Monday, 26 January 2004 01:47:13 UTC