>> Reluctant quantifiers seem to have important usecases (i.e. the
>> shortest path). But if implementation is too difficult, we should
>> defer to after the first version.
>>
>> How do you estimate the difficulty and the size of the code for
>> reluctant quantifiers?
> 
> The core difficulty is not in nfa_advance() itself but in matched
> state replacement: once a greedy match is confirmed, replacing it
> with a shorter reluctant match requires updating matchedState, which
> the current structure does not support cleanly.
> 
> This is the same design gap that underlies the altPriority FIXME:
> both problems require rethinking how the confirmed match state
> interacts with the active NFA state list.  I think it is worth
> solving them together.

Agreed.

> I would prefer to work on the altPriority redesign first and include
> reluctant quantifiers and state pruning as part of that work if the
> design allows it cleanly.
> 
> If I encounter design issues that are difficult to resolve, I will
> come back to discuss before proceeding.

Sounds like a perfect plan!

>> >   - {- -} (exclusion)
>> >   - Empty pattern -- A{0}, () empty pattern.  Should we implement
>> >     A{0} in this patch and defer empty match semantics (unmatch vs
>> >     empty match distinction) to when MEASURE is implemented?
>>
>> Yes, I think so. We should defer.
>>
>> >   - A{0}: proceed with implementation?
>> >   - () empty pattern: also in scope, or defer?
>>
>> I think we can defer.
> 
> Just to confirm: my understanding is that A{0} is in scope for this
> patch, while () empty pattern and empty match semantics are deferred.
> Is that correct?  If so, I plan to implement A{0} together with the
> cycle detection fix for patterns like (A*)*, since both involve
> zero-length iteration handling.

Thanks for clarification. That's my understanding too.

>> I though we could defer after the first commit. Do you wish to
>> implement it now?
>> [regarding PERMUTE]
> 
> I am happy to defer PERMUTE.

Ok.

>> 1-3 look good.
> 
> I will address test reorganization and documentation review after the bug
> fixes and feature implementations are complete.

I can work on the documentation review part.

>> BTW, while researching the standard, I am wondering whether empty
>> DEFINE clause is allowed (DEFINE without any variable definition at
>> all).  [...] So, it seems a bare DEFINE clause is not allowed.
>> However searching google, it says that the standard allow a bare
>> DEFINE. Maybe it's a hallucination?
> 
> That seems right.  DEFINE with no definitions is not allowed; the
> parser rejects it syntactically.
> 
> On a related note: since the standard treats variables not listed in
> DEFINE as implicitly TRUE, should we allow PATTERN without DEFINE?

ISO/IEC 19075-5 stats that DEFINE is not optional (Table 18 - Row
pattern recognition in windows - syntax summary) So we should not
allow PATTERN without DEFINE.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp


Reply via email to