3 releases
Uses new Rust 2024
| new 0.1.11 | Jun 3, 2026 |
|---|---|
| 0.1.1 | May 26, 2026 |
| 0.1.0 | May 25, 2026 |
#619 in Programming languages
155KB
3K
SLoC
w16-lib
Библиотека для использования W16.
Как использовать W16
Если вы делаете свой язык, и хотите использовать W16 как runtime — во первых огромное спасибо, за то что выбрали именно w16! Во вторых, инструкция как использовать W16:
- Подключите библиотеку:
cargo add w16-lib
- Сделайте транслятор вашего языка, в W16 HIR, вы можете транслировать ваш язык в
- HIR в виде текста.
- HIR в виде AST.
Либо вы можете транслировать в:
- W16 MIR.
- W16 Bytecode.
И в итоге вот как будет выглядеть использование W16(псевдокод):
use w16_lib::{run_hir_text_as, ExecutionMode};
fn main() {
let source: &str = /* HIR в виде текста */;
/// Выполнить ваш W16 HIR в виде текста
let result: Result<RunResult, W16Error> = run_hir_text_as(&source, ExecutionMode::Interpreter /* Либо "ExecutionMode::Jit", если хотите JIT-компилировать*/);
}
Как использовать w16 ( только примеры )
- Выполнить текстовый HIR
use w16_lib::{run_hir_text_as, ExecutionMode};
fn main() {
let source: &str = /* HIR в виде текста */;
/// Выполнить ваш W16 HIR в виде текста
let result: Result<RunResult, W16Error> = run_hir_text_as(&source, ExecutionMode::Interpreter /* Либо "ExecutionMode::Jit", если хотите JIT-компилировать*/);
}
- Выполнить HIR в виде
Module
Для этого подключите библиотеку w16-ir:
cargo add w16-ir
use w16_lib::{run_hir_text_as, ExecutionMode};
use w16_ir::hir::Module;
fn main() {
let source: Module = Module { name: /* Название модуля. String */, constants: /* Константы в модуле. Vec<ConstDecl> */, functions: /* Функции в модуле. Vec<Function> */};
let result: Result<RunResult, W16Error> = W16::new().run_hir_ast(&source);
}
Dependencies
~10–21MB
~278K SLoC