- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 11 May 2005 07:24:43 +0000
- To: public-qt-comments@w3.org
- Cc:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=1373
Summary: [XQuery] some editorial comments on A.1 EBNF
(productions)
Product: XPath / XQuery / XSLT
Version: Last Call drafts
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: XQuery
AssignedTo: chamberl@almaden.ibm.com
ReportedBy: jmdyck@ibiblio.org
QAContact: public-qt-comments@w3.org
A.1 EBNF
(sectioning)
I think that the EBNF productions and the explanation of the EBNF notation
should each be split into a separate section.
----------------------------------------
preamble
"with the following minor differences."
You've removed the phrase "except that grammar symbols always have initial
capital letters" even though it's still true, still different from the
notation used in the XML spec, and still unexplained.
[Leftover from qt-2004Feb0317-01]
"a grouping of terminals that together may help disambiguate the individual
symbols."
This (along with its repeat in A.2) is another (but I hope the last) misuse
of the word "disambiguate" in its technical sense. Instead, you might say
"... may help a parser differentiate various constructs", or just "... may
help a parser do its job".
(And similarly for the repeat of this sentence in A.2.)
You should make clear that angle-bracket-groups have no definitional
significance. That is, their presence in the EBNF has no effect on the set
of syntactically legal queries defined by the grammar. (Assuming that's
true. If not, then you've got some explaining to do.)
"To help readability, this "< ... >" notation is absent in the EBNF in the main
body of this document. This appendix is the normative version of the EBNF."
You could say the same of comments on grammar productions.
"Comments on grammar productions"
Note that the XML spec's grammar has production comments, so it's not their
*presence* here that's different, but rather their normative power.
"clarification for parsing rules"
Some grammar notes are not mere clarification, they actually affect the set
of legal queries.
Pulling some of this together, how about restructuring the preamble into
something like this:
The following grammar .... differences:
o All named symbols have a name that begins with an uppercase letter
(unlike the XML spec, where some names began with lowercase letters
to draw a distinction ...)
o It adds a notation for referring to productions in external specs.
o (...angle-bracket groups...)
o Production comments are normative.
These features are described in more detail in [the Notation section].
To increase readability, the EBNF in the main body of this document omits
some of these notational features. This appendix is the normative
version of the EBNF.
----------------------------------------
productions
"[66] PragmaContents"
"[146] Digits"
"[155] CommentContents"
These should be marked "ws: explicit".
[96] DirAttributeValue ::=
('"' (EscapeQuot | QuotAttrValueContent)* '"')
| ("'" (EscapeApos | AposAttrValueContent)* "'")
[97] QuotAttrValueContent ::=
QuotAttrContentChar | CommonContent
[98] AposAttrValueContent ::=
AposAttrContentChar | CommonContent
I think these would be clearer if you didn't split each of the choices over
two productions. Instead, how about:
[96] DirAttributeValue ::=
('"' QuotAttrValueContent* '"')
| ("'" AposAttrValueContent* "'")
[97] QuotAttrValueContent ::=
EscapeQuot | QuotAttrContentChar | CommonContent
[98] AposAttrValueContent ::=
EscapeApos | AposAttrContentChar | CommonContent
[142] StringLiteral
Change ('"' '"') to EscapeQuot.
Change ("'" "'") to EscapeApos.
(*ContentChar)
If you factor out the overlap of ElementContentChar, QuotAttrContentChar,
and AposAttrContentChar, and push it over to CommonContent, I think the
result is simpler. That is, change this:
[97] QuotAttrValueContent ::=
EscapeQuot | QuotAttrContentChar | CommonContent
[98] AposAttrValueContent ::=
EscapeApos | AposAttrContentChar | CommonContent
[99] DirElemContent ::= DirectConstructor | CDataSection
| ElementContentChar | CommonContent
[100] CommonContent ::= ...
[151] ElementContentChar ::= Char - [{}<&]
[152] QuotAttrContentChar ::= Char - ["{}<&]
[153] AposAttrContentChar ::= Char - ['{}<&]
to this:
[97] QuotAttrValueContent ::= EscapeQuot | "'" | CommonContent
[98] AposAttrValueContent ::= EscapeApos | '"' | CommonContent
[99] DirElemContent ::= DirectConstructor | CDataSection
| '"' | "'" | CommonContent
[100] CommonContent ::= [^"'{}<&] | ...
[151] ElementContentChar delete
[152] QuotAttrContentChar delete
[153] AposAttrContentChar delete
Just a thought.
(explicits)
I wonder if it would help the reader if the "ws: explicit" productions (and
the intervening ones that don't care whether they're "ws: explicit" or not)
were put together in a group. Specifically:
[65-66]
[79]
[93-106]
[138-159]
Then, instead of "productions marked with 'ws: explicit'", you might say
"productions in the [whatever] group".
Received on Wednesday, 11 May 2005 07:24:46 UTC