refal-5-lambda
refal-5-lambda copied to clipboard
Компилятор Рефала-5λ
**ВНИМАНИЕ!** Исходная постановка задачи со временем потеряла актуальность на 60 %. Неактуальный кусок я завернул в складку. Наиболее точная постановка задачи сейчас — в комментарии https://github.com/bmstu-iu9/refal-5-lambda/issues/231#issuecomment-746839544. Неактуальный кусок свёрнут Цель...
Мотивация ======== Сейчас предусмотрено два вида трассировки процесса работы: неотключаемый вывод на `stdout` имён компилируемых файлов и включаемый/выключаемый лог трансформаций программы back-end’ом. В лог последнего выводится * дерево после рассахаривания,...
# Мотивация Открытые e-переменные вообще используются нечасто (преимущественно, для поиска в ассоциативном списке), а сопоставление справа-налево требуется тем более реже. В кодовой базе есть всего один пример такой потребности: https://github.com/bmstu-iu9/refal-5-lambda/blob/34e4d89e813365596bfa879fcafd6a16743b868c/src/compiler/GlobalGen.ref#L55-L60...
Нужно добавить во входной язык (в оба) условия-отрицания, т.е. условия, в которых сопоставление с образцом **не** должно выполняться. # Мотивация Иногда очень не хватает отрицательных условий. Иногда приходится явно перечислять...
Мотивация ======== Задача #91, и, в перспективе, не только она, подразумевает расширение синтаксиса. Но, поскольку используется два front-end’а, новые возможности приходится параллельно вносить в каждый из них. Рефал-5λ и Простой...
Мотивация ======== Компилятор выполняет лишние специализации по аккумуляторам. Достаточно много примеров описано в #319 (смотреть в свёрнутых комментариях). Там же (https://github.com/bmstu-iu9/refal-5-lambda/issues/319#issuecomment-727816888, комментарий свёрнут) предложено оборачивать выражения в вызов функции, который...
Ранее в рамках этой задачи предлагалось ещё и удалять экранированные предложения на стадии оптимизации. Эта деятельность была перенесена в отдельную задачу #346, которая не связана с текущей. Постановка текущей задачи...
Примечание. Ранее эта задача была частью формулировки задачи #341, но теперь она вынесена отдельно. Из формулировки #341 задача переноса логики на проход оптимизации удалена. Введение ====== В компиляторе уже присутствует...
При использовании пошагового отладчика возникает проблема, что некоторые точки остановки не срабатывают. Это вызвано неожиданным изменением указателей на открывающие скобки активации, которые сохраняются для запоминания точек остановки. Под неожиданным изменением...
Мотивация ======== Суперкомпилятор SCP4 крайне неудобно портировать на Рефал-5λ: его установка и выполнение ориентированы на использование классического Рефала-5. Установщик создаёт скрипты для запуска различных проходов суперкомпилятора (по отдельности либо вместе),...