refal-5-lambda
refal-5-lambda copied to clipboard
Объединить парсеры Рефала-5λ и Простого Рефала
Мотивация
Задача #91, и, в перспективе, не только она, подразумевает расширение синтаксиса. Но, поскольку используется два front-end’а, новые возможности приходится параллельно вносить в каждый из них.
Рефал-5λ и Простой Рефал отличаются лексикой и незначительно синтаксисом. Основное отличие — имена по умолчанию идентификаторы в первом и указатели на функцию во втором. В Рефале-5λ, указатели на функцию предваряются знаком &
, в Простом Рефале идентификаторы предваряются знаком #
. Если унифицировать имена лексем, то синтаксический анализ можно объединить.
Синтаксический анализатор Рефала-5λ уже содержит флаг, описывающий вид синтаксиса — классический или расширенный режим. Его можно использовать и для того, чтобы отличать Рефал-5λ от Простого Рефала.
Что делать
Нужно унифицировать имена лексем (пересекающиеся) для Рефала-5λ и Простого Рефала и расширить R5-Parser.ref
для поддержки Простого Рефала. После чего SR-Parser.sref
можно будет удалить.