Open alien-agent opened 6 months ago
Есть вопросы по совместимости. Библиотеку unistd.h
подключила к Windows, не очень понимаю, зачем было привязываться к ней (магия с хешами не кажется столь обязательной). Но в вашей сборке у меня уже не генерируются шаблоны, не только для PDA, а вообще ни для чего. Проверьте кто-нибудь на винде, у вас та же история?
Есть вопросы по совместимости. Библиотеку
unistd.h
подключила к Windows, не очень понимаю, зачем было привязываться к ней (магия с хешами не кажется столь обязательной). Но в вашей сборке у меня уже не генерируются шаблоны, не только для PDA, а вообще ни для чего. Проверьте кто-нибудь на винде, у вас та же история?
Я честно говоря, вообще не знаю как она попала в код. Видимо IDE автоматически подключила. Сейчас удалю, вместе с исправлением всех замечаний.
UPD: Что-то сломалось в логах ещё раньше: у меня всё работает на январской версии, но на нынешней размер логов при порождении шаблонов показывается равным 0.
А всё, увидела, вернулись восклицательные знаки.
А в вашем случае есть проблема совместимости генерации lexy и windows - используется не тот слеш в суффиксе пути, из-за чего вылетает ошибка. Буду пробовать чинить у себя, как починю - напишу.
Удалила лишнюю библиотеку и запустила lexy совместимо. Ломается кодировка UTF-8 в логах вот тут:
\text{Принадлежност� }\\\text{� языку }\end{array}
А можете проверить воспроизводится ли проблема на master ветке? Такая строка помещается в отчет ровно в одном месте (Tester.cpp, строчка 97), и я к нему и близко не подходил (как и к refal-функциям которые эту таблицу потом форматируют).
Не все проблемные эпсилон-переходы обрабатываются корректно. При второй комплементации автомата Дика это видно. rendered_report.pdf
В дополненном PDA есть переход между финальным и нефинальным состоянием, в котором просто обращаются финальности, без промежуточного состояния.
А можете проверить воспроизводится ли проблема на master ветке? Такая строка помещается в отчет ровно в одном месте (Tester.cpp, строчка 97), и я к нему и близко не подходил (как и к refal-функциям которые эту таблицу потом форматируют).
Вы правы - проблема образовалась раньше. Интересным образом, поскольку эти строчки и преобразование в text давно уже никто не трогал. Всё решилось заменой:
t.columns.emplace_back("Шаги");
t.columns.emplace_back("Длина строки");
t.columns.emplace_back("Время разбора");
t.columns.emplace_back("Результат разбора");
По смыслу так даже точнее, но конечно, нужно найти, почему ь
вдруг расщепился посередине в текстовом режиме.
@TonitaN Исправил ошибку. Почему-то я решил добавить в поиск "проблемных" переходов странное условие, которого не было в лекциях (на тот момент мне такой действие показалось логичным). И еще одно ненужная (даже вредная) проверка при простановке переходов из ловушки проблемных переходов.
C отдельным эпсилон-переходом теперь работает. С эпсилон-замыканиями нет: rendered_report.pdf И главное, я забыла в ТЗ для двоечников это написать, с них и не требовалось таких тонкостей) Вам же желательно подредактировать критерий проблемности: если продолжение эпсилон-перехода по эпсилон-замыканиям может быть проблемным, то эпсилон-переход проблемный.
@TonitaN Добавил учет эпсилон замыканий
В равенстве неаккуратно проверяются символы перехода. См. тест, внимание на самый правый переход rendered_report.pdf .
@TonitaN Согласен. Совершенно глупая ошибка - забыл при переписывании алгоритма вернуть проверку на совпадение символов афлавита. Исправил.
@alien-agent , нужно всё-таки внести фиксы по ревью @xendalm . Иначе в последующие годы без полного фикса курсовых никого не будем допускать к аттестации, и назовём это "Правило Пашкевича".
@alien-agent , нужно всё-таки внести фиксы по ревью @xendalm . Иначе в последующие годы без полного фикса курсовых никого не будем допускать к аттестации, и назовём это "Правило Пашкевича".
Не переживайте, исправлю на след неделе - жалко чтобы такой труд пропадал. (просто ушел в небольшой отпуск, поэтому чуть позже исправления будут)
След недели давно стёрся, правило имени Пашкевича маячит на горизонте будущих четверокурсников... @alien-agent
Добавлен тип PDA. Поддержаны методы:
По умолчанию на стэке лежит символ
Symbol::StackTop == "z0"
. Каждый переход должен снимать со стэка ровно один символ. Каждый переход может класть на стэк несколько символов (чтобы не класть ничего на стэк, нужно передать eps в качестве push символа).