LMNtal compiler written in Rust (WIP).
This repository is a Rust workspace with the following crates:
lmntalcThe supported compiler library and CLI surface.lmntalc-coreInternal backend-neutral compiler stages and shared diagnostics.lmntalc-ideInternal editor-analysis layer used by the embedded language server.lmntal-language-serverThe supported LMNtal language-server surface, maintained in this repository undercrates/lmntal-language-server.
cargo install lmntalcTo install the language server from this workspace:
cargo install --path crates/lmntal-language-servergit clone https://github.com/lmntal/lmntalc.git
cd lmntalc
cargo install --path .To build or run the language server from source:
cargo run -p lmntal-language-serverlmntalc <input-file>or
lmntalc -t <target-language> <input-file>Then, the compiled code will be written to the file with the same name as the input file, but with the extension of the target language.
To specify the output file, use -o option.
lmntalc -t <target-language> -o <output-file> <input-file>For more information, use lmntalc --help.
- Full support of parsing HyperLMNtal.
- Simple static analysis on parse tree level.
- Support of compiling Flat HyperLMNtal to target languages.
- C++ 20
- Java 17
- Python 3.11
Behavioral Difference from lmntal-compiler
a + b is the same with '+'(a, b) in lmntal-compiler,
but they are different in LMNtalc.
- Rules in membranes in top level rule is not supported. i.e. Cannot generate membranes with rules.
This software is released under the MIT License, see LICENSE.