https://github.com/mrlsd/ilang
iLang - a functional programming language and compiler
https://github.com/mrlsd/ilang
compiler functional-programming ilang language programming programming-language
Last synced: about 2 months ago
JSON representation
iLang - a functional programming language and compiler
- Host: GitHub
- URL: https://github.com/mrlsd/ilang
- Owner: mrLSD
- License: mit
- Created: 2020-08-07T10:38:58.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2024-07-23T07:21:33.000Z (11 months ago)
- Last Synced: 2025-04-02T08:51:14.226Z (3 months ago)
- Topics: compiler, functional-programming, ilang, language, programming, programming-language
- Language: Rust
- Homepage:
- Size: 302 KB
- Stars: 9
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# iLang functional programming language
[](https://github.com/mrLSD/iLang/actions?query=workflow%3Aci)
[](https://coveralls.io/github/mrLSD/iLang?branch=master)**iLang** is a functional programming language from scratch.
It is general purpose, strongly typed, multi-paradigm programming
language that encompasses functional programming methods.**iLang** is a cross-platform and compiler based on LLVM.
**iLang** corresponds as a member of the ML language family.
Formal grammar based on EBNF, and it is described in the document [here](grammar.md).
Current main goals of the project
* [x] grammar creation
* [x] AST implementation
* [ ] compiler creation based on LLVMImplementation based on *Rust language*
to achieve the goals of reliability, efficiency, speed, memory safety.Parsing based on [nom](https://crates.io/crates/nom) a parser combinators library.
## Requirements
* Rust 50.0+
* LLVM 11+## Supported targets
* Linux x86
* macOS x86
* Windows x86## Useful commands
* `cargo build` - build project
* `make` - run rust clippy tool - collection of lints to catch common mistakes.
* `make test` - run unit tests
* `make cover` - run coverage tests and generate test coverage report. It's used grcov. For installation run `cargo install grcov`
* `make fmt` - run code formatting.
* `make check` - run `cargo check`
## Licanse: MIT