Модульные тесты определения правил улучшения регексов

Issue #316 new
Oleg Sychev repo owner created an issue

Originally reported on Google Code with ID 316

- списки правил трансформации должны быть утверждены
- реализованы в коде юнит-тесты на все правила и алгоритм поиска эквивалентных под-
деревьев (без преобразования)
- реализован и оттестирован алгоритм поиска эквивалентных поддеревьев (без преобразования)

Reported by oasychev on 2014-12-24 13:50:03

Comments (10)

  1. Former user 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-11 10:10:55

  2. Oleg Sychev reporter
    Вы издеваетесь, в последний день такое высылая?
    У меня ближайшие два дня экзамены и соответствующая проверка курсовых, потом смогу
    заняться...
    

    Reported by oasychev on 2015-01-12 09:13:41

  3. Former user 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

  4. Former user 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

  5. Oleg Sychev reporter
    Старый коммент, попал не туда ответом на ваш:
    1. По чарсетам мы просто сравниваем интервалы. Наоборот - если есть альтернативы длиной
    в один символ, их можно свести к чарсетам.
    2. По простым ассертам типа ^ $ - уточните у Валерия, без preserveallnodes там уже
    преобразование производится с учетом опций, должно хватить.
    
    
    И что там с юнит-тестами на это все?
    

    Reported by oasychev on 2015-01-25 21:58:59

  6. Former user Account Deleted
    а что надо еще? может на днях с гришей тесты его поделим и закодим
    

    Reported by TOPT.iiiii on 2015-01-26 04:58:23

  7. Oleg Sychev reporter
    Ваши то тесты для всех правил готовы?
    

    Reported by oasychev on 2015-01-26 13:57:53

  8. Oleg Sychev 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

  9. Oleg Sychev reporter
    5) Вам и Терехову нужны более комплексные тесты на эквивалентность с повторениями и
    без (разворачивание конечных квантификаторов). Не просто с повторением a или ab, а
    реально комплексные - с "ложными" встречами начала внутри повторяющейся последовательности
    (даже типа повторения ababa{3} и ababaababaababa), с комплексными конструкциями внутри
    с разными операторами (альтернативы (включая в разном порядке - (?:a|b){2} и (?:a|b)(?:b|a)
    должны быть эквивалентны ), подмаски (вот тут весело, ибо в их количестве разница есть)
    и т.д.
    

    Reported by oasychev on 2015-01-28 11:36:27

  10. Oleg Sychev reporter
    Поскольку содержит важные комментарии, оставляю за Тереховым до доведения тестов до
    ума.
    

    Reported by oasychev on 2015-03-01 22:39:44 - Status changed: InProgress

  11. Log in to comment