- 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