/MSCP-A

Суперкомпилятор MSCP-A

Primary LanguageHTMLMIT LicenseMIT

Суперкомпилятор MSCP-A, версия январь 2020.

Чтобы запустить суперкомпилятор MSCP-A, необходимо иметь на компьютере компилятор Рефала, который
можно скачать по следующей ссылке: http://www.botik.ru/pub/local/scp/refal5/

Файлы Refc.exe, Reftr.exe, Refgo.exe, xmlparse.dll, xmltok.dll должны находиться в той же папке, что
и MSCP-A, либо исполняемыей файлы Рефала должны быть доступны через системный файл путей к исполняемым файлам.


Для сборки исполняемых модулей из исходных текстов необходимо запустить файл MSCPcompile.bat 
(без аргументов).

После этого MSCP-A запускается посредством запуска batch-файла MSCPdo.bat с двумя дополнительными аргументами.
Первый -- имя рефал-программы, которая подается на вход суперкомпилятору (можно без расширения .ref). 
Второй (опциональный) --- имя файла с результатами суперкомпиляции.
Если при запуске нет второго аргумента, а первый аргумент есть [file].ref, то будет порождена
программа с именем rsd_[file].ref.

Если файл, соответствующий первому аргументу, в папке запуска MSCP не обнаружен, суперкомпилятор
проверит его наличие в дочерней папке tests и если файл обнаружится там, запишет результат туда же, если 
пользователь явно не указал путь к файлу-результату суперкомпиляции. 

Если отсутствуют оба аргумента, по умолчанию суперкомпилятор обработает файл test.ref и поместит результат
этой обработки в файл rsd_test.ref. Если файл test.ref отсутствует в подпапке tests суперкомпилятора, запуск MSCP без
аргументов экстренно завершится с ошибкой.

Подпапки mscplog, tests и mscptest являются служебными и не должны удаляться!

Примеры запуска:

> mscpdo.bat test.ref a --- осуществляется суперкомпиляция файла test.ref из текущей папки либо подпапки \tests, 
  результат помещается в файл a.ref той же папки суперкомпилятора, что и исходный файл.
> mscpdo.bat test_fib --- осуществляется суперкомпиляция файла test_fib.ref, 
  результат помещается в файл rsd_test_fib.ref. Если файл test_fib.ref в текущей папке отсутствует, 
  но присутствует в ее подпапке tests, он будет считан оттуда, и результат будет помещён туда же.

Список модулей MSCP-A

accessMSCP.ref --- модуль доступа к структурам суперкомпилятора.
analyzeFunDef.ref --- модуль предварительного анализа свойств входных программ.
Unfold_SCP.ref --- главный модуль суперкомпилятора.
basics.ref --- модуль арифметических функций и функций над множествами. Также содержит общую функцию подстановки и общие функции работы с термами.
Stack.ref --- модуль работы со стеком.
Drive.ref --- модуль алгоритма прогонки.
Generalize.ref --- модуль алгоритмов обобщения и вложения.
WordEquations.ref --- базовый модуль алгоритмов преобразования уравнений в словах.
WordEqsCases.ref ---  модуль развёртки уравнений в словах.
DiofEqs.ref --- модуль решения диофантовых уравнений.
residual.ref --- модуль преобразования дерева вычислений программы в определения функций.