How michaelb3l/ppl2_mikiraz works
This repository implements an L3 Scheme-like language: source text is parsed into an AST, then evaluated using either an environment-based interpreter or a substitution-based interpreter. The language includes procedures, primitive operations, quoted S-expressions, and classes/objects. The tree and excerpts support both interpreter paths and their shared runtime layers; README content is absent, and the q3 entry point was not excerpted, so its exact orchestration is unclear.
Main entry points: L3-ast.ts L3 AST Parser · L3-eval-sub.ts Substitution Evaluator · result.ts Result Handling · L3-eval-env.ts Environment Evaluator
Components 18
Language Front End
- S-expression Adapter
shared/parser.ts - L3 AST Parser
L3/L3-ast.ts - Syntax Transformation
L3/SyntacticTransformation.ts
Evaluation Runtime
- Environment Evaluator
L3/L3-eval-env.ts - Substitution Evaluator
L3/L3-eval-sub.ts - Environment Frames
L3/L3-env-env.ts - Substitution Environment
L3/L3-env-sub.ts - Expression Substitution
L3/substitute.ts - Runtime Values
L3/L3-value.ts - Primitive Operations
L3/evalPrimitive.ts
Shared Utilities
- Result Handling
shared/result.ts - List Operations
shared/list.ts - Type Predicates
shared/type-predicates.ts - Value Formatting
shared/format.ts - Optional Values
shared/optional.ts
Program Interface
- q3 Interface
q3.ts
Other components
- Language User
- S-expression Parser
Connections 35
- Language User → q3 Interface: provides program
- q3 Interface → L3 AST Parser: uses syntax
q3.ts - q3 Interface → Result Handling: uses results
q3.ts - S-expression Adapter → S-expression Parser: parses input
shared/parser.ts - L3 AST Parser → S-expression Adapter: parses expressions
L3/L3-ast.ts - L3 AST Parser → Runtime Values: builds values
L3/L3-ast.ts - L3 AST Parser → Result Handling: returns results
L3/L3-ast.ts - L3 AST Parser → List Operations: uses lists
L3/L3-ast.ts - L3 AST Parser → Type Predicates: checks syntax
L3/L3-ast.ts - L3 AST Parser → Value Formatting: formats errors
L3/L3-ast.ts - Syntax Transformation → L3 AST Parser: uses syntax
L3/SyntacticTransformation.ts - Environment Evaluator → L3 AST Parser: evaluates expressions
L3/L3-eval-env.ts - Environment Evaluator → Environment Frames: looks up bindings
L3/L3-eval-env.ts - Environment Evaluator → Runtime Values: creates closures
L3/L3-eval-env.ts - Environment Evaluator → Primitive Operations: applies primitives
L3/L3-eval-env.ts - Environment Evaluator → S-expression Adapter: parses input
L3/L3-eval-env.ts - Environment Evaluator → Result Handling: propagates results
L3/L3-eval-env.ts - Substitution Evaluator → L3 AST Parser: evaluates expressions
L3/L3-eval-sub.ts - Substitution Evaluator → Substitution Environment: looks up bindings
L3/L3-eval-sub.ts - Substitution Evaluator → Runtime Values: creates objects
L3/L3-eval-sub.ts - Substitution Evaluator → Expression Substitution: substitutes arguments
L3/L3-eval-sub.ts - Substitution Evaluator → Primitive Operations: applies primitives
L3/L3-eval-sub.ts - Substitution Evaluator → S-expression Adapter: parses input
L3/L3-eval-sub.ts - Substitution Evaluator → Result Handling: propagates results
L3/L3-eval-sub.ts - Environment Frames → Runtime Values: stores values
L3/L3-env-env.ts - Environment Frames → L3 AST Parser: stores procedures
L3/L3-env-env.ts - Substitution Environment → Runtime Values: stores values
L3/L3-env-sub.ts - Primitive Operations → Runtime Values: operates on values
L3/evalPrimitive.ts - Primitive Operations → Result Handling: returns results
L3/evalPrimitive.ts - Primitive Operations → List Operations: uses lists
L3/evalPrimitive.ts - Primitive Operations → Type Predicates: checks types
L3/evalPrimitive.ts - Result Handling → List Operations: maps lists
shared/result.ts - Result Handling → Optional Values: converts values
shared/result.ts - S-expression Adapter → Result Handling: returns parse result
shared/parser.ts - S-expression Adapter → Type Predicates: checks tokens
shared/parser.ts