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);  	}  } | 
