declare all built-in functions and variables in (scheme base) library
This commit is contained in:
parent
47dd186535
commit
fb2e7ac498
19
src/init.c
19
src/init.c
|
@ -3,6 +3,8 @@
|
||||||
|
|
||||||
#include "picrin.h"
|
#include "picrin.h"
|
||||||
#include "picrin/pair.h"
|
#include "picrin/pair.h"
|
||||||
|
#include "picrin/lib.h"
|
||||||
|
#include "picrin/macro.h"
|
||||||
|
|
||||||
void pic_init_bool(pic_state *);
|
void pic_init_bool(pic_state *);
|
||||||
void pic_init_pair(pic_state *);
|
void pic_init_pair(pic_state *);
|
||||||
|
@ -90,9 +92,22 @@ pic_features(pic_state *pic)
|
||||||
void
|
void
|
||||||
pic_init_core(pic_state *pic)
|
pic_init_core(pic_state *pic)
|
||||||
{
|
{
|
||||||
int ai;
|
int ai = pic_gc_arena_preserve(pic);
|
||||||
|
|
||||||
|
pic_make_library(pic, pic_parse(pic, "(scheme base)"));
|
||||||
|
pic_in_library(pic, pic_parse(pic, "(scheme base)"));
|
||||||
|
|
||||||
|
/* load core syntaces */
|
||||||
|
pic->lib->senv = pic_core_syntactic_env(pic);
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "define"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "set!"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "quote"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "lambda"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "if"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "begin"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "define-macro"));
|
||||||
|
pic_export(pic, pic_intern_cstr(pic, "define-syntax"));
|
||||||
|
|
||||||
ai = pic_gc_arena_preserve(pic);
|
|
||||||
pic_init_bool(pic); DONE;
|
pic_init_bool(pic); DONE;
|
||||||
pic_init_pair(pic); DONE;
|
pic_init_pair(pic); DONE;
|
||||||
pic_init_port(pic); DONE;
|
pic_init_port(pic); DONE;
|
||||||
|
|
|
@ -118,12 +118,12 @@ pic_open(int argc, char *argv[], char **envp)
|
||||||
register_core_symbol(pic, sGE, ">=");
|
register_core_symbol(pic, sGE, ">=");
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
|
pic_init_core(pic);
|
||||||
|
|
||||||
/* set library */
|
/* set library */
|
||||||
pic_make_library(pic, pic_parse(pic, "user"));
|
pic_make_library(pic, pic_parse(pic, "user"));
|
||||||
pic_in_library(pic, pic_parse(pic, "user"));
|
pic_in_library(pic, pic_parse(pic, "user"));
|
||||||
|
|
||||||
pic_init_core(pic);
|
|
||||||
|
|
||||||
return pic;
|
return pic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue