Систематизация ситуаций в которых генерация след. символа с места прерывания совпадения невозможна
Originally reported on Google Code with ID 70 ``` Существуют ситуации, когда генерация след. символа с места прерывания невозможна: ассерты, которые плохо взаимодействуют с окружением; обратные ссылки на подмаски которые не имели совпадений (из-за альтернатив например) и т.д.
Прежде всего необходимо составить список таких ситуаций и решить, что с ними делать... ```
Reported by `oasychev` on 2011-11-28 21:18:00
Comments (5)
-
reporter -
reporter ``` Первая часть реализована.
Вместо поля next (помечено устаревшим) в результаты матчинга внесены поля (см. последние коммиты): correctending - содержит корректное завершение строки (не обязательно полное, можно и один символ) correctendingstart - индекс начала корректного завершения - если не установлен, выставляется равным концу совпадения correctendingcomplete - true если добавление correctending завершает матчинг.
Это не значит, что вы обязаны сразу все генерировать. Начать можно с того, что помещать следующий символ в correctending вместо next. Потом совершенствовать генерацию полного совпадения....
Решение ситуации 2 будет скоро - добавится еще одно поле для сигнализации о такой ситуации... ```
Reported by `oasychev` on 2012-01-18 10:44:35
-
reporter ``` Кстати, проверку next в кросс-тестере также стоит заменить на correctending[0] Сами тесты можно не трогать, только ассерт... ```
Reported by `oasychev` on 2012-01-18 13:29:05
-
reporter ``` Теперь продолжение может генерироваться с любого символа, т.к. оно возвращается как объект результатов матчинга. ```
Reported by `oasychev` on 2012-03-09 19:40:39 - Status changed: `Fixed`
-
reporter Reported by `oasychev` on 2012-04-05 15:30:31 - Status changed: `Done`
- Log in to comment
``` Я так понимаю, что возможно всего два варианта: 1) продолжение надо генерировать не с точки конца совпадения, а ранее по тексту, т.к. по текущей ветке закончить совпадение невозможно (ассерты, обратные ссылки и т.д.) 2) следующего символа нет, отсутствие совпадения вызвано нарушением ассерта $ в КОНЦЕ выражения, так что символы надо не добавлять, а удалять..
Кто-нибудь может предложить еще? ```
Reported by `oasychev` on 2012-01-18 10:32:47