Формат хранения данных о возможных символах на данном шаге при определении возможного завершения совпадения

Issue #62 closed
Oleg Sychev repo owner created an issue

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)

  1. Alexey Mednikov

    ``` Подобным образом хранился следующий символ в моей реализации на C++. Все операции преобразования, за исключением пожалуй тех, что работают с инвертированными листами, весьма тривиальны. ```

    Reported by `McLeree` on 2011-11-21 21:01:05

  2. Oleg Sychev reporter

    ``` Дискуссия на эту тему шла давно - а вы отмалчивались....

    Прошу любить и жаловать issue 35.

    Вы к релизу (конец этой недели) кросс-тесты и якорение сделаете? ```

    Reported by `oasychev` on 2011-11-21 21:12:22

  3. Valeriy Streltsov

    ``` Пишу в это issue как в открытое и наиболее близкое по теме. Вроде бы несложно наконец доделать ситуацию, когда совпадение обламывает $ и символы надо удалить. В этом случае left делать отрицательным, равным по модулю количеству удаляемых символов? ```

    Reported by `vostreltsov` on 2012-09-03 20:30:09

  4. Oleg Sychev reporter

    ``` А разве сейчас оно плохо работает? Вроде ситуацию с удалением символов я прорабатывал когда подсказки писал... ```

    Reported by `oasychev` on 2012-09-04 10:22:29

  5. Valeriy Streltsov

    ``` Ну тест фейлится. Нужно чтобы в extension был нормальный length и нулевой left? ```

    Reported by `vostreltsov` on 2012-09-04 15:08:31

  6. Oleg Sychev reporter

    ``` В интерфейсе самого вопроса оно выглядит нормально? Там по-моему однозначно надо чтобы возвращало что символ нельзя сгенерировать и совпадение не до конца, точнее надо смотреть по коду... ```

    Reported by `oasychev` on 2012-09-05 15:08:16

  7. Oleg Sychev reporter

    ``` На данный момент вопрос рисует зачеркнутые символы для удаления если нет хинта (длина хинта нулевая, т.е. extension не содержит символов далее точки конца совпадения с исходной строкой) и есть символы после точки завершения текущего совпадения в самой исходной строке: $this->extensionstart < $this->str->length()

    Матчер сейчас поступает не так? ```

    Reported by `oasychev` on 2012-09-05 16:03:21

  8. Oleg Sychev reporter
    Валерий, проблема которая обсуждалась в последних комментах решилась? Или вы все-таки
    видите случаи неадекватного поведения вопроса при подсказке?
    

    Reported by oasychev on 2012-11-10 18:39:43 - Status changed: Fixed

  9. Log in to comment