Символьный класс с одним символом

Issue #373 new
Григорий Терехов created an issue

Реализовать правило: "Положительный символьный класс с одим символо или группой одинаковых символов эквивалентен символу без символьного класса"

Comments (13)

  1. Григорий Терехов reporter

    Убрать проверку отрицательных символьных классов и добавить проверку для случая одинаковых символов в символьном классе

  2. Григорий Терехов reporter

    Реализовано для положительных символьных классов с одним символом, осталось добавить проверку для случая одинаковых символов в символьном классе

  3. Oleg Sychev repo owner

    Жуткие глюки. У меня это правило срабатывает на [c-e] и убирает квадратные скобки.

    Вы похоже попали в ловушку только позитивных тестов (тесты на срабатывание правила), а негативных - на ситуации когда не должно срабатывать - не писали. Отсюда такие ужасы...

  4. Oleg Sychev repo owner

    Также работает, хотя не должно, для случая с одним posix-классом - [[:space:]] преобразуется в [:space:] что приводит к ошибке в компиляции выражения.

  5. Oleg Sychev repo owner

    Еще есть баги связанные с эскейпингом, который как известно внутри и вне квадратных скобок отличается. Так [+] она у вас в + преобразует, равно как и [[] в [ - что дает синтаксические ошибки.

  6. Oleg Sychev repo owner

    [\b] который является символом бекспейса преобразуется в \b который ассерт. Ужасы нашего городка...

  7. Oleg Sychev repo owner

    Аналогично для [\z] и т.д. - смотрите все простые ассерты в виде букв и бекслеша...

  8. Oleg Sychev repo owner

    Еще обратите внимание что это правило зависит от нотации. Расширенная нотация игнорирует пробелы, не являющиеся частью символьных классов, а еще в ней есть знак однострочного комментария. В случае расширенной нотации они не должны преобразовываться из [ ] в просто пробел - и знак комментария тоже.

  9. Григорий Терехов reporter

    Экранирование таких символов, как {,},( и т.д. готово, с остальными разберусь чуть позже. Ведь тут [\b] в символьном классе 1 символ, и вообще может не стоит для него убирать квадратные скобки? Он же преобразуется как-то так без них: \x08...

  10. Oleg Sychev repo owner

    Может для \b стоит предлагать наоборот - скобки ввести.

    Обратите внимание также на поведение с удалением скобок для \A \Z \z - оно тоже глючит - и вообще проверьте все эскейп-последовательности, которые не соответствуют набору символов.

  11. Oleg Sychev repo owner

    Обратите внимание что для \s \w \d и их больших версий оно должно работать, [\s] и \s эквивалентны.

    Сейчас на сервере не работает

  12. Oleg Sychev repo owner

    1) В расширенной нотации убирает скобки вокруг пробела, хотя это меняет смысл выражения...

  13. Log in to comment