# FromZero / Language [README in Russian](./README.ru.md) ยท [Documentation](./docs/en/index.md) **FromZero/Language** is a package consisting of a JIT compiler and a virtual machine for the FZL language. ## Features At the moment, the language has the following capabilities: - Builtin `printline` function for printing argument to stdout - String and numeric literals - Arithmetic operations: addition, subtraction, multiplication, division, modulo, power - Variables declaration with following types: - `uint`, `int` - for the machine-word size integers - `i8`..`i64` - integers with specified size - `u8`..`u64` - unsigned integers with specified size - `str` - strings - `bool` - boolean - Assignments - Functions - Classes and objects Working examples of code can be found in `exl/` directory. ## Building 1. Clone the repository: `git clone https://git.samsonium.dev/samsonium/fz-lang.git` 2. Build: `make build` After this, a "build" directory will appear in the project root. It will contain two executable files: - `fzc` - a compiler - `fz` - virtual machine Both executables have usage help that can be displayed using `--help` flag (or `-h`). ## Development guideline You need a code editor with Clang LSP support because of `.clang-format` file in the project root. This file provides set up codestyle rules. There is two targets in Makefile for debugging purposes: `build-c` for the compiler and `build-vm` for the VM. Each target can be called with `FILE` variable. For example: ```shell $ make debug-c FILE=exl/hw.fzs ``` To test new features, use `test` make target and the tests, defined in `CMakeLists.txt`.