54 lines
1.6 KiB
Markdown
54 lines
1.6 KiB
Markdown
# 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-release`
|
|
|
|
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`.
|
|
|