From 5b6f4b5de89a2bb0d63442e2651cf8d2ee0f4b10 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 17 Nov 2017 08:04:28 -0800 Subject: [PATCH] altos/lisp: Generate built-in lambda atoms for const creation Signed-off-by: Keith Packard --- src/lisp/ao_lisp.h | 32 ++++++-------------------------- src/lisp/ao_lisp_make_builtin | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/lisp/ao_lisp.h b/src/lisp/ao_lisp.h index 341996c0..77a94cf1 100644 --- a/src/lisp/ao_lisp.h +++ b/src/lisp/ao_lisp.h @@ -59,33 +59,13 @@ extern uint8_t ao_lisp_const[AO_LISP_POOL_CONST] __attribute__((aligned(4))); #define _ao_lisp_bool_true _bool(1) #define _ao_lisp_bool_false _bool(0) -#define _ao_lisp_atom_quote _atom(quote) -#define _ao_lisp_atom_set _atom(set) -#define _ao_lisp_atom_setq _atom(setq) -#define _ao_lisp_atom_car _atom(car) -#define _ao_lisp_atom_cdr _atom(cdr) -#define _ao_lisp_atom_cons _atom(cons) -#define _ao_lisp_atom_last _atom(last) -#define _ao_lisp_atom_length _atom(length) -#define _ao_lisp_atom_cond _atom(cond) -#define _ao_lisp_atom_else _atom(else) -#define _ao_lisp_atom_lambda _atom(lambda) -#define _ao_lisp_atom_led _atom(led) -#define _ao_lisp_atom_delay _atom(delay) -#define _ao_lisp_atom_pack _atom(pack) -#define _ao_lisp_atom_unpack _atom(unpack) -#define _ao_lisp_atom_flush _atom(flush) -#define _ao_lisp_atom_eval _atom(eval) -#define _ao_lisp_atom_read _atom(read) + #define _ao_lisp_atom_eof _atom(eof) -#define _ao_lisp_atom_save _atom(save) -#define _ao_lisp_atom_restore _atom(restore) -#define _ao_lisp_atom_call2fcc _atom(call/cc) -#define _ao_lisp_atom_collect _atom(collect) -#define _ao_lisp_atom_symbolp _atom(symbol?) -#define _ao_lisp_atom_builtin _atom(builtin?) -#define _ao_lisp_atom_symbolp _atom(symbol?) -#define _ao_lisp_atom_symbolp _atom(symbol?) +#define _ao_lisp_atom_else _atom(else) + +#define AO_LISP_BUILTIN_ATOMS +#include "ao_lisp_builtin.h" + #else #include "ao_lisp_const.h" #ifndef AO_LISP_POOL diff --git a/src/lisp/ao_lisp_make_builtin b/src/lisp/ao_lisp_make_builtin index b7b17cf4..ddc9a0b3 100644 --- a/src/lisp/ao_lisp_make_builtin +++ b/src/lisp/ao_lisp_make_builtin @@ -142,6 +142,22 @@ dump_consts(builtin_t[*] builtins) { printf("#endif /* AO_LISP_BUILTIN_CONSTS */\n"); } +void +dump_atoms(builtin_t[*] builtins) { + printf("#ifdef AO_LISP_BUILTIN_ATOMS\n"); + printf("#undef AO_LISP_BUILTIN_ATOMS\n"); + for (int i = 0; i < dim(builtins); i++) { + for (int j = 0; j < dim(builtins[i].lisp_names); j++) { + printf("#define _ao_lisp_atom_"); + cify_lisp(builtins[i].lisp_names[j]); + printf(" _atom("); + cify_lisp(builtins[i].lisp_names[j]); + printf(")\n"); + } + } + printf("#endif /* AO_LISP_BUILTIN_ATOMS */\n"); +} + void main() { if (dim(argv) < 2) { File::fprintf(stderr, "usage: %s \n", argv[0]); @@ -155,6 +171,7 @@ void main() { dump_funcs(builtins); dump_decls(builtins); dump_consts(builtins); + dump_atoms(builtins); } } -- 2.30.2