symbios/lib.rs
1//! # Symbios
2//!
3//! **A Sovereign Derivation Engine for Parametric L-Systems.**
4//!
5//! Symbios is a pure-Rust engine for generating Lindenmayer Systems, strictly adhering to the
6//! syntax and semantics defined in *The Algorithmic Beauty of Plants* (Prusinkiewicz & Lindenmayer, 1990).
7//!
8//! It is designed for high-performance, embedded, and WebAssembly environments where
9//! reliability and determinism are paramount.
10//!
11//! ## Key Features
12//!
13//! * **Sovereign Architecture**: Zero heavy dependencies.
14//! * **Structure-of-Arrays (SoA)**: Optimized memory layout for cache locality.
15//! * **Parametric**: Full support for arithmetic expressions in rules.
16//! * **Context-Sensitive**: `(k,l)-systems` with variable binding.
17//!
18//! ## Example
19//!
20//! ```rust
21//! use symbios::System;
22//!
23//! let mut sys = System::new();
24//! // Define a rule: A module 'A' grows if parameter 'x' is small
25//! sys.add_rule("A(x) : x < 10 -> A(x + 1) B(x)").unwrap();
26//! sys.set_axiom("A(0)").unwrap();
27//! sys.derive(5).unwrap();
28//! ```
29
30pub mod core;
31pub mod parser;
32pub mod system;
33pub mod vm;
34
35pub use crate::core::{SymbiosState, interner::SymbolTable};
36pub use crate::system::System;
37pub use crate::system::export::{ExportConfig, export_rule, export_rule_to_string};
38pub use crate::system::source::SourceGenotype;