With the latest developer's release I've introduced a bug fix, which could
seem to be a backward incompatibility to applications which relied on the
problem behavior.

Specifically, in unusual cases, the SLIF might not trigger certain nulled
events at location 0.  Applications which relied on the non-reporting of
these events -- say, by experimentally getting a count of the events and
then hard-wiring that tally into the application, may fail.

Here's the TL;DR details: Marpa special-cases null (zero-length) parses,
which saves a lot of time & trouble in the code for common cases.  But in
the case of deciding which symbols are nulled at location 0, because Marpa
uses left-to-right logic, a non-nulled parse has to also include those
nulled events which would trigger if the input were zero length.  In other
words, it has to include those which trigger in the otherwise special-cased
nulled parse.  Libmarpa was neglecting to do this.  In most cases, this
neglect made no difference -- the same symbols were nulled whether the
parse was zero-length or not.  But in a few cases, symbols which are nulled
by the zero-length parse are *never* nulled by a longer length parse, and
when this was the case, Libmarpa would fail to trigger those nulled events.

It's a rare problem, and no user has ever reported it.  I found it because
when adding new features, I was testing this logic and carefully
micro-examining the results.  But it was a bug and now it is fixed.

-- 
You received this message because you are subscribed to the Google Groups 
"marpa parser" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to