backtracking engine - практика 2011
Originally reported on Google Code with ID 30
1. Перевести backtracking на PHP с юнит-тестами и подключить к preg-вопросу как матчер
2. Реализовать функцию character для дочерних классов от preg_leaf с учетом $mergedassertions,
и юнит-тесты к ней.
3. Исследовать возможность преобразования регулярного выражения для устранения "больших"
ассертов.
Reported by oasychev
on 2011-07-11 21:19:27
Comments (9)
-
reporter -
reporter ``` Лучше будет создать два клона, в одном работать по backtracking, во втором - с character/match для листьев. Чтобы второй можно было вытянуть отдельно, до первого... ```
Reported by `oasychev` on 2011-07-12 09:45:37
-
reporter ``` Я просил создать 2 клона для разных видов работы.
И вообще, вы не забываете выталкивать коммиты? Я вашей работы пока не вижу... ```
Reported by `oasychev` on 2011-07-15 19:28:00
-
``` Второй клон пока не создал по причине того, что полностью занят переписыванием движка на php и на character еще не смотрел. ```
Reported by `McLeree` on 2011-07-15 19:32:51
-
reporter ``` Сбор для показа результатов практики - ориентировочно (если не сообщу изменения) в четверг в 10-30. Напомните всем. ```
Reported by `oasychev` on 2011-07-26 19:21:45
-
reporter Reported by `oasychev` on 2011-09-14 14:23:30 - Labels added: Milestone-Release2.1
-
reporter ``` В связи со слабой готовностью backtracking-матчера к работе в production-режиме принято решение не включать его в релиз 2.1 Что не снимает вопросов его участия в кросс-тестинге, как поставляя тесты другим матчерам (отдельный клон), так и проверив себя на этих тестах.
Ближайшей задачей по работе над самим матчером является исследование эффективности текущего метода реализации backtracking в сложных ситуациях (вложенные квантификаторы и т.д.) и сравнение его с другими вариантами его реализации для выбора наиболее перспективного. Начать следует с того, чтобы составить списки сложных ситуаций с тестовыми примерами, критериев оценки эффективности способов реализации (время выполнения, затрачиваемая память и т.д.) и вариантов реализации backtracking'а. Списки показать мне. ```
Reported by `oasychev` on 2011-11-11 17:12:43 - Labels removed: Milestone-Release2.1
-
reporter ``` Кросс-тестинг выявил ситуацию, что у вас квантификаторы по умолчанию нежадные. Это не соответствует синтаксису PCRE и остальных матчеров.
Уважайте параметр $greed в классах preg_node для квантификаторов. Вы имеете право прописать accept так, чтобы принимать только нежадные квантификаторы, если жадные пока не поддерживаются.
Необходимые изменения: 1) проверять $greed в квантификаторах - можно отказываться выполнять регексы с жадными, но нежадным образом должны матчиться только нежадные 2) переделать тесты так, чтобы квантификаторы в них были нежадными в соответствии с синтаксисом (добавить ? после квантификатора) ```
Reported by `oasychev` on 2011-11-19 10:55:46
-
reporter Этому коду оказалось не суждено дожить до релиза...
Reported by
oasychev
on 2013-09-06 13:05:57 - Status changed:WontFix
- Log in to comment
``` Для корректной работы character разрешается передать ей $str и $pos как в match_inner.
Еще надо бы и match поправить так, чтобы она получала данные о чуствительности к регистру не через параметр, а из поля, заполняющегося при создании узла - оно предусмотрено в preg_leaf. Но это в сканер/парсер придется лезть, хотя вам оно может быть интересно - там есть что по инструментам посмотреть. ```
Reported by `oasychev` on 2011-07-11 21:51:21