- From: LdBeth <andpuke@foxmail.com>
 - Date: Sat, 04 Nov 2023 09:53:14 -0500
 - To: Norm Tovey-Walsh <norm@saxonica.com>
 - Cc: ixml <public-ixml@w3.org>
 
>>>>> In <m2cywp3k6i.fsf@saxonica.com> 
>>>>>	Norm Tovey-Walsh <norm@saxonica.com> wrote:
Norm> [1  <text/plain; utf-8 (quoted-printable)>]
Norm> Good morning.
Norm> Consider the following grammar for an odd little iXML-like language:
Norm>       S = s, alts.
Norm>    alts = alt++(';', s).
Norm>     alt = term**(',', s).
Norm>    term = ('a' ; 'b'), s.
Norm>      -s = (-' '|comment)*.
Norm> comment = -'{', ~[{}]*, -'}'.
Norm> This comes from a unit test. (I can¢t actually recall what I was
Norm> testing, but this was some minimal subset of iXML that demonstrated a
Norm> bug.)
Norm> That¢s not the interesting part. The interesting part is the
Norm> easy-to-overlook error. I¢ll give you a moment to see if you can spot
Norm> it.
I witnessed that given the following input
a, {foo} {bar } b
There are two ambiguous parsing due to how space and comment
are specified.
<S xmlns:ixml="http://invisiblexml.org/NS" ixml:state="ambiguous">
   <alts>
      <alt>
         <term>a</term>,<comment>foo</comment>
         <comment>bar </comment>
         <term>b</term>
      </alt>
   </alts>
</S>
<S xmlns:ixml="http://invisiblexml.org/NS" ixml:state="ambiguous">
   <alts>
      <alt>
         <term>a</term>,<comment>foo} {bar </comment>
         <term>b</term>
      </alt>
   </alts>
</S>
If the intended fix is applied:
comment = -'{', ~["{}"]*, -'}'.
then the ambiguous parse disappeared.
Norm>                   S P O I L E R  B R E A K
And I didn't see the answer before found the ambiguous parse. So
I consider I won the challenge.
---
ldb
Received on Saturday, 4 November 2023 14:58:38 UTC