- Feat: add `nest_ctx` and `fin_ctx` fns for working with context and environment - Feat: add block analyzer - Feat: add conditional statement analyzer
FromZero / Language
README in Russian · Documentation
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
printlinefunction 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 integersi8..i64- integers with specified sizeu8..u64- unsigned integers with specified sizestr- stringsbool- boolean
- Assignments
- Functions
- Classes and objects
Working examples of code can be found in exl/ directory.
Building
- Clone the repository:
git clone https://git.samsonium.dev/samsonium/fz-lang.git - Build:
make build-release
After this, a "build" directory will appear in the project root. It will contain two executable files:
fzc- a compilerfz- 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:
$ make debug-c FILE=exl/hw.fzs
To test new features, use test make target and the tests, defined in CMakeLists.txt.