- From: Alberto Massari <amassari@progress.com>
- Date: Fri, 10 Sep 2004 15:28:41 +0200
- To: public-qt-comments@w3.org
The lexical rules for <"element" "{"> and <"attribute" "{"> state that a double push should occur (pushState(OPERATOR);pushState(DEFAULT)). But this is wrong, because this XQuery is not considered valid <result> { element {"name"} {"value"} } </result> (the grammar test page says "Encountered "<" at line 5, column 1. Was expecting one of: "<?" ... "<?" ... "<![CDATA[" ... "<![CDATA[" ... <PredefinedEntityRef> ... <CharRef> ... "<" ... "<" ... "</" ... "{" ... "{" ... "{{" ... "}}" ... <ElementContentChar> ... "<!--" ... "<!--" ... ") This is the state machine for this expression Current state Lexeme Next State Stack DEFAULT < START_TAG OPERATOR; START_TAG result START_TAG OPERATOR; START_TAG > ELEMENT_CONTENT OPERATOR; ELEMENT_CONTENT { DEFAULT OPERATOR; ELEMENT_CONTENT; DEFAULT element { DEFAULT OPERATOR; ELEMENT_CONTENT; OPERATOR; DEFAULT; DEFAULT "name" OPERATOR OPERATOR; ELEMENT_CONTENT; OPERATOR; DEFAULT; OPERATOR } DEFAULT OPERATOR; ELEMENT_CONTENT; OPERATOR; DEFAULT { DEFAULT OPERATOR; ELEMENT_CONTENT; OPERATOR; OPERATOR; DEFAULT "value" OPERATOR OPERATOR; ELEMENT_CONTENT; OPERATOR; OPERATOR; OPERATOR } OPERATOR OPERATOR; ELEMENT_CONTENT; OPERATOR; The issue is that when the last } is encountered, we should be brought back to the ELEMENT_CONTENT state, but there is an extra OPERATOR state in the stack that makes the </ being recognized as "less than" instead of "end tag" The proper transition should be "pushState(DEFAULT); DEFAULT" Alberto
Received on Friday, 10 September 2004 15:16:53 UTC