Files
@ 3845071002b0
Branch filter:
Location: CSY/reowolf/src/protocol/eval/mod.rs - annotation
3845071002b0
1.2 KiB
application/rls-services+xml
reorganization of evaluator, WIP on hooking up to old system
6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 3845071002b0 6810fd00a570 6810fd00a570 6810fd00a570 6810fd00a570 3845071002b0 3845071002b0 6810fd00a570 3845071002b0 3845071002b0 6810fd00a570 | /// eval
///
/// Evaluator of the generated AST. Note that we use some misappropriated terms
/// to describe where values live and what they do. This is a temporary
/// implementation of an evaluator until some kind of appropriate bytecode or
/// machine code is generated.
///
/// Code is always executed within a "frame". For Reowolf the first frame is
/// usually an executed component. All subsequent frames are function calls.
/// Simple values live on the "stack". Each variable/parameter has a place on
/// the stack where its values are stored. If the value is not a primitive, then
/// its value will be stored in the "heap". Expressions are treated differently
/// and use a separate "stack" for their evaluation.
///
/// Since this is a value-based language, most values are copied. One has to be
/// careful with values that reside in the "heap" and make sure that copies are
/// properly removed from the heap..
///
/// Just to reiterate: this is a temporary wasteful implementation. A proper
/// implementation would fully fill out the type table with alignment/size/
/// offset information and lay out bytecode.
mod value;
mod store;
mod executor;
pub use value::{Value, ValueGroup};
pub use executor::{EvalContinuation, Prompt};
|