Re: Examples of disambiguation

 > 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