Рефал-2 на языке Си++
2024-07-05 13:34![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Поисследовал я исходники Рефала, которые на Си. Вряд ли что полезное из них получится соорудить. Тяжёлый код в стиле 70-х, существенно завязанный на 32-битную архитектуру. Эта реализация была исходно сделана на ЕС ЭВМ на языке PL/I, и позже аккуратно переписана на Си для писишек. Код имеет историческую ценность, но развить его не выйдет. Переименовал репозиторий в refal2-legacy, и пусть лежит для коллекции. Главная ценность здесь - описание входного языка Рефал-2 и библиотеки функций.
Зато у нас имеется другая реализация Refal-2 на современном Си++. По входному языку она почти совпадает с Си-шной версией. Большинство тестов от той версии проходят и здесь. Этой версией можно попробовать заняться. Пока форкнул к себе для начала: github.com/sergev/refal2. Покажу как собрать refal2 и запустить простейший тест.
Зато у нас имеется другая реализация Refal-2 на современном Си++. По входному языку она почти совпадает с Си-шной версией. Большинство тестов от той версии проходят и здесь. Этой версией можно попробовать заняться. Пока форкнул к себе для начала: github.com/sergev/refal2. Покажу как собрать refal2 и запустить простейший тест.
Вызывается тривиально:git clone https://github.com/sergev/refal2.git
cd refal2
cmake -B build
cd build
make
Сделаем простой пример в файле hello.ref:$ ./refal2 --help
Usage: refal2 [OPTION]... [FILE]...
-c, --check check source FILE(s) for errors and exit
--help display this help and exit
--version output version information and exit
Report bugs to <refal2@yandex.ru>.
Запустим:hello start
entry go
extrn print
go = <print 'Hello World!'>
end
$ ./refal2 hello.ref
Hello World!
--------------------------------------------------------------------------------
Execution result: ok.
Field of view:
'Hello World!'
no subject
Date: 2024-07-06 00:05 (UTC)no subject
Date: 2024-07-06 05:51 (UTC)no subject
Date: 2024-07-06 06:07 (UTC)