Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Mazdaywik opened this issue Oct 23, 2020 · 1 comment
Open

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

Mazdaywik opened this issue Oct 23, 2020 · 1 comment
Assignees
Labels
Milestone

Comments

@Mazdaywik
Copy link
Member

Цель

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

Мотивация

Мотивация описана здесь: #318 (comment).

Процесс

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

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

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

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

Mazdaywik commented Oct 23, 2020

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

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

@Mazdaywik Mazdaywik added this to the 4.0 milestone Aug 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant