dazzle_core/scheme/
mod.rs

1//! Scheme interpreter (ported from OpenJade)
2//!
3//! This module contains the Scheme R4RS interpreter ported from OpenJade's `style/` directory.
4//!
5//! ## Architecture
6//!
7//! Following OpenJade's structure:
8//!
9//! - `value`: Scheme value types (corresponds to `ELObj` hierarchy)
10//! - `environment`: Variable bindings and lexical scoping (corresponds to Interpreter identifier tables)
11//! - `parser`: Lexer and S-expression parser (corresponds to `SchemeParser.cxx`)
12//! - `evaluator`: Core eval loop (corresponds to `Interpreter.cxx`)
13//! - `primitives/`: Built-in Scheme procedures (corresponds to `primitive.cxx`)
14//!
15//! ## OpenJade Correspondence
16//!
17//! | Dazzle Module          | OpenJade File              | Lines | Purpose                    |
18//! |------------------------|----------------------------|-------|----------------------------|
19//! | `value.rs`             | `style/ELObj.{h,cxx}`      | ~1500 | Value types & operations   |
20//! | `environment.rs`       | `style/Interpreter.cxx`    | ~500  | Variable bindings          |
21//! | `parser.rs`            | `style/SchemeParser.cxx`   | ~2500 | Tokenizer & parser         |
22//! | `evaluator.rs`         | `style/Interpreter.cxx`    | ~2000 | Eval loop & control flow   |
23//! | `primitives/`          | `style/primitive.cxx`      | ~5700 | 236 built-in procedures    |
24//!
25//! Total: ~12,200 lines C++ → estimated ~10,000 lines Rust
26
27pub mod environment;
28pub mod evaluator;
29pub mod parser;
30pub mod primitives;
31pub mod value;
32
33// Integration tests (cfg(test) only)
34#[cfg(test)]
35mod integration_tests;
36
37// Re-export key types for convenience
38pub use environment::Environment;
39pub use evaluator::{EvalError, EvalResult, Evaluator};
40pub use parser::{ParseError, Parser, Position, Tokenizer};
41pub use value::{PairData, Procedure, Value};