vexil-lang
Compiler library for Vexil, a typed schema definition language with first-class encoding semantics.
Parses .vexil source, type-checks it, and produces a CompiledSchema that codegen backends consume. Handles single-file and multi-file projects with transitive import resolution.
Pipeline
source -> Lexer -> Parser -> AST -> Lower -> IR -> TypeCheck -> CompiledSchema
Single-file compilation
use ;
let result = compile;
if result.diagnostics.iter.any
if let Some = result.compiled
Multi-file projects
use ;
let loader = new;
let project = compile_project?;
// project: Vec<(String, CompiledSchema)> in topological order
Code generation
Pass a CompiledSchema or ProjectResult to any CodegenBackend:
use RustBackend;
use CodegenBackend;
// single file
let code: String = RustBackend.generate?;
// multi-file project
let files: = RustBackend.generate_project?;
Workspace crates
| Crate | Role |
|---|---|
vexil-lang |
This crate -- compiler library |
vexil-codegen-rust |
Rust code generation |
vexil-codegen-ts |
TypeScript code generation |
vexil-runtime |
Rust runtime for generated code |
vexil-store |
.vx text and .vxb binary file formats |
vexilc |
CLI compiler |
License
Licensed under either of MIT or Apache-2.0 at your option.