- From: C. M. Sperberg-McQueen <cmsmcq@blackmesatech.com>
- Date: Thu, 17 Feb 2022 11:18:37 -0700
- To: Norm Tovey-Walsh <norm@saxonica.com>
- Cc: public-ixml@w3.org
Norm Tovey-Walsh writes:
>>> Am I missing something?
>>
>> What am *I* missing?
>
> A comma.
>
> entry: -"@", @type, s*, -'{', s*, @citekey, fields?, s* -'}' .
> ...
> entry: -"@", @type, s*, -'{', s*, @citekey, fields?, s*, -'}' .
> ...
> That’s ugly. I wonder if there’s anything reasonable that we could do
> to make that less likely.
Yeow. That was hard to see.
Syntactically, I don't know if there is any nice solution to make that
error more detectable.
Given the current syntax, I can think of two things that might have
surfaced the error:
(1) extra parentheses around the body of the entry (or reification as a
nonterminal):
entry: -"@", @type, s*, -'{', (s*, @citekey, fields?, s*) -'}' .
entry: -"@", @type, s*, -'{', entry-body -'}' .
-entrybody: s*, @citekey, fields?, s*.
but I know no motivation for inserting those parentheses, or for that
matter using that extra nonterminal.
(2) a linter of some kind. It might be as simple as a translation of
the grammar into prose, the way some XML documentation does it:
An entry is a sequence of
- the character "@"
- a type (q.v.)
- zero or more occurrences of s (q.v.)
- the character "{"
- zero or more occurrences of s (q.v.)
- a citekey (q.v.)
- an optional occurrence of fields (q.v.)
- zero or more occurrences of s (q.v.) separated
by the character "}"
Here I've used (q.v.) to mark what would be hyperlinks to the
description of that nonterminal.
I should put that on the list of tools to add to Gingersnap.
--
C. M. Sperberg-McQueen
Black Mesa Technologies LLC
http://blackmesatech.com
Received on Thursday, 17 February 2022 18:19:05 UTC