refal-5-lambda
refal-5-lambda copied to clipboard
Удалить front-end Простого Рефала
Цель
Нужно удалить front-end Простого Рефала, бережно сохранив его автотесты.
Мотивация
Мотивация описана здесь: https://github.com/bmstu-iu9/refal-5-lambda/issues/318#simple-refal.
Процесс
Простой Рефал отличается от Рефала-5λ следующими чертами:
- комментарии языка C++,
- указатели на функцию записываются без
&
, - идентификаторы записываются через
#
.
Предполагается каждый из этих синтаксических элементов по очереди удалять, одновременно с ним поправлять синтаксис автотестов.
- Добавляем поддержку однострочных комментариев на
*
. - Выдаём ошибки на комментарии
//
. Правим оба исходника и все автотесты, заменяя комментарии//…
на*…
или/* … */
(по обстоятельствам). - Выдаём ошибки на имена функций без
&
(кроме имён после<
и[
). Правим оба исходника и все автотесты. - Выдаём ошибки на знак
#
. Аналогично правим оба исходника и автотесты. - В результате получаем автотесты, которые написаны в синтаксисе Рефала-5λ. Меняем им расширения на
.ref
. - Ставший ненужным front-end можно удалить.
Другой вариант процесса
- Выполнить #201 («Объединить парсеры Рефала-5λ и Простого Рефала»), расширив лексер и парсер Рефала-5λ недостающими синтаксическими конструкциями (
//…
, нет&
, есть#
). - Убедиться, что парсер в новом режиме корректно прогоняет автотесты.
- Выкинуть неактуальный front-end Простого Рефала на Простом Рефале.
- По одному удалять расширения языка, поправляя синхронно автотесты. Кстати,
#
можно не удалять — она пригодится для #168 («Условия-отрицания»). - Переименовать автотесты и удалить поддержку расширения
.sref
/.srefi
.