- From: Steven Pemberton <steven.pemberton@cwi.nl>
- Date: Tue, 07 Jul 2026 12:24:20 +0000
- To: "Bethan Tovey-Walsh" <bytheway@linguacelta.com>
- Cc: ixml <public-ixml@w3.org>
> I think it would be a bit limiting to call this a "disambiguation"
construct, to be honest. It provides lookahead and lookbehind*, which is a
pretty major extension to what iXML can already do, as it makes the
language context-sensitive.
Hmm. I think of it as a disambiguation construct, because it allows me to
disambiguate grammars that would otherwise be ambiguous.
ixml can already do lookahead:
input: aBook, "a";
bBook, "b'.
aBook: book.
bBook: book.
book: chapter+. {etc}.
But while ! can be considered as a lookahead operator, that's not how I
think of it, I see it as a guard of what follows.
> That being the case, I don't think I'd agree that it's the same kind of
thing as the repetition operators. It doesn't really say "match zero of
this"; it says "ensure that this does not match". We don't have any other
such non-consuming match patterns in the language at present.
I agree it is new, I do see it as related to *, +, ? because it does
guarantee that exactly zero of those things are present at that point. Any
construct that includes empty as one of its productions, either explicitly
or implicitly, is a non-consuming structure. This one just gives the reason
why.
Steven
Received on Tuesday, 7 July 2026 12:24:30 UTC