From cadf047530b4bb773f94384dc3039387d4f9deb4 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Sun, 17 May 2020 20:50:12 +0200 Subject: [PATCH] core: Split-out symbol.c. * src/mes.c (init_symbol, mes_symbols): Move to .. * src/symbol.c: New file. * build-aux/configure-lib.sh (mes_SOURCES): Add it. * simple.make: Likewise. * include/mes/mes.h: Declare init_symbols. --- build-aux/configure-lib.sh | 1 + build-aux/snarf.sh | 1 + include/mes/mes.h | 2 + simple.make | 4 +- src/mes.c | 190 +-------------------------------- src/symbol.c | 212 +++++++++++++++++++++++++++++++++++++ 6 files changed, 220 insertions(+), 190 deletions(-) create mode 100644 src/symbol.c diff --git a/build-aux/configure-lib.sh b/build-aux/configure-lib.sh index 558f593c..23e7d518 100644 --- a/build-aux/configure-lib.sh +++ b/build-aux/configure-lib.sh @@ -443,5 +443,6 @@ src/posix.c src/reader.c src/string.c src/struct.c +src/symbol.c src/vector.c " diff --git a/build-aux/snarf.sh b/build-aux/snarf.sh index 7517f13d..a388f174 100755 --- a/build-aux/snarf.sh +++ b/build-aux/snarf.sh @@ -37,6 +37,7 @@ trace "SNARF$snarf posix.c" ${srcdest}build-aux/mes-snarf.scm src/posix.c trace "SNARF$snarf reader.c" ${srcdest}build-aux/mes-snarf.scm src/reader.c trace "SNARF$snarf strings.c" ${srcdest}build-aux/mes-snarf.scm src/string.c trace "SNARF$snarf struct.c" ${srcdest}build-aux/mes-snarf.scm src/struct.c +trace "SNARF$snarf symbol.c" ${srcdest}build-aux/mes-snarf.scm src/symbol.c trace "SNARF$snarf vector.c" ${srcdest}build-aux/mes-snarf.scm src/vector.c for i in src/*.symbols.h; do diff --git a/include/mes/mes.h b/include/mes/mes.h index 20cfc95a..bc990c86 100644 --- a/include/mes/mes.h +++ b/include/mes/mes.h @@ -32,6 +32,7 @@ struct scm }; /* mes */ +char *g_datadir; int g_debug; char *g_buf; SCM g_continuations; @@ -85,6 +86,7 @@ SCM gc_init (); SCM gc_peek_frame (); SCM gc_pop_frame (); SCM gc_push_frame (); +SCM init_symbols (); SCM init_time (SCM a); SCM make_builtin_type (); SCM make_bytes (char const *s, size_t length); diff --git a/simple.make b/simple.make index 24149fac..955f5229 100644 --- a/simple.make +++ b/simple.make @@ -60,6 +60,7 @@ MES_SOURCES = \ src/reader.c \ src/string.c \ src/struct.c \ + src/symbol.c \ src/vector.c LIB_SOURCES = \ @@ -110,7 +111,8 @@ M2_PLANET_INCLUDES = \ include/mes/mes.h \ include/mes/m2.h \ include/mes/builtins.h \ - include/mes/constants.h + include/mes/constants.h \ + include/mes/symbols.h M2_PLANET_PREFIX = ../M2-Planet M2_PLANET_SOURCES = \ diff --git a/src/mes.c b/src/mes.c index b550347d..6dfbbd80 100644 --- a/src/mes.c +++ b/src/mes.c @@ -311,198 +311,10 @@ mes_g_stack (SCM a) /*:((internal)) */ return r0; } -void -init_symbol (long x, long type, char const *name) -{ - TYPE (x) = type; - int length = strlen (name); - SCM string = make_string (name, length); - CAR (x) = length; - CDR (x) = STRING (string); - hash_set_x (g_symbols, string, x); -} - -SCM -mes_symbols () /*:((internal)) */ -{ - g_free = cell_symbol_test + 1; - g_symbol_max = g_free; - g_symbols = make_hash_table_ (500); - - int size = VALUE (struct_ref_ (g_symbols, 3)); - // Weird: m2-planet exits 67 here...[printing size = 100] - // if (size == 0) exit (66); - // if (!size) exit (67); - - init_symbol (cell_nil, TSPECIAL, "()"); - init_symbol (cell_f, TSPECIAL, "#f"); - init_symbol (cell_t, TSPECIAL, "#t"); - init_symbol (cell_dot, TSPECIAL, "."); - init_symbol (cell_arrow, TSPECIAL, "=>"); - init_symbol (cell_undefined, TSPECIAL, "*undefined*"); - init_symbol (cell_unspecified, TSPECIAL, "*unspecified*"); - init_symbol (cell_closure, TSPECIAL, "*closure*"); - init_symbol (cell_circular, TSPECIAL, "*circular*"); - init_symbol (cell_begin, TSPECIAL, "*begin*"); - init_symbol (cell_call_with_current_continuation, TSPECIAL, "*call/cc*"); - - init_symbol (cell_vm_apply, TSPECIAL, "core:apply"); - init_symbol (cell_vm_apply2, TSPECIAL, "*vm-apply2*"); - init_symbol (cell_vm_begin, TSPECIAL, "*vm-begin*"); - init_symbol (cell_vm_begin_eval, TSPECIAL, "*vm:begin-eval*"); - init_symbol (cell_vm_begin_expand, TSPECIAL, "core:eval"); - init_symbol (cell_vm_begin_expand_eval, TSPECIAL, "*vm:begin-expand-eval*"); - init_symbol (cell_vm_begin_expand_macro, TSPECIAL, "*vm:begin-expand-macro*"); - init_symbol (cell_vm_begin_expand_primitive_load, TSPECIAL, "*vm:core:begin-expand-primitive-load*"); - init_symbol (cell_vm_begin_primitive_load, TSPECIAL, "*vm:core:begin-primitive-load*"); - init_symbol (cell_vm_begin_read_input_file, TSPECIAL, "*vm-begin-read-input-file*"); - init_symbol (cell_vm_call_with_current_continuation2, TSPECIAL, "*vm-call-with-current-continuation2*"); - init_symbol (cell_vm_call_with_values2, TSPECIAL, "*vm-call-with-values2*"); - init_symbol (cell_vm_eval, TSPECIAL, "core:eval-expanded"); - init_symbol (cell_vm_eval2, TSPECIAL, "*vm-eval2*"); - init_symbol (cell_vm_eval_check_func, TSPECIAL, "*vm-eval-check-func*"); - init_symbol (cell_vm_eval_define, TSPECIAL, "*vm-eval-define*"); - init_symbol (cell_vm_eval_macro_expand_eval, TSPECIAL, "*vm:eval-macro-expand-eval*"); - init_symbol (cell_vm_eval_macro_expand_expand, TSPECIAL, "*vm:eval-macro-expand-expand*"); - init_symbol (cell_vm_eval_pmatch_car, TSPECIAL, "*vm-eval-pmatch-car*"); - init_symbol (cell_vm_eval_pmatch_cdr, TSPECIAL, "*vm-eval-pmatch-cdr*"); - init_symbol (cell_vm_eval_set_x, TSPECIAL, "*vm-eval-set!*"); - init_symbol (cell_vm_evlis, TSPECIAL, "*vm-evlis*"); - init_symbol (cell_vm_evlis2, TSPECIAL, "*vm-evlis2*"); - init_symbol (cell_vm_evlis3, TSPECIAL, "*vm-evlis3*"); - init_symbol (cell_vm_if, TSPECIAL, "*vm-if*"); - init_symbol (cell_vm_if_expr, TSPECIAL, "*vm-if-expr*"); - init_symbol (cell_vm_macro_expand, TSPECIAL, "core:macro-expand"); - init_symbol (cell_vm_macro_expand_car, TSPECIAL, "*vm:core:macro-expand-car*"); - init_symbol (cell_vm_macro_expand_cdr, TSPECIAL, "*vm:macro-expand-cdr*"); - init_symbol (cell_vm_macro_expand_define, TSPECIAL, "*vm:core:macro-expand-define*"); - init_symbol (cell_vm_macro_expand_define_macro, TSPECIAL, "*vm:core:macro-expand-define-macro*"); - init_symbol (cell_vm_macro_expand_lambda, TSPECIAL, "*vm:core:macro-expand-lambda*"); - init_symbol (cell_vm_macro_expand_set_x, TSPECIAL, "*vm:core:macro-expand-set!*"); - init_symbol (cell_vm_return, TSPECIAL, "*vm-return*"); - - init_symbol (cell_symbol_dot, TSYMBOL, "*dot*"); - init_symbol (cell_symbol_lambda, TSYMBOL, "lambda"); - init_symbol (cell_symbol_begin, TSYMBOL, "begin"); - init_symbol (cell_symbol_if, TSYMBOL, "if"); - init_symbol (cell_symbol_quote, TSYMBOL, "quote"); - init_symbol (cell_symbol_define, TSYMBOL, "define"); - init_symbol (cell_symbol_define_macro, TSYMBOL, "define-macro"); - - init_symbol (cell_symbol_quasiquote, TSYMBOL, "quasiquote"); - init_symbol (cell_symbol_unquote, TSYMBOL, "unquote"); - init_symbol (cell_symbol_unquote_splicing, TSYMBOL, "unquote-splicing"); - init_symbol (cell_symbol_syntax, TSYMBOL, "syntax"); - init_symbol (cell_symbol_quasisyntax, TSYMBOL, "quasisyntax"); - init_symbol (cell_symbol_unsyntax, TSYMBOL, "unsyntax"); - init_symbol (cell_symbol_unsyntax_splicing, TSYMBOL, "unsyntax-splicing"); - - init_symbol (cell_symbol_set_x, TSYMBOL, "set!"); - - init_symbol (cell_symbol_sc_expand, TSYMBOL, "sc-expand"); - init_symbol (cell_symbol_macro_expand, TSYMBOL, "macro-expand"); - init_symbol (cell_symbol_portable_macro_expand, TSYMBOL, "portable-macro-expand"); - init_symbol (cell_symbol_sc_expander_alist, TSYMBOL, "*sc-expander-alist*"); - - init_symbol (cell_symbol_call_with_values, TSYMBOL, "call-with-values"); - init_symbol (cell_symbol_call_with_current_continuation, TSYMBOL, "call-with-current-continuation"); - init_symbol (cell_symbol_boot_module, TSYMBOL, "boot-module"); - init_symbol (cell_symbol_current_module, TSYMBOL, "current-module"); - init_symbol (cell_symbol_primitive_load, TSYMBOL, "primitive-load"); - init_symbol (cell_symbol_read_input_file, TSYMBOL, "read-input-file"); - init_symbol (cell_symbol_write, TSYMBOL, "write"); - init_symbol (cell_symbol_display, TSYMBOL, "display"); - - init_symbol (cell_symbol_car, TSYMBOL, "car"); - init_symbol (cell_symbol_cdr, TSYMBOL, "cdr"); - init_symbol (cell_symbol_not_a_number, TSYMBOL, "not-a-number"); - init_symbol (cell_symbol_not_a_pair, TSYMBOL, "not-a-pair"); - init_symbol (cell_symbol_system_error, TSYMBOL, "system-error"); - init_symbol (cell_symbol_throw, TSYMBOL, "throw"); - init_symbol (cell_symbol_unbound_variable, TSYMBOL, "unbound-variable"); - init_symbol (cell_symbol_wrong_number_of_args, TSYMBOL, "wrong-number-of-args"); - init_symbol (cell_symbol_wrong_type_arg, TSYMBOL, "wrong-type-arg"); - - init_symbol (cell_symbol_buckets, TSYMBOL, "buckets"); - init_symbol (cell_symbol_builtin, TSYMBOL, ""); - init_symbol (cell_symbol_frame, TSYMBOL, ""); - init_symbol (cell_symbol_hashq_table, TSYMBOL, ""); - init_symbol (cell_symbol_module, TSYMBOL, ""); - init_symbol (cell_symbol_procedure, TSYMBOL, "procedure"); - init_symbol (cell_symbol_record_type, TSYMBOL, ""); - init_symbol (cell_symbol_size, TSYMBOL, "size"); - init_symbol (cell_symbol_stack, TSYMBOL, ""); - - init_symbol (cell_symbol_argv, TSYMBOL, "%argv"); - init_symbol (cell_symbol_mes_datadir, TSYMBOL, "%datadir"); - init_symbol (cell_symbol_mes_version, TSYMBOL, "%version"); - - init_symbol (cell_symbol_internal_time_units_per_second, TSYMBOL, "internal-time-units-per-second"); - init_symbol (cell_symbol_compiler, TSYMBOL, "%compiler"); - init_symbol (cell_symbol_arch, TSYMBOL, "%arch"); - - init_symbol (cell_symbol_pmatch_car, TSYMBOL, "pmatch-car"); - init_symbol (cell_symbol_pmatch_cdr, TSYMBOL, "pmatch-cdr"); - - init_symbol (cell_type_bytes, TSYMBOL, ""); - init_symbol (cell_type_char, TSYMBOL, ""); - init_symbol (cell_type_closure, TSYMBOL, ""); - init_symbol (cell_type_continuation, TSYMBOL, ""); - init_symbol (cell_type_function, TSYMBOL, ""); - init_symbol (cell_type_keyword, TSYMBOL, ""); - init_symbol (cell_type_macro, TSYMBOL, ""); - init_symbol (cell_type_number, TSYMBOL, ""); - init_symbol (cell_type_pair, TSYMBOL, ""); - init_symbol (cell_type_port, TSYMBOL, ""); - init_symbol (cell_type_ref, TSYMBOL, ""); - init_symbol (cell_type_special, TSYMBOL, ""); - init_symbol (cell_type_string, TSYMBOL, ""); - init_symbol (cell_type_struct, TSYMBOL, ""); - init_symbol (cell_type_symbol, TSYMBOL, ""); - init_symbol (cell_type_values, TSYMBOL, ""); - init_symbol (cell_type_variable, TSYMBOL, ""); - init_symbol (cell_type_vector, TSYMBOL, ""); - init_symbol (cell_type_broken_heart, TSYMBOL, ""); - - init_symbol (cell_symbol_test, TSYMBOL, "%%test"); - - SCM a = cell_nil; - a = acons (cell_symbol_call_with_values, cell_symbol_call_with_values, a); - a = acons (cell_symbol_boot_module, cell_symbol_boot_module, a); - a = acons (cell_symbol_current_module, cell_symbol_current_module, a); - a = acons (cell_symbol_call_with_current_continuation, cell_call_with_current_continuation, a); - - a = acons (cell_symbol_mes_version, MAKE_STRING0 (MES_VERSION), a); - a = acons (cell_symbol_mes_datadir, MAKE_STRING0 (g_datadir), a); - - a = acons (cell_type_bytes, MAKE_NUMBER (TBYTES), a); - a = acons (cell_type_char, MAKE_NUMBER (TCHAR), a); - a = acons (cell_type_closure, MAKE_NUMBER (TCLOSURE), a); - a = acons (cell_type_continuation, MAKE_NUMBER (TCONTINUATION), a); - a = acons (cell_type_keyword, MAKE_NUMBER (TKEYWORD), a); - a = acons (cell_type_macro, MAKE_NUMBER (TMACRO), a); - a = acons (cell_type_number, MAKE_NUMBER (TNUMBER), a); - a = acons (cell_type_pair, MAKE_NUMBER (TPAIR), a); - a = acons (cell_type_port, MAKE_NUMBER (TPORT), a); - a = acons (cell_type_ref, MAKE_NUMBER (TREF), a); - a = acons (cell_type_special, MAKE_NUMBER (TSPECIAL), a); - a = acons (cell_type_string, MAKE_NUMBER (TSTRING), a); - a = acons (cell_type_struct, MAKE_NUMBER (TSTRUCT), a); - a = acons (cell_type_symbol, MAKE_NUMBER (TSYMBOL), a); - a = acons (cell_type_values, MAKE_NUMBER (TVALUES), a); - a = acons (cell_type_variable, MAKE_NUMBER (TVARIABLE), a); - a = acons (cell_type_vector, MAKE_NUMBER (TVECTOR), a); - a = acons (cell_type_broken_heart, MAKE_NUMBER (TBROKEN_HEART), a); - - a = acons (cell_closure, a, a); - - return a; -} - SCM mes_environment (int argc, char **argv) { - SCM a = mes_symbols (); + SCM a = init_symbols (); char *compiler = "gnuc"; #if __MESC__ diff --git a/src/symbol.c b/src/symbol.c new file mode 100644 index 00000000..d6e8d05d --- /dev/null +++ b/src/symbol.c @@ -0,0 +1,212 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2016,2017,2018,2019 Jan (janneke) Nieuwenhuizen + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include "mes/lib.h" +#include "mes/mes.h" + +#include + +void +init_symbol (long x, long type, char const *name) +{ + TYPE (x) = type; + int length = strlen (name); + SCM string = make_string (name, length); + CAR (x) = length; + CDR (x) = STRING (string); + hash_set_x (g_symbols, string, x); +} + +SCM +init_symbols () /*:((internal)) */ +{ + g_free = cell_symbol_test + 1; + g_symbol_max = g_free; + g_symbols = make_hash_table_ (500); + + int size = VALUE (struct_ref_ (g_symbols, 3)); + // Weird: m2-planet exits 67 here...[printing size = 100] + // if (size == 0) exit (66); + // if (!size) exit (67); + + init_symbol (cell_nil, TSPECIAL, "()"); + init_symbol (cell_f, TSPECIAL, "#f"); + init_symbol (cell_t, TSPECIAL, "#t"); + init_symbol (cell_dot, TSPECIAL, "."); + init_symbol (cell_arrow, TSPECIAL, "=>"); + init_symbol (cell_undefined, TSPECIAL, "*undefined*"); + init_symbol (cell_unspecified, TSPECIAL, "*unspecified*"); + init_symbol (cell_closure, TSPECIAL, "*closure*"); + init_symbol (cell_circular, TSPECIAL, "*circular*"); + init_symbol (cell_begin, TSPECIAL, "*begin*"); + init_symbol (cell_call_with_current_continuation, TSPECIAL, "*call/cc*"); + + init_symbol (cell_vm_apply, TSPECIAL, "core:apply"); + init_symbol (cell_vm_apply2, TSPECIAL, "*vm-apply2*"); + init_symbol (cell_vm_begin, TSPECIAL, "*vm-begin*"); + init_symbol (cell_vm_begin_eval, TSPECIAL, "*vm:begin-eval*"); + init_symbol (cell_vm_begin_expand, TSPECIAL, "core:eval"); + init_symbol (cell_vm_begin_expand_eval, TSPECIAL, "*vm:begin-expand-eval*"); + init_symbol (cell_vm_begin_expand_macro, TSPECIAL, "*vm:begin-expand-macro*"); + init_symbol (cell_vm_begin_expand_primitive_load, TSPECIAL, "*vm:core:begin-expand-primitive-load*"); + init_symbol (cell_vm_begin_primitive_load, TSPECIAL, "*vm:core:begin-primitive-load*"); + init_symbol (cell_vm_begin_read_input_file, TSPECIAL, "*vm-begin-read-input-file*"); + init_symbol (cell_vm_call_with_current_continuation2, TSPECIAL, "*vm-call-with-current-continuation2*"); + init_symbol (cell_vm_call_with_values2, TSPECIAL, "*vm-call-with-values2*"); + init_symbol (cell_vm_eval, TSPECIAL, "core:eval-expanded"); + init_symbol (cell_vm_eval2, TSPECIAL, "*vm-eval2*"); + init_symbol (cell_vm_eval_check_func, TSPECIAL, "*vm-eval-check-func*"); + init_symbol (cell_vm_eval_define, TSPECIAL, "*vm-eval-define*"); + init_symbol (cell_vm_eval_macro_expand_eval, TSPECIAL, "*vm:eval-macro-expand-eval*"); + init_symbol (cell_vm_eval_macro_expand_expand, TSPECIAL, "*vm:eval-macro-expand-expand*"); + init_symbol (cell_vm_eval_pmatch_car, TSPECIAL, "*vm-eval-pmatch-car*"); + init_symbol (cell_vm_eval_pmatch_cdr, TSPECIAL, "*vm-eval-pmatch-cdr*"); + init_symbol (cell_vm_eval_set_x, TSPECIAL, "*vm-eval-set!*"); + init_symbol (cell_vm_evlis, TSPECIAL, "*vm-evlis*"); + init_symbol (cell_vm_evlis2, TSPECIAL, "*vm-evlis2*"); + init_symbol (cell_vm_evlis3, TSPECIAL, "*vm-evlis3*"); + init_symbol (cell_vm_if, TSPECIAL, "*vm-if*"); + init_symbol (cell_vm_if_expr, TSPECIAL, "*vm-if-expr*"); + init_symbol (cell_vm_macro_expand, TSPECIAL, "core:macro-expand"); + init_symbol (cell_vm_macro_expand_car, TSPECIAL, "*vm:core:macro-expand-car*"); + init_symbol (cell_vm_macro_expand_cdr, TSPECIAL, "*vm:macro-expand-cdr*"); + init_symbol (cell_vm_macro_expand_define, TSPECIAL, "*vm:core:macro-expand-define*"); + init_symbol (cell_vm_macro_expand_define_macro, TSPECIAL, "*vm:core:macro-expand-define-macro*"); + init_symbol (cell_vm_macro_expand_lambda, TSPECIAL, "*vm:core:macro-expand-lambda*"); + init_symbol (cell_vm_macro_expand_set_x, TSPECIAL, "*vm:core:macro-expand-set!*"); + init_symbol (cell_vm_return, TSPECIAL, "*vm-return*"); + + init_symbol (cell_symbol_dot, TSYMBOL, "*dot*"); + init_symbol (cell_symbol_lambda, TSYMBOL, "lambda"); + init_symbol (cell_symbol_begin, TSYMBOL, "begin"); + init_symbol (cell_symbol_if, TSYMBOL, "if"); + init_symbol (cell_symbol_quote, TSYMBOL, "quote"); + init_symbol (cell_symbol_define, TSYMBOL, "define"); + init_symbol (cell_symbol_define_macro, TSYMBOL, "define-macro"); + + init_symbol (cell_symbol_quasiquote, TSYMBOL, "quasiquote"); + init_symbol (cell_symbol_unquote, TSYMBOL, "unquote"); + init_symbol (cell_symbol_unquote_splicing, TSYMBOL, "unquote-splicing"); + init_symbol (cell_symbol_syntax, TSYMBOL, "syntax"); + init_symbol (cell_symbol_quasisyntax, TSYMBOL, "quasisyntax"); + init_symbol (cell_symbol_unsyntax, TSYMBOL, "unsyntax"); + init_symbol (cell_symbol_unsyntax_splicing, TSYMBOL, "unsyntax-splicing"); + + init_symbol (cell_symbol_set_x, TSYMBOL, "set!"); + + init_symbol (cell_symbol_sc_expand, TSYMBOL, "sc-expand"); + init_symbol (cell_symbol_macro_expand, TSYMBOL, "macro-expand"); + init_symbol (cell_symbol_portable_macro_expand, TSYMBOL, "portable-macro-expand"); + init_symbol (cell_symbol_sc_expander_alist, TSYMBOL, "*sc-expander-alist*"); + + init_symbol (cell_symbol_call_with_values, TSYMBOL, "call-with-values"); + init_symbol (cell_symbol_call_with_current_continuation, TSYMBOL, "call-with-current-continuation"); + init_symbol (cell_symbol_boot_module, TSYMBOL, "boot-module"); + init_symbol (cell_symbol_current_module, TSYMBOL, "current-module"); + init_symbol (cell_symbol_primitive_load, TSYMBOL, "primitive-load"); + init_symbol (cell_symbol_read_input_file, TSYMBOL, "read-input-file"); + init_symbol (cell_symbol_write, TSYMBOL, "write"); + init_symbol (cell_symbol_display, TSYMBOL, "display"); + + init_symbol (cell_symbol_car, TSYMBOL, "car"); + init_symbol (cell_symbol_cdr, TSYMBOL, "cdr"); + init_symbol (cell_symbol_not_a_number, TSYMBOL, "not-a-number"); + init_symbol (cell_symbol_not_a_pair, TSYMBOL, "not-a-pair"); + init_symbol (cell_symbol_system_error, TSYMBOL, "system-error"); + init_symbol (cell_symbol_throw, TSYMBOL, "throw"); + init_symbol (cell_symbol_unbound_variable, TSYMBOL, "unbound-variable"); + init_symbol (cell_symbol_wrong_number_of_args, TSYMBOL, "wrong-number-of-args"); + init_symbol (cell_symbol_wrong_type_arg, TSYMBOL, "wrong-type-arg"); + + init_symbol (cell_symbol_buckets, TSYMBOL, "buckets"); + init_symbol (cell_symbol_builtin, TSYMBOL, ""); + init_symbol (cell_symbol_frame, TSYMBOL, ""); + init_symbol (cell_symbol_hashq_table, TSYMBOL, ""); + init_symbol (cell_symbol_module, TSYMBOL, ""); + init_symbol (cell_symbol_procedure, TSYMBOL, "procedure"); + init_symbol (cell_symbol_record_type, TSYMBOL, ""); + init_symbol (cell_symbol_size, TSYMBOL, "size"); + init_symbol (cell_symbol_stack, TSYMBOL, ""); + + init_symbol (cell_symbol_argv, TSYMBOL, "%argv"); + init_symbol (cell_symbol_mes_datadir, TSYMBOL, "%datadir"); + init_symbol (cell_symbol_mes_version, TSYMBOL, "%version"); + + init_symbol (cell_symbol_internal_time_units_per_second, TSYMBOL, "internal-time-units-per-second"); + init_symbol (cell_symbol_compiler, TSYMBOL, "%compiler"); + init_symbol (cell_symbol_arch, TSYMBOL, "%arch"); + + init_symbol (cell_symbol_pmatch_car, TSYMBOL, "pmatch-car"); + init_symbol (cell_symbol_pmatch_cdr, TSYMBOL, "pmatch-cdr"); + + init_symbol (cell_type_bytes, TSYMBOL, ""); + init_symbol (cell_type_char, TSYMBOL, ""); + init_symbol (cell_type_closure, TSYMBOL, ""); + init_symbol (cell_type_continuation, TSYMBOL, ""); + init_symbol (cell_type_function, TSYMBOL, ""); + init_symbol (cell_type_keyword, TSYMBOL, ""); + init_symbol (cell_type_macro, TSYMBOL, ""); + init_symbol (cell_type_number, TSYMBOL, ""); + init_symbol (cell_type_pair, TSYMBOL, ""); + init_symbol (cell_type_port, TSYMBOL, ""); + init_symbol (cell_type_ref, TSYMBOL, ""); + init_symbol (cell_type_special, TSYMBOL, ""); + init_symbol (cell_type_string, TSYMBOL, ""); + init_symbol (cell_type_struct, TSYMBOL, ""); + init_symbol (cell_type_symbol, TSYMBOL, ""); + init_symbol (cell_type_values, TSYMBOL, ""); + init_symbol (cell_type_variable, TSYMBOL, ""); + init_symbol (cell_type_vector, TSYMBOL, ""); + init_symbol (cell_type_broken_heart, TSYMBOL, ""); + + init_symbol (cell_symbol_test, TSYMBOL, "%%test"); + + SCM a = cell_nil; + a = acons (cell_symbol_call_with_values, cell_symbol_call_with_values, a); + a = acons (cell_symbol_boot_module, cell_symbol_boot_module, a); + a = acons (cell_symbol_current_module, cell_symbol_current_module, a); + a = acons (cell_symbol_call_with_current_continuation, cell_call_with_current_continuation, a); + + a = acons (cell_symbol_mes_version, MAKE_STRING0 (MES_VERSION), a); + a = acons (cell_symbol_mes_datadir, MAKE_STRING0 (g_datadir), a); + + a = acons (cell_type_bytes, MAKE_NUMBER (TBYTES), a); + a = acons (cell_type_char, MAKE_NUMBER (TCHAR), a); + a = acons (cell_type_closure, MAKE_NUMBER (TCLOSURE), a); + a = acons (cell_type_continuation, MAKE_NUMBER (TCONTINUATION), a); + a = acons (cell_type_keyword, MAKE_NUMBER (TKEYWORD), a); + a = acons (cell_type_macro, MAKE_NUMBER (TMACRO), a); + a = acons (cell_type_number, MAKE_NUMBER (TNUMBER), a); + a = acons (cell_type_pair, MAKE_NUMBER (TPAIR), a); + a = acons (cell_type_port, MAKE_NUMBER (TPORT), a); + a = acons (cell_type_ref, MAKE_NUMBER (TREF), a); + a = acons (cell_type_special, MAKE_NUMBER (TSPECIAL), a); + a = acons (cell_type_string, MAKE_NUMBER (TSTRING), a); + a = acons (cell_type_struct, MAKE_NUMBER (TSTRUCT), a); + a = acons (cell_type_symbol, MAKE_NUMBER (TSYMBOL), a); + a = acons (cell_type_values, MAKE_NUMBER (TVALUES), a); + a = acons (cell_type_variable, MAKE_NUMBER (TVARIABLE), a); + a = acons (cell_type_vector, MAKE_NUMBER (TVECTOR), a); + a = acons (cell_type_broken_heart, MAKE_NUMBER (TBROKEN_HEART), a); + + a = acons (cell_closure, a, a); + + return a; +}