Module scheme

Module scheme 

Source
Expand description

Scheme interpreter (ported from OpenJade)

This module contains the Scheme R4RS interpreter ported from OpenJade’s style/ directory.

§Architecture

Following OpenJade’s structure:

  • value: Scheme value types (corresponds to ELObj hierarchy)
  • environment: Variable bindings and lexical scoping (corresponds to Interpreter identifier tables)
  • parser: Lexer and S-expression parser (corresponds to SchemeParser.cxx)
  • evaluator: Core eval loop (corresponds to Interpreter.cxx)
  • primitives/: Built-in Scheme procedures (corresponds to primitive.cxx)

§OpenJade Correspondence

Dazzle ModuleOpenJade FileLinesPurpose
value.rsstyle/ELObj.{h,cxx}~1500Value types & operations
environment.rsstyle/Interpreter.cxx~500Variable bindings
parser.rsstyle/SchemeParser.cxx~2500Tokenizer & parser
evaluator.rsstyle/Interpreter.cxx~2000Eval loop & control flow
primitives/style/primitive.cxx~5700236 built-in procedures

Total: ~12,200 lines C++ → estimated ~10,000 lines Rust

Re-exports§

pub use environment::Environment;
pub use evaluator::EvalError;
pub use evaluator::EvalResult;
pub use evaluator::Evaluator;
pub use parser::ParseError;
pub use parser::Parser;
pub use parser::Position;
pub use parser::Tokenizer;
pub use value::PairData;
pub use value::Procedure;
pub use value::Value;

Modules§

environment
Scheme environment (variable bindings and lexical scoping)
evaluator
Scheme evaluator (eval loop)
parser
Scheme parser (lexer + S-expression parser)
primitives
Scheme primitive procedures
value
Scheme value types