Формат хранения данных о возможных символах на данном шаге при определении возможного завершения совпадения
Originally reported on Google Code with ID 62
Установлено, что возможны цепочки типа [a*]\b[b?]\b[c!]\b и т.д., вынуждающие отложить
возможное решение о правильном символе на следующей позиции на произвольное количество
шагов вперед.
Поэтому актуальным становится вопрос хранения данных о возможных совпадениях на данном
шаге так, чтобы потом оно могло быть сокращено. С учетом работы в кодировке UTF-8.
По этому поводу было много разных предложений. Мне наиболее перспективной на данный
момент кажется идея использовать для этого объекты-наследники preg_leaf. В них есть
все, что требуется для представления конечным образом любого возможного совпадения
- и нам в любом случае понадобятся преобразования над ними...
Reported by oasychev
on 2011-11-21 20:46:24
Comments (10)
-
-
reporter ``` Дискуссия на эту тему шла давно - а вы отмалчивались....
Прошу любить и жаловать issue 35.
Вы к релизу (конец этой недели) кросс-тесты и якорение сделаете? ```
Reported by `oasychev` on 2011-11-21 21:12:22
-
``` Пишу в это issue как в открытое и наиболее близкое по теме. Вроде бы несложно наконец доделать ситуацию, когда совпадение обламывает $ и символы надо удалить. В этом случае left делать отрицательным, равным по модулю количеству удаляемых символов? ```
Reported by `vostreltsov` on 2012-09-03 20:30:09
-
reporter ``` А разве сейчас оно плохо работает? Вроде ситуацию с удалением символов я прорабатывал когда подсказки писал... ```
Reported by `oasychev` on 2012-09-04 10:22:29
-
``` Ну тест фейлится. Нужно чтобы в extension был нормальный length и нулевой left? ```
Reported by `vostreltsov` on 2012-09-04 15:08:31
-
reporter ``` В интерфейсе самого вопроса оно выглядит нормально? Там по-моему однозначно надо чтобы возвращало что символ нельзя сгенерировать и совпадение не до конца, точнее надо смотреть по коду... ```
Reported by `oasychev` on 2012-09-05 15:08:16
-
reporter ``` На данный момент вопрос рисует зачеркнутые символы для удаления если нет хинта (длина хинта нулевая, т.е. extension не содержит символов далее точки конца совпадения с исходной строкой) и есть символы после точки завершения текущего совпадения в самой исходной строке: $this->extensionstart < $this->str->length()
Матчер сейчас поступает не так? ```
Reported by `oasychev` on 2012-09-05 16:03:21
-
reporter Валерий, проблема которая обсуждалась в последних комментах решилась? Или вы все-таки видите случаи неадекватного поведения вопроса при подсказке?
Reported by
oasychev
on 2012-11-10 18:39:43 - Status changed:Fixed
-
Вроде бы решилась.
Reported by
vostreltsov
on 2012-11-10 18:40:38 -
reporter Reported by
oasychev
on 2012-11-10 18:45:57 - Status changed:Done
- Log in to comment
``` Подобным образом хранился следующий символ в моей реализации на C++. Все операции преобразования, за исключением пожалуй тех, что работают с инвертированными листами, весьма тривиальны. ```
Reported by `McLeree` on 2011-11-21 21:01:05