- struct ao_lisp_stack *s;
- printf("Value: "); ao_lisp_poly_print(ao_lisp_v); printf("\n");
- printf("Stack:\n");
- for (s = ao_lisp_stack; s; s = ao_lisp_poly_stack(s->prev)) {
- printf("\t[\n");
- printf("\t\texpr: "); ao_lisp_poly_print(s->list); printf("\n");
- printf("\t\tstate: %s\n", state_names[s->state]);
-// printf("\t\tmacro: %s\n", s->macro ? "true" : "false");
- ao_lisp_error_cons ("sexprs: ", ao_lisp_poly_cons(s->sexprs));
- ao_lisp_error_cons ("values: ", ao_lisp_poly_cons(s->values));
- ao_lisp_error_frame(2, "frame: ", ao_lisp_poly_frame(s->frame));
-// ao_lisp_error_frame(2, "mframe: ", ao_lisp_poly_frame(s->macro_frame));
- printf("\t]\n");
+ char c;
+
+ while ((c = *format++) != '\0') {
+ if (c == '%') {
+ switch (c = *format++) {
+ case 'v':
+ ao_lisp_poly_write((ao_poly) va_arg(args, unsigned int));
+ break;
+ case 'p':
+ printf("%p", va_arg(args, void *));
+ break;
+ case 'd':
+ printf("%d", va_arg(args, int));
+ break;
+ case 's':
+ printf("%s", va_arg(args, char *));
+ break;
+ default:
+ putchar(c);
+ break;
+ }
+ } else
+ putchar(c);