Модульные тесты определения правил улучшения регексов
Issue #316
new
Originally reported on Google Code with ID 316
- списки правил трансформации должны быть утверждены
- реализованы в коде юнит-тесты на все правила и алгоритм поиска эквивалентных под-
деревьев (без преобразования)
- реализован и оттестирован алгоритм поиска эквивалентных поддеревьев (без преобразования)
Reported by oasychev
on 2014-12-24 13:50:03
Comments (10)
-
Account Deleted -
reporter Вы издеваетесь, в последний день такое высылая? У меня ближайшие два дня экзамены и соответствующая проверка курсовых, потом смогу заняться...
Reported by
oasychev
on 2015-01-12 09:13:41 -
Account Deleted Сократил. там было много правил по преобразованию символных классов в диапазоны, которые скопированы из существующего кода. удалил их. pdf: https://gitprint.com/pahomovda/efce8131088cde572625/raw/2bf1a57bb60eaa17c201e3d14b1c3184d889788a/preg_normalize_tree github: https://gist.github.com/pahomovda/efce8131088cde572625
Reported by
TOPT.iiiii
on 2015-01-12 10:23:10 -
Account Deleted Добавлен методы is_equal для поиска полного совпадения (с учетом произвольного порядка операндов альтернативы и ссылок разными именами ссылающимися на одинаковые подмаски) https://code.google.com/r/toptiiiii-preg-description-28/source/detail?r=5488c6b162af2bdb7a1be8cc9375c53ad0e79b55 Добавлен методы find_all_subtrees, который возвращает массив корней найденных поддеревьев (с учетом пересчета номеров подмасок для поддеревьев). https://code.google.com/r/toptiiiii-preg-description-28/source/detail?r=7e2f9ab066d762838e7a06fc25e4394279ff4406
Reported by
TOPT.iiiii
on 2015-01-25 10:47:16 -
reporter Старый коммент, попал не туда ответом на ваш: 1. По чарсетам мы просто сравниваем интервалы. Наоборот - если есть альтернативы длиной в один символ, их можно свести к чарсетам. 2. По простым ассертам типа ^ $ - уточните у Валерия, без preserveallnodes там уже преобразование производится с учетом опций, должно хватить. И что там с юнит-тестами на это все?
Reported by
oasychev
on 2015-01-25 21:58:59 -
Account Deleted а что надо еще? может на днях с гришей тесты его поделим и закодим
Reported by
TOPT.iiiii
on 2015-01-26 04:58:23 -
reporter Ваши то тесты для всех правил готовы?
Reported by
oasychev
on 2015-01-26 13:57:53 -
reporter 1) Привести в порядок стиль кодирования! В последних тестах вообще комментарии на русском языке взялись откуда-то, в is_equal - подчеркивания в именах переменных и т.д. Поставьте себе local_codechecker и проверьте. 2) может быть для альтернативы в is_equal реализовать проверку операндов без учета порядка? Не придется сортировать тогда... Или нужно сортировку делать эффективную - собственно есть php-функции эффективной сортировки с callback-функциями сравнения элементов, можно их задействовать. Кстати - поищите функции сравнения массивов через callback в PHP - может и есть, не обязательно весь код самому писать. 3) в тестах на правила - коммит 17d9da34b1ea - к каждому тесту приписать комментарием номера правил из документа, которые в нем участвуют (одно или несколько). Так проще отследить покрытие правил тестами... 4) надо в тестах четко отделить названием тесты на полную эквивалентность записи (функция is_equal) и эквивалентность с учетом правил преобразования. Лучше иметь их в отдельных файлах. Скажем literal_equality_test и matching_equality_test.
Reported by
oasychev
on 2015-01-28 11:24:07 -
reporter 5) Вам и Терехову нужны более комплексные тесты на эквивалентность с повторениями и без (разворачивание конечных квантификаторов). Не просто с повторением a или ab, а реально комплексные - с "ложными" встречами начала внутри повторяющейся последовательности (даже типа повторения ababa{3} и ababaababaababa), с комплексными конструкциями внутри с разными операторами (альтернативы (включая в разном порядке - (?:a|b){2} и (?:a|b)(?:b|a) должны быть эквивалентны ), подмаски (вот тут весело, ибо в их количестве разница есть) и т.д.
Reported by
oasychev
on 2015-01-28 11:36:27 -
reporter Поскольку содержит важные комментарии, оставляю за Тереховым до доведения тестов до ума.
Reported by
oasychev
on 2015-03-01 22:39:44 - Status changed:InProgress
- Log in to comment
Reported by
TOPT.iiiii
on 2015-01-11 10:10:55