OnionGrief / Chipollino

преобразования регулярных выражений и конечных автоматов
Other
20 stars 4 forks source link

Шаблон логов для тайпчекера и интерпретатора #224

Closed TonitaN closed 1 year ago

TonitaN commented 1 year ago

Чтобы не забыть:

TonitaN commented 1 year ago

Общий шаблон готов, и всё даже выглядит красиво, но у меня сильное подозрение, что на плюсах авторазмещение и авторазбиение будет болью.

Пока кидаю заполненный тестовыми данными (не автоматически, поэтому там кое-где не хватает иконок и т.п.) шаблон и результат вычисления, а выкладки по размещению в следующем посте.

Теперь легенда выглядит так

Небольшое шаманство со списками в легенде + иконка для синтаксического моноида

TonitaN commented 1 year ago

Структура дерева такая же, как в первом (кажется?) варианте у Ани, но вместо building functional sequence -- собственно сама последовательность. Пропущенные операции в дереве не отображаются, а в последовательности зачёркиваются (если попадают в область видимости) - это несколько расходится с поведением логгера в терминале, но экономит место и более естественно для финальных логов (для терминальных как раз логичнее, если по ходу последовательности появляется это сообщение, т.е. так, как сейчас и есть). Поведение ловушки и кэширование обозначаются иконками (так получилось наиболее лаконично и приемлемо). Как подчеркнуть формальную смену или сохранение языка, пока не совсем ясно -- пока что эта информация в индексах типов. Легенду можно добавлять всегда, а можно только если встречаются соответствующие иконки. Если дерево высоты больше 16 - оно слишком длинное и обрезается (нижние уровни заменяются двоеточиями). Соответственно, на слайд помещается не больше 16 строк вычислений по совокупности (можно несколько последовательностей, лишь бы поместились). Если функциональная последовательность длины больше 60 символов --- в ней самые внутренние аргументы заменяются на \toolongseq. Как это сделать без рефал-стиля? Никак, похоже: если очень длинные имена функций, а есть короткие. Все имена типов и функций в макросах максимально согласованы с теми, которые используются в тайпчекере. Исключение: Minimize+ и Determinize+, где символ плюса заменён на P.

TonitaN commented 1 year ago

Если заполнение такого шаблона с разрезанием и прочим слишком больно на плюсах --- ок, сделаем вывод логов тайпчекера во вспомогательный файл и потом рефалом его закодируем в слайды (но это уж сами решайте, может, и без рефала тут справиться можно). А теперь я с чистой совестью могу переехать ~на солнечные плантации~ в репозиторий @KarumaRey , в ветку refal.