+ "eval", AO_LISP_FUNC_LAMBDA, builtin_eval,
+ "read", AO_LISP_FUNC_LAMBDA, builtin_read,
"lambda", AO_LISP_FUNC_NLAMBDA, builtin_lambda,
"lexpr", AO_LISP_FUNC_NLAMBDA, builtin_lexpr,
"nlambda", AO_LISP_FUNC_NLAMBDA, builtin_nlambda,
"lambda", AO_LISP_FUNC_NLAMBDA, builtin_lambda,
"lexpr", AO_LISP_FUNC_NLAMBDA, builtin_lexpr,
"nlambda", AO_LISP_FUNC_NLAMBDA, builtin_nlambda,
"set", AO_LISP_FUNC_LAMBDA, builtin_set,
"setq", AO_LISP_FUNC_MACRO, builtin_setq,
"cond", AO_LISP_FUNC_NLAMBDA, builtin_cond,
"set", AO_LISP_FUNC_LAMBDA, builtin_set,
"setq", AO_LISP_FUNC_MACRO, builtin_setq,
"cond", AO_LISP_FUNC_NLAMBDA, builtin_cond,
+ "progn", AO_LISP_FUNC_NLAMBDA, builtin_progn,
+ "while", AO_LISP_FUNC_NLAMBDA, builtin_while,
"print", AO_LISP_FUNC_LEXPR, builtin_print,
"patom", AO_LISP_FUNC_LEXPR, builtin_patom,
"+", AO_LISP_FUNC_LEXPR, builtin_plus,
"print", AO_LISP_FUNC_LEXPR, builtin_print,
"patom", AO_LISP_FUNC_LEXPR, builtin_patom,
"+", AO_LISP_FUNC_LEXPR, builtin_plus,
">", AO_LISP_FUNC_LEXPR, builtin_greater,
"<=", AO_LISP_FUNC_LEXPR, builtin_less_equal,
">=", AO_LISP_FUNC_LEXPR, builtin_greater_equal,
">", AO_LISP_FUNC_LEXPR, builtin_greater,
"<=", AO_LISP_FUNC_LEXPR, builtin_less_equal,
">=", AO_LISP_FUNC_LEXPR, builtin_greater_equal,
+ "delay", AO_LISP_FUNC_LAMBDA, builtin_delay,
+ "led", AO_LISP_FUNC_LEXPR, builtin_led,
- 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();