27 wprintf( L
"TODO: handle ctrl-C in a more interesting way\n" );
43 if ( !
nilp( frame_pointer ) ) {
struct cons_pointer dec_ref(struct cons_pointer pointer)
Decrement the reference count of the object at this cons pointer.
struct cons_pointer make_cons(struct cons_pointer car, struct cons_pointer cdr)
Construct a cons cell from this pair of pointers.
#define NIL
a cons pointer which points to the special NIL cell
#define consp(conspoint)
true if conspoint points to a cons cell, else false
#define nilp(conspoint)
true if conspoint points to the special cell NIL, else false (there should only be one of these so it...
An indirect pointer to a cons cell.
void debug_print(wchar_t *message, int level)
print this debug message to stderr, if verbosity matches level.
#define DEBUG_REPL
Print messages debugging the read eval print loop.
struct cons_pointer oblist
The global object list/or, to put it differently, the root namespace.
struct cons_pointer lisp_repl(struct stack_frame *frame, struct cons_pointer frame_pointer, struct cons_pointer env)
Function: the read/eval/print loop.
void repl()
The read/eval/print loop.
void int_handler(int dummy)
Handle an interrupt signal.
struct stack_frame * get_stack_frame(struct cons_pointer pointer)
get the actual stackframe object from this pointer, or NULL if pointer is not a stackframe pointer.
struct cons_pointer make_stack_frame(struct cons_pointer previous, struct cons_pointer args, struct cons_pointer env)
Allocate a new stack frame with its previous pointer set to this value, its arguments set up from the...