X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fscheme%2Fao_scheme_make_builtin;h=5b76944fce349840dcdc01d1f3a985f2f68ee5da;hb=16061947d4376b41e596d87f97ec53ec29d17644;hp=a4d8326ff904c332624e16e92178e8b764b9f68d;hpb=4bfce37e7567d9c2a09ea4da8113e7639516ed6e;p=fw%2Faltos 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); } }