Этот репозиторий содержит компилятор языка RuC. Авторство принадлежит Андрею Николаевичу Терехову, заведующему кафедрой "Системного программирования" СПбГУ.
С клонируйте репозиторий по общедоступной ссылке:
$ git clone https://github.com/andrey-terekhov/RuCЛибо с сервера компании:
$ git clone ssh://git@gitlab.softcom.su:22500/ruc/ruc.gitДля конфигурирования и сборки, войдите в каталог и воспользуйтесь:
$ mkdir -p build && cd build && cmake .. && cd ..
$ cmake --build build --config ReleaseСохранение аутентификационных данных репозитория:
$ git config credential.helper storeСоединение локального репозитория с оригинальным:
$ git remote add upstream https://github.com/andrey-terekhov/RuC
$ git remote set-url --push upstream DISABLEСтягивание изменений:
$ git fetch upstream
$ git rebase upstream/masterПеред сборкой и использованием языка РуСи, необходимо установить систему сборки CMake и компилятор языка С/С++ от Microsoft, входящий в состав Visual Studio.
Прямые ссылки на загрузку: CMake 3.17.3 x64, CMake 3.17.3 x86.
При установке CMake, также необходимо отметить любой из пунктов Add CMake to the system PATH, как показано на картинке.
А при установке Visual Studio, необходимо добавить в сборку Разработка классических приложений на C++.
После этого можно приступить к сборке проекта. Скачайте проект любым git клиентом, например, Git BASH и откройте папку проекта из Windows.
Для первоначальной настройки проекта введите команду:
$ mkdir build && cd build && cmake .. && cd ..Для сборки/пересборки проекта используйте, вызываемую из корня:
$ cmake --build build --config ReleaseИсполняемый файл ruc.exe будет помещен в директорию build\Release. При запуске ему необходимо передать путь к РуСи коду в качестве параметра. При указании пути к коду используйте только прямой слеш (/)! Пример:
$ ruc.exe ../../tests/test.cСгенерированные коды будут помещены в папку, из которой был вызван транслятор.
Компилятор РуСи поддерживает параметризацию из командной строки, порядок не важен, повторения игнорируются. В качестве параметров можно передавать:
- Пути к файлам
- Пути к библиотекам
- Флаги компиляции
- Примитивные макросы (в будущем)
Общие флаги:
-o- флаг переопределения выходного файла (использование-o export.txt)-I- флаг поиска библиотек (использование-Ipath/to/headers)-D- флаг предопределенного макроса (использование-DVAR=1024, эквивалентно#define VAR 1024)-Wno- флаг отключения восстановления после ошибок
Флаги виртуальной машины:
-VM- флаг компиляции в коды виртуальной машины РуСи (по умолчанию)- Флаги сжатия выходных таблиц
-i64,-i32,-i16,-i8- использование знаковых типов, размера 8, 4, 2 и 1 байт-u64,-u32,-u16,-u8- использование беззнаковых типов, соответственно
Флаги LLVM:
-LLVM- флаг компиляции в LLVM коды--x86_64- флаг целевой платформы Intel (по умолчанию)--mipsel- флаг целевой платформы MIPS
Usage: ./test.sh [KEY] ...
Description:
This script tests all files from "../tests" directory.
Folder "../tests/errors" should contain tests with expected error.
Executable tests should be in "../tests/executable" directory.
To ignore invalid tests output, use "*/warnings/*" subdirectory.
For tests with expected runtime error, use "*/errors/*" subdirectory.
For multi-file tests, use "*/include/*" subdirectory.
Failed tests for debug build only will be marked with "(Debug)".
Keys:
-h, --help To output help info.
-s, --silence For silence testing.
-f, --fast Fast testing, Release builds only.
-i, --ignore Ignore errors & executing stages.
-r, --remove Remove build folder before testing.
-d, --debug Switch on debug tracing.
-v, --virtual Set RuC virtual machine release.
-o, --output Set output printing time (default = 0.0).
-w, --wait Set waiting time for timeout result (default = 2).

