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.
