Open mathhyyn opened 1 year ago
Отмечу, что мой комментарий про нормализацию относился не к потере эквивалентности, а к потере 1-однозначности (происходящей из-за того, что автоматы орбит преобразуются в регулярки Арденом, и это - не баг Ардена, а просто плохая совместность двух концепций). Потеря эквивалентности с маленькой вероятностью может быть из-за таковой внутри Ардена, но лучше перепроверить наверняка. Мне воссоздать искусственно с первой попытки баг с этой регуляркой только на Ардене не удалось, но если честно, попытка и была только одна :(
Потеря эквивалентности с маленькой вероятностью может быть из-за таковой внутри Ардена, но лучше перепроверить наверняка. Мне воссоздать искусственно с первой попытки баг с этой регуляркой только на Ардене не удалось, но если честно, попытка и была только одна :(
N1 = Arden.Glushkov {bb*a(|a*|b(a|b(|a)))*} !!
Equiv N1 {bb*a(|a*|b(a|b(|a)))*}
так и есть :(
если убрать кэширование, результат false
В текущей реализации 1-однозначная регулярка собирается из строк. После введение новой системы разметки alphabet_symbol, это приведет к ошибочной работе метода, если символы размечены. Для решения этой проблемы придётся либо менять парсер регулярок, либо собирать 1-однозначную иначе.
На всякий случай лучше парсер поменять когда-нибудь )) В Ардене, может, тоже кто-то захочет через to_str
что-то отрефакторить, а ещё Normalise
есть, там очень классно использовать рефал-стиль ) (но лучше не надо)
Не моё ))
из #212 :
[ ] 1.
получается неэквивалентная регулярка
(ab*a|b*ab|b)*
[ ] 2.
из #192