У нас есть препроцессор, который может конвертировать подмножество Простого Рефала в исходный код на Модульном Рефале. При этом он написан на Модульном Рефале. Его можно аккуратно встроить в компилятор, получив при этом второй front-end. Следует заметить, что поддержка множественных front-end’ов в компиляторе уже имеется.
Частности:
- Самый простой вариант встраивания: для каждого входного файла на Простом Рефале вызывать препроцессор, который будет порождать временный файл. Последний скармливать парсеру Модульного Рефала. Препроцессор гарантирует, что номера строк сохранятся и будут правильно указывать на синтаксические ошибки. Разумеется, есть много более сложных, но более качественных вариантов.
- Текущая версия препроцессора сильно отстала, она не поддерживает идентификаторы и вложенные функции. Версию нужно актуализировать.
- Front-end будет принимать только подмножество Простого Рефала, возможно, расширенное подмножество.
- Уже есть back-end Простого Рефала. Поскольку front-end принимает подмножество, он не обязан обрабатывать выхлоп back-end’а.
У нас есть препроцессор, который может конвертировать подмножество Простого Рефала в исходный код на Модульном Рефале. При этом он написан на Модульном Рефале. Его можно аккуратно встроить в компилятор, получив при этом второй front-end. Следует заметить, что поддержка множественных front-end’ов в компиляторе уже имеется.
Частности: