-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SemDet (#рефалстиль) #350
Comments
Я вспомнила, в чём там дело :( Рефал-стиль для производных по префиксу => ничего не работает для эпсилон-переходов. |
Всё хуже, чем казалось... Рефал-стиль в ключах хеш-таблиц и множества привёл к мозговыносящим ошибкам компиляции библиотеки xhash при попытке перейти от |
Ну кстати рефал-стиль изгнать пока не удалось (как минимум без визирования Главного), из-за того, что нет нормальных конструкторов для Regex, которые бы принимали Symbol, а не строку. И либо через указатели нужно делать, либо (что гораздо соблазнительнее) --- через По-хорошему, надо это исправить + добавить хэшеры и порядок для алгебраических выражений, чтобы можно было пользоваться не только векторными структурами данных. А так, почти удалось исправить рефал-стиль, продолжаю тестировать работоспособность. |
Ок, но |
Все-таки нужно делать конструктор) Скажите, куда коммитить |
Можно в ветку SemDet (тогда волью в свои неоттестированные изменения и уже по-человечески удастся избавиться от рефал-стиля), или в новую. |
Ещё один вопрос: имеется ли возможность брать производные по размеченным эпсилонам? Вроде бы они имеют легальный тип символ, но почему-то не обрабатываются как обычные размеченные символы (функция производной ругается на регулярку, состоящую из размеченного эпсилона). |
Пример теста, где видны коллизии типизации (специально взяла функционал без Эдгаровского, но эдгаровский тоже не может работать с эпсилонами по аналогичной причине):
Возвращает автомат с единственным состоянием, потому что по размеченным эпсилонам не берётся производная. |
Ещё есть повторные перепроверки из-за использования векторов вместо множеств; не подогнано под линтер; не нужно брать языки по всем вообще префиксам, достаточно по неоднозначным (Эдгар, на заметку олимпиадникам); Есть подозрение, что на преобразованиях после Annote (типа Reverse) иногда будут сравниваться таки неразмеченные языки, но у меня пока сравниваются размеченные, так что тест найти не удалось.
Тест на следующую проблему (deannote, который заменяет алфавит, но ничего не меняется в регулярке):
Причина: в регулярке, которая может получиться только арденами из размеченного автомата, появляются ноды с заглавными размеченными эпсилонами, имеющими тип символ. Эти ноды без изменений попадают в регулярку со стёртой разметкой, и таким образом эпсилоны проникают в структуру выражений в явном виде. Без траверса, правильно типизирующего результат снятия разметки, судя по всему, не обойтись. |
Только для регулярок. Для автоматов ещё нужно пропустить символы на переходах через update_epsilons, чтобы убить линеаризованные эпсилоны.
Исправить доделывания в ветке Эдгара и залить нормальные логи.
The text was updated successfully, but these errors were encountered: