add in-library
This commit is contained in:
parent
57d3618c5a
commit
afe0e5a1e0
|
@ -75,15 +75,15 @@ typedef struct {
|
||||||
|
|
||||||
pic_sym sDEFINE, sLAMBDA, sIF, sBEGIN, sQUOTE, sSETBANG;
|
pic_sym sDEFINE, sLAMBDA, sIF, sBEGIN, sQUOTE, sSETBANG;
|
||||||
pic_sym sQUASIQUOTE, sUNQUOTE, sUNQUOTE_SPLICING;
|
pic_sym sQUASIQUOTE, sUNQUOTE, sUNQUOTE_SPLICING;
|
||||||
pic_sym sDEFINE_SYNTAX;
|
pic_sym sDEFINE_SYNTAX, sIMPORT, sEXPORT;
|
||||||
pic_sym sDEFINE_LIBRARY, sIMPORT, sEXPORT;
|
pic_sym sDEFINE_LIBRARY, sIN_LIBRARY;
|
||||||
pic_sym sCONS, sCAR, sCDR, sNILP;
|
pic_sym sCONS, sCAR, sCDR, sNILP;
|
||||||
pic_sym sADD, sSUB, sMUL, sDIV, sMINUS;
|
pic_sym sADD, sSUB, sMUL, sDIV, sMINUS;
|
||||||
pic_sym sEQ, sLT, sLE, sGT, sGE, sNOT;
|
pic_sym sEQ, sLT, sLE, sGT, sGE, sNOT;
|
||||||
|
|
||||||
pic_sym rDEFINE, rLAMBDA, rIF, rBEGIN, rQUOTE, rSETBANG;
|
pic_sym rDEFINE, rLAMBDA, rIF, rBEGIN, rQUOTE, rSETBANG;
|
||||||
pic_sym rDEFINE_SYNTAX;
|
pic_sym rDEFINE_SYNTAX, rIMPORT, rEXPORT;
|
||||||
pic_sym rDEFINE_LIBRARY, rIMPORT, rEXPORT;
|
pic_sym rDEFINE_LIBRARY, rIN_LIBRARY;
|
||||||
|
|
||||||
xhash syms; /* name to symbol */
|
xhash syms; /* name to symbol */
|
||||||
xhash sym_names; /* symbol to name */
|
xhash sym_names; /* symbol to name */
|
||||||
|
|
13
src/lib.c
13
src/lib.c
|
@ -249,6 +249,18 @@ pic_lib_define_library(pic_state *pic)
|
||||||
return pic_none_value();
|
return pic_none_value();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static pic_value
|
||||||
|
pic_lib_in_library(pic_state *pic)
|
||||||
|
{
|
||||||
|
pic_value spec;
|
||||||
|
|
||||||
|
pic_get_args(pic, "o", &spec);
|
||||||
|
|
||||||
|
pic_in_library(pic, spec);
|
||||||
|
|
||||||
|
return pic_none_value();
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
pic_init_lib(pic_state *pic)
|
pic_init_lib(pic_state *pic)
|
||||||
{
|
{
|
||||||
|
@ -257,4 +269,5 @@ pic_init_lib(pic_state *pic)
|
||||||
pic_defmacro(pic, pic->sIMPORT, pic->rIMPORT, pic_lib_import);
|
pic_defmacro(pic, pic->sIMPORT, pic->rIMPORT, pic_lib_import);
|
||||||
pic_defmacro(pic, pic->sEXPORT, pic->rEXPORT, pic_lib_export);
|
pic_defmacro(pic, pic->sEXPORT, pic->rEXPORT, pic_lib_export);
|
||||||
pic_defmacro(pic, pic->sDEFINE_LIBRARY, pic->rDEFINE_LIBRARY, pic_lib_define_library);
|
pic_defmacro(pic, pic->sDEFINE_LIBRARY, pic->rDEFINE_LIBRARY, pic_lib_define_library);
|
||||||
|
pic_defmacro(pic, pic->sIN_LIBRARY, pic->rIN_LIBRARY, pic_lib_in_library);
|
||||||
}
|
}
|
||||||
|
|
|
@ -364,6 +364,7 @@ pic_null_syntactic_environment(pic_state *pic)
|
||||||
pic_define_syntactic_keyword(pic, senv, pic->sDEFINE_LIBRARY, pic->rDEFINE_LIBRARY);
|
pic_define_syntactic_keyword(pic, senv, pic->sDEFINE_LIBRARY, pic->rDEFINE_LIBRARY);
|
||||||
pic_define_syntactic_keyword(pic, senv, pic->sIMPORT, pic->rIMPORT);
|
pic_define_syntactic_keyword(pic, senv, pic->sIMPORT, pic->rIMPORT);
|
||||||
pic_define_syntactic_keyword(pic, senv, pic->sEXPORT, pic->rEXPORT);
|
pic_define_syntactic_keyword(pic, senv, pic->sEXPORT, pic->rEXPORT);
|
||||||
|
pic_define_syntactic_keyword(pic, senv, pic->sIN_LIBRARY, pic->rIN_LIBRARY);
|
||||||
|
|
||||||
return senv;
|
return senv;
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,9 +92,10 @@ pic_open(int argc, char *argv[], char **envp)
|
||||||
register_core_symbol(pic, sUNQUOTE, "unquote");
|
register_core_symbol(pic, sUNQUOTE, "unquote");
|
||||||
register_core_symbol(pic, sUNQUOTE_SPLICING, "unquote-splicing");
|
register_core_symbol(pic, sUNQUOTE_SPLICING, "unquote-splicing");
|
||||||
register_core_symbol(pic, sDEFINE_SYNTAX, "define-syntax");
|
register_core_symbol(pic, sDEFINE_SYNTAX, "define-syntax");
|
||||||
register_core_symbol(pic, sDEFINE_LIBRARY, "define-library");
|
|
||||||
register_core_symbol(pic, sIMPORT, "import");
|
register_core_symbol(pic, sIMPORT, "import");
|
||||||
register_core_symbol(pic, sEXPORT, "export");
|
register_core_symbol(pic, sEXPORT, "export");
|
||||||
|
register_core_symbol(pic, sDEFINE_LIBRARY, "define-library");
|
||||||
|
register_core_symbol(pic, sIN_LIBRARY, "in-library");
|
||||||
register_core_symbol(pic, sCONS, "cons");
|
register_core_symbol(pic, sCONS, "cons");
|
||||||
register_core_symbol(pic, sCAR, "car");
|
register_core_symbol(pic, sCAR, "car");
|
||||||
register_core_symbol(pic, sCDR, "cdr");
|
register_core_symbol(pic, sCDR, "cdr");
|
||||||
|
@ -124,9 +125,10 @@ pic_open(int argc, char *argv[], char **envp)
|
||||||
register_renamed_symbol(pic, rSETBANG, "set!");
|
register_renamed_symbol(pic, rSETBANG, "set!");
|
||||||
register_renamed_symbol(pic, rQUOTE, "quote");
|
register_renamed_symbol(pic, rQUOTE, "quote");
|
||||||
register_renamed_symbol(pic, rDEFINE_SYNTAX, "define-syntax");
|
register_renamed_symbol(pic, rDEFINE_SYNTAX, "define-syntax");
|
||||||
register_renamed_symbol(pic, rDEFINE_LIBRARY, "define-library");
|
|
||||||
register_renamed_symbol(pic, rIMPORT, "import");
|
register_renamed_symbol(pic, rIMPORT, "import");
|
||||||
register_renamed_symbol(pic, rEXPORT, "export");
|
register_renamed_symbol(pic, rEXPORT, "export");
|
||||||
|
register_renamed_symbol(pic, rDEFINE_LIBRARY, "define-library");
|
||||||
|
register_renamed_symbol(pic, rIN_LIBRARY, "in-library");
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
|
|
||||||
/* root block */
|
/* root block */
|
||||||
|
|
Loading…
Reference in New Issue