Для использования интерпретатора на операционных системах Windows (от 7 версии) достаточно скачать refal2.exe.
Запуск интерпретатора осуществляется посредством командной строки.
Для отображения списка доступных аргументов следует использовать команду:
C:\...> refal2 --help
Вызов интерпретатора без аргументов файлов означает, что исходный текст программы будет читаться со
стандартного ввода (stdin
). Такое поведение является стандартным для большинства консольных утилит.
Все сообщения об ошибках выдаются на стандартный поток ошибок (stderr
).
По всем возникающим вопросам относительно сборки или использования можно писать на почту refal2@yandex.ru или Антону Тодуа (более быстрый способ).
Большая просьба в случае выявления любых ошибок в интерпретаторе незамедлительно связываться с автором одним из вышеуказанных способов. В своём обращении указать суть ошибки и приложить исходный текст программы на котором она повторяется. Если вы не уверены где ошибка – в интерпретаторе или в Вашей программе, можно воспользоваться одним из предыдущих интерпретаторов (правда в них также есть ошибки).
Возможен запуск программы, состоящей из нескольких модулей, связь между которыми осуществляется посредством объявлений
entry
и extrn
, например:
Файл module1.ref |
Файл module2.ref |
* Текст модуля 2
entry hello
extrn print
hello = <print 'Hello, world!'> |
Запуск программы из примера выглядит следующим образом:
C:\...> refal2 module1.ref module2.ref
Несколько модулей могут располагаться и в одном файле,
тогда требуется явное указание директив start
и end
,
в остальных случаях указание этих директив является допустимым, но не обязательным.
Если Вы решили собрать интерпретатор из исходного кода, следует воспользоваться
инструкцией.
Для сборки необходимы компилятор языка C++
с поддержкой стандарта C++11
.
Теоретически можно попробовать собрать интерпретатор компилятором без поддержки C++11
.
Для этого надо выполнить следующие действия:
- Заменить
std::unique_ptr
наstd::shared_ptr
- Заменить
nullptr
на0
- Выразить
std::bitset::all()
черезstd::bitset::any()
,
например так:!(~mybitset).any()
Также при сборке из исходного кода следует убедиться, что символы препроцессора DEBUG
и _DEBUG
не определены.
Другими словами интерпретатор должен быть собран в конфигурации release