static int
ao_lisp_eval_sexpr(void)
{
- DBGI("sexpr: "); DBG_POLY(ao_lisp_v); DBG("\n");
+ DBGI("sexpr: %v\n", ao_lisp_v);
switch (ao_lisp_poly_type(ao_lisp_v)) {
case AO_LISP_CONS:
if (ao_lisp_v == AO_LISP_NIL) {
ao_lisp_stack->sexprs = prev->sexprs;
DBGI(".. start macro\n");
- DBGI(".. sexprs "); DBG_POLY(ao_lisp_stack->sexprs); DBG("\n");
- DBGI(".. values "); DBG_POLY(ao_lisp_stack->values); DBG("\n");
+ DBGI("\t.. sexprs "); DBG_POLY(ao_lisp_stack->sexprs); DBG("\n");
+ DBGI("\t.. values "); DBG_POLY(ao_lisp_stack->values); DBG("\n");
DBG_FRAMES();
/* fall through ... */
DBGI(".. frame "); DBG_POLY(ao_lisp_frame_poly(ao_lisp_frame_current)); DBG("\n");
DBGI(".. saved frame "); DBG_POLY(ao_lisp_stack->frame); DBG("\n");
if (!ao_lisp_stack->sexprs) {
- ao_lisp_v = AO_LISP_NIL;
+ ao_lisp_v = _ao_lisp_bool_false;
ao_lisp_stack->state = eval_val;
} else {
ao_lisp_v = ao_lisp_poly_cons(ao_lisp_stack->sexprs)->car;
{
ao_lisp_v = _v;
+ ao_lisp_frame_init();
+
if (!ao_lisp_stack_push())
return AO_LISP_NIL;