altos/lisp: use regular read-eval-print loop for make const
authorKeith Packard <keithp@keithp.com>
Fri, 11 Nov 2016 07:24:11 +0000 (23:24 -0800)
committerKeith Packard <keithp@keithp.com>
Mon, 20 Feb 2017 19:16:50 +0000 (11:16 -0800)
No need to open code this sequence of operations.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/lisp/Makefile
src/lisp/ao_lisp_make_const.c

index 9c99f05cdfab15493ddf1fa399ef147e750d5f22..aa54202172d0df977c7b13e28d2af8172bb6fd24 100644 (file)
@@ -19,6 +19,7 @@ SRCS=\
        ao_lisp_frame.c \
        ao_lisp_lambda.c \
        ao_lisp_eval.c \
+       ao_lisp_rep.c \
        ao_lisp_error.c 
 
 OBJS=$(SRCS:.c=.o)
index bb4afbfb322363c7a13140abab952378128819da..4fc43e583b6ca50f16d3f48cf264d2a23af9d650 100644 (file)
@@ -105,20 +105,12 @@ main(int argc, char **argv)
        ao_lisp_atom_set(ao_lisp_atom_poly(a),
                         ao_lisp_atom_poly(a));
 
-       for (;;) {
-               sexpr = ao_lisp_read();
-               if (!sexpr)
-                       break;
-               printf ("sexpr: ");
-               ao_lisp_poly_print(sexpr);
-               printf("\n");
-               val = ao_lisp_eval(sexpr);
-               if (ao_lisp_exception)
-                       exit(1);
-               printf("\t");
-               ao_lisp_poly_print(val);
-               printf("\n");
-       }
+       /* end of file value */
+       a = ao_lisp_atom_intern("eof");
+       ao_lisp_atom_set(ao_lisp_atom_poly(a),
+                        ao_lisp_atom_poly(a));
+
+       ao_lisp_read_eval_print();
 
        /* Reduce to referenced values */
        ao_lisp_collect();