Re: Proposal to change definition of 'name' (forbid final .)

> > Of these, GR's formulation is the most compact.
> 
> but doesn't allow a...b
> 
> Steven

Thanks, my bad of course. On second thought, I think I'd rather formulate it 
without using repeat with separator. My new proposal is this one:

     name: namestart, ( '.'*, namefollower )*.

It asks for a period to be followed by at least one namefollower, while allowing

  - any number of consecutive periods (first *),
  - any number of consecutive namefollowers (second *),
  - and any mixture therwof.

It also is slightly more compact than Steven's propsal,

     name: namestart, namefollower*, ("."+, namefollower+)*.

which of course does the job as well.

Both them, on their own, are LL(1).

However a wider context cannot be LL(1), when a name can be immediately followed
by a period. At this point already this requires lookahead of at least 2 to 
complete the name, plus more, if that period again could be followed by name 
characters. But I was not in the original discussion, so I am not sure what 
problem we are actually trying to solve by disallowing the final period.

Gunther


> > Gunther Rademacher <grd@gmx.net> writes:
> > 
> > > Sorry for jumping in, but it should be
> > >  
> > > @name: namestart, (namefollower ** ('.'?)).
> > > -namestart: ["_"; L].
> > > -namefollower: namestart; ["-·‿⁀"; Nd; Mn].
> > >  
> > > Of the variants proposed below, the first one still allows a period at the end
> > > of a name, while the second one allows more than one namefollower only
> > > if preceded by a period.
> > >  
> > > Best regards
> > > Gunther 
> > >   
> > > Gesendet: Dienstag, 28. November 2023 um 17:51 Uhr
> > > Von: "C. M. Sperberg-McQueen" <cmsmcq@blackmesatech.com>
> > > An: public-ixml@w3.org
> > > Betreff: Proposal to change definition of 'name' (forbid final .)
> > > It was observed on this morning's CG call that allowing names like
> > >
> > > foo.
> > >
> > > causes some difficulties for recursive-descent parsers (and any other
> > > parser with limited lookahead, perhaps), which are out of all proportion
> > > to the advantages, if any.
> > >
> > > This is to propose a simple fix: continue to allow . to occur in names,
> > > but forbid it to appear at the end of a name. Since no one on the call
> > > remembered ever seeing an XML name with a final full stop outside of a
> > > test suite, this did not seem likely to be a painful restriction.
> > >
> > > Concretely, delete the current definitions:
> > >
> > > @name: namestart, namefollower*.
> > > -namestart: ["_"; L].
> > > -namefollower: namestart; ["-.·‿⁀"; Nd; Mn].
> > >
> > > and replace them with:
> > >
> > > @name: namestart, namefollower*, ('.', namefollower*)*.
> > > -namestart: ["_"; L].
> > > -namefollower: namestart; ["-·‿⁀"; Nd; Mn].
> > >
> > > or alternatively:
> > >
> > > @name: namestart, (namefollower ** '.').
> > > -namestart: ["_"; L].
> > > -namefollower: namestart; ["-·‿⁀"; Nd; Mn].
> > >
> > > Comments and discussion welcome. (And it occurs to me that someone
> > > should check to make sure that this does actually address the LL(1)
> > > issue.)
> > >
> > > Michael
> > 
> > 
>

Received on Thursday, 30 November 2023 12:50:41 UTC