-
Notifications
You must be signed in to change notification settings - Fork 105
CSE Machine
The CSE machine is an evaluation model for Source languages, based on Chapters 3 and 4 of Structure and Interpretation of Computer Programs (SICP). It is used to evaluate programs in Source §4 Explicit-Control, as well as display the CSE Machine visualization for programs in Source §3 and Source §4.
The specific functions that implement the CSE machine can be found in src/cse-machine/interpreter.js.
The CSE machine consists of three key components:
-
Control: A stack that stores syntax tree nodes to be evaluated and instructions to be executed.
-
Stash: A stack of values that is manipulated through instructions.
-
Environment: A structure containing all bindings in the program, organized in terms of scope.
The Control stack is represented by the class Control
, which is an alias for Stack<ControlItem>
. Each ControlItem
is either:
- A
Node
: an Abstract Syntax Tree node representing part of the program to be evaluated; or - An
Instr
: an instruction to be executed on the machine.
The Stash is represented by the class Stash
, which is an alias for Stack<Value>
. Each Value
represents some intermediate value generated during evaluation of the program.