refal-5-lambda icon indicating copy to clipboard operation
refal-5-lambda copied to clipboard

Удалить front-end Простого Рефала

Open Mazdaywik opened this issue 4 years ago • 1 comments

Цель

Нужно удалить front-end Простого Рефала, бережно сохранив его автотесты.

Мотивация

Мотивация описана здесь: https://github.com/bmstu-iu9/refal-5-lambda/issues/318#simple-refal.

Процесс

Простой Рефал отличается от Рефала-5λ следующими чертами:

  • комментарии языка C++,
  • указатели на функцию записываются без &,
  • идентификаторы записываются через #.

Предполагается каждый из этих синтаксических элементов по очереди удалять, одновременно с ним поправлять синтаксис автотестов.

  1. Добавляем поддержку однострочных комментариев на *.
  2. Выдаём ошибки на комментарии //. Правим оба исходника и все автотесты, заменяя комментарии //… на *… или /* … */ (по обстоятельствам).
  3. Выдаём ошибки на имена функций без & (кроме имён после < и [). Правим оба исходника и все автотесты.
  4. Выдаём ошибки на знак #. Аналогично правим оба исходника и автотесты.
  5. В результате получаем автотесты, которые написаны в синтаксисе Рефала-5λ. Меняем им расширения на .ref.
  6. Ставший ненужным front-end можно удалить.

Mazdaywik avatar Oct 23 '20 20:10 Mazdaywik

Другой вариант процесса

  1. Выполнить #201 («Объединить парсеры Рефала-5λ и Простого Рефала»), расширив лексер и парсер Рефала-5λ недостающими синтаксическими конструкциями (//…, нет &, есть #).
  2. Убедиться, что парсер в новом режиме корректно прогоняет автотесты.
  3. Выкинуть неактуальный front-end Простого Рефала на Простом Рефале.
  4. По одному удалять расширения языка, поправляя синхронно автотесты. Кстати, # можно не удалять — она пригодится для #168 («Условия-отрицания»).
  5. Переименовать автотесты и удалить поддержку расширения .sref/.srefi.

Mazdaywik avatar Oct 23 '20 21:10 Mazdaywik