54 lines
2.5 KiB
Markdown
54 lines
2.5 KiB
Markdown
# FromZero / Language
|
||
|
||
[README in English](./README.md) · [Документация](./docs/ru/index.md)
|
||
|
||
**FromZero/Language** - пакет из JIT-компилятора и виртуальной машины для языка FZL.
|
||
|
||
## Текущие возможности
|
||
|
||
На данный момент язык имеет:
|
||
|
||
- Встроенную функцию `printline` для вывода аргумента в stdout
|
||
- Строковый, булев и числовой литералы
|
||
- Арифметические операции: сложение, вычитание, умножение, деление, модуло, возведение в степень
|
||
- Декларация переменных со следующими типами:
|
||
- `uint`, `int` - целые числа размером с машинное слово
|
||
- `i8`..`i64` - целые числа со знаком
|
||
- `u8`..`u64` - целые числа без знака
|
||
- `str` - строки
|
||
- `bool` - булевы
|
||
- Присваивание
|
||
- Функции
|
||
- Классы и объекты
|
||
|
||
Примеры кода лежат в директории `exl/`.
|
||
|
||
|
||
## Инструкции по сборке
|
||
|
||
1. Склонировать проект: `git clone https://git.samsonium.dev/samsonium/fz-lang.git`
|
||
2. Собрать проект: `make build`
|
||
|
||
После этого в корне появится директория **"build"**. В ней будут лежать два скомпилированных бинарных файла:
|
||
|
||
- `fzc` - компилятор
|
||
- `fz` - виртуальная машина
|
||
|
||
Оба бинарных файла предоставляют справку по использованию при запуске с флагом `--help` (или `-h`).
|
||
|
||
|
||
## Гайдлайн по разработке
|
||
|
||
Желательно иметь редактор кода, поддерживающий Clang LSP, так как в проекте есть готовые настройки для
|
||
форматтера в виде файла `.clang-format`.
|
||
|
||
Для дебаггинга есть два таргета в CMake: `build-c` для компилятора и `build-vm` для виртуальной машины.
|
||
Оба таргета позволяют указать переменную с путём файла. Например, так:
|
||
|
||
```shell
|
||
$ make debug-c FILE=exl/hw.fzs
|
||
```
|
||
|
||
Для проверки новых фич, нужно использовать make-таргет `test`, а тесты писать в `CMakeLists.txt`.
|
||
|