diff options
author | Keith Packard <keithp@keithp.com> | 2018-01-06 17:29:10 -0800 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2018-01-06 17:31:43 -0800 |
commit | 16061947d4376b41e596d87f97ec53ec29d17644 (patch) | |
tree | f7ad08f8810b0ea78cf282048eacb46d441a2ee1 /src/scheme/ao_scheme_make_builtin | |
parent | 39df849f0717d92a7d5bdf8aa5904bd4db1b467f (diff) |
altos/scheme: Add ports. Split scheme code up.
And lots of other changes, including freeing unreferenced atoms.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'src/scheme/ao_scheme_make_builtin')
-rw-r--r-- | src/scheme/ao_scheme_make_builtin | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/scheme/ao_scheme_make_builtin b/src/scheme/ao_scheme_make_builtin index a4d8326f..5b76944f 100644 --- a/src/scheme/ao_scheme_make_builtin +++ b/src/scheme/ao_scheme_make_builtin @@ -227,6 +227,22 @@ dump_atom_names(builtin_t[*] builtins) { printf("#endif /* AO_SCHEME_BUILTIN_ATOM_NAMES */\n"); } +void +dump_syntax_atoms(builtin_t[*] builtins) { + printf("#ifdef AO_SCHEME_BUILTIN_SYNTAX_ATOMS\n"); + printf("#undef AO_SCHEME_BUILTIN_SYNTAX_ATOMS\n"); + printf("static const char *syntax_atoms[] = {\n"); + for (int i = 0; i < dim(builtins); i++) { + if (is_atom(builtins[i])) { + for (int j = 0; j < dim(builtins[i].lisp_names); j++) { + printf("\t\"%s\",\n", builtins[i].lisp_names[j]); + } + } + } + printf("};\n"); + printf("#endif /* AO_SCHEME_BUILTIN_SYNTAX_ATOMS */\n"); +} + bool has_feature(string[*] features, string feature) { @@ -245,7 +261,9 @@ dump_features(builtin_t[*] builtins) { string feature = builtins[i].feature; if (!has_feature(features, feature)) { features[dim(features)] = feature; + printf("#ifndef AO_SCHEME_NO_FEATURE_%s\n", feature); printf("#define AO_SCHEME_FEATURE_%s\n", feature); + printf("#endif /* AO_SCHEME_NO_FEATURE_%s */\n", feature); } } } @@ -269,6 +287,7 @@ void main() { dump_consts(builtins); dump_atoms(builtins); dump_atom_names(builtins); + dump_syntax_atoms(builtins); dump_features(builtins); } } |