(scheme base) is no longer the default library of benz. refer to (picrin
base) instead.
This commit is contained in:
parent
a227498f5b
commit
a4c82f10d2
38
codegen.c
38
codegen.c
|
@ -52,7 +52,7 @@ static void pop_scope(analyze_state *);
|
||||||
pic_sym sym, gsym; \
|
pic_sym sym, gsym; \
|
||||||
sym = pic_intern_cstr(pic, id); \
|
sym = pic_intern_cstr(pic, id); \
|
||||||
if (! pic_find_rename(pic, lib->env, sym, &gsym)) { \
|
if (! pic_find_rename(pic, lib->env, sym, &gsym)) { \
|
||||||
pic_error(pic, "internal error! native VM procedure not found"); \
|
pic_errorf(pic, "internal error! native VM procedure not found: %s", id); \
|
||||||
} \
|
} \
|
||||||
state->slot = gsym; \
|
state->slot = gsym; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
@ -62,32 +62,28 @@ new_analyze_state(pic_state *pic)
|
||||||
{
|
{
|
||||||
analyze_state *state;
|
analyze_state *state;
|
||||||
xh_iter it;
|
xh_iter it;
|
||||||
struct pic_lib *stdlib, *listlib;
|
|
||||||
|
|
||||||
state = pic_alloc(pic, sizeof(analyze_state));
|
state = pic_alloc(pic, sizeof(analyze_state));
|
||||||
state->pic = pic;
|
state->pic = pic;
|
||||||
state->scope = NULL;
|
state->scope = NULL;
|
||||||
|
|
||||||
stdlib = pic_find_library(pic, pic_read_cstr(pic, "(scheme base)"));
|
|
||||||
listlib = pic_find_library(pic, pic_read_cstr(pic, "(picrin base list)"));
|
|
||||||
|
|
||||||
/* native VM procedures */
|
/* native VM procedures */
|
||||||
register_renamed_symbol(pic, state, rCONS, listlib, "cons");
|
register_renamed_symbol(pic, state, rCONS, pic->PICRIN_BASE, "cons");
|
||||||
register_renamed_symbol(pic, state, rCAR, listlib, "car");
|
register_renamed_symbol(pic, state, rCAR, pic->PICRIN_BASE, "car");
|
||||||
register_renamed_symbol(pic, state, rCDR, listlib, "cdr");
|
register_renamed_symbol(pic, state, rCDR, pic->PICRIN_BASE, "cdr");
|
||||||
register_renamed_symbol(pic, state, rNILP, listlib, "null?");
|
register_renamed_symbol(pic, state, rNILP, pic->PICRIN_BASE, "null?");
|
||||||
register_renamed_symbol(pic, state, rADD, stdlib, "+");
|
register_renamed_symbol(pic, state, rADD, pic->PICRIN_BASE, "+");
|
||||||
register_renamed_symbol(pic, state, rSUB, stdlib, "-");
|
register_renamed_symbol(pic, state, rSUB, pic->PICRIN_BASE, "-");
|
||||||
register_renamed_symbol(pic, state, rMUL, stdlib, "*");
|
register_renamed_symbol(pic, state, rMUL, pic->PICRIN_BASE, "*");
|
||||||
register_renamed_symbol(pic, state, rDIV, stdlib, "/");
|
register_renamed_symbol(pic, state, rDIV, pic->PICRIN_BASE, "/");
|
||||||
register_renamed_symbol(pic, state, rEQ, stdlib, "=");
|
register_renamed_symbol(pic, state, rEQ, pic->PICRIN_BASE, "=");
|
||||||
register_renamed_symbol(pic, state, rLT, stdlib, "<");
|
register_renamed_symbol(pic, state, rLT, pic->PICRIN_BASE, "<");
|
||||||
register_renamed_symbol(pic, state, rLE, stdlib, "<=");
|
register_renamed_symbol(pic, state, rLE, pic->PICRIN_BASE, "<=");
|
||||||
register_renamed_symbol(pic, state, rGT, stdlib, ">");
|
register_renamed_symbol(pic, state, rGT, pic->PICRIN_BASE, ">");
|
||||||
register_renamed_symbol(pic, state, rGE, stdlib, ">=");
|
register_renamed_symbol(pic, state, rGE, pic->PICRIN_BASE, ">=");
|
||||||
register_renamed_symbol(pic, state, rNOT, stdlib, "not");
|
register_renamed_symbol(pic, state, rNOT, pic->PICRIN_BASE, "not");
|
||||||
register_renamed_symbol(pic, state, rVALUES, stdlib, "values");
|
register_renamed_symbol(pic, state, rVALUES, pic->PICRIN_BASE, "values");
|
||||||
register_renamed_symbol(pic, state, rCALL_WITH_VALUES, stdlib, "call-with-values");
|
register_renamed_symbol(pic, state, rCALL_WITH_VALUES, pic->PICRIN_BASE, "call-with-values");
|
||||||
|
|
||||||
register_symbol(pic, state, sCALL, "call");
|
register_symbol(pic, state, sCALL, "call");
|
||||||
register_symbol(pic, state, sTAILCALL, "tail-call");
|
register_symbol(pic, state, sTAILCALL, "tail-call");
|
||||||
|
|
|
@ -137,8 +137,8 @@ pic_state *pic_open(int argc, char *argv[], char **envp);
|
||||||
void pic_close(pic_state *);
|
void pic_close(pic_state *);
|
||||||
|
|
||||||
void pic_define(pic_state *, const char *, pic_value); /* automatic export */
|
void pic_define(pic_state *, const char *, pic_value); /* automatic export */
|
||||||
pic_value pic_ref(pic_state *, const char *);
|
pic_value pic_ref(pic_state *, struct pic_lib *, const char *);
|
||||||
void pic_set(pic_state *, const char *, pic_value);
|
void pic_set(pic_state *, struct pic_lib *, const char *, pic_value);
|
||||||
|
|
||||||
pic_value pic_funcall(pic_state *pic, const char *name, pic_list args);
|
pic_value pic_funcall(pic_state *pic, const char *name, pic_list args);
|
||||||
|
|
||||||
|
|
4
port.c
4
port.c
|
@ -28,7 +28,7 @@ pic_stdin(pic_state *pic)
|
||||||
{
|
{
|
||||||
struct pic_proc *proc;
|
struct pic_proc *proc;
|
||||||
|
|
||||||
proc = pic_proc_ptr(pic_ref(pic, "current-input-port"));
|
proc = pic_proc_ptr(pic_ref(pic, pic->PICRIN_BASE, "current-input-port"));
|
||||||
|
|
||||||
return pic_port_ptr(pic_apply(pic, proc, pic_nil_value()));
|
return pic_port_ptr(pic_apply(pic, proc, pic_nil_value()));
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ pic_stdout(pic_state *pic)
|
||||||
{
|
{
|
||||||
struct pic_proc *proc;
|
struct pic_proc *proc;
|
||||||
|
|
||||||
proc = pic_proc_ptr(pic_ref(pic, "current-output-port"));
|
proc = pic_proc_ptr(pic_ref(pic, pic->PICRIN_BASE, "current-output-port"));
|
||||||
|
|
||||||
return pic_port_ptr(pic_apply(pic, proc, pic_nil_value()));
|
return pic_port_ptr(pic_apply(pic, proc, pic_nil_value()));
|
||||||
}
|
}
|
||||||
|
|
8
vm.c
8
vm.c
|
@ -426,14 +426,14 @@ pic_define(pic_state *pic, const char *name, pic_value val)
|
||||||
}
|
}
|
||||||
|
|
||||||
pic_value
|
pic_value
|
||||||
pic_ref(pic_state *pic, const char *name)
|
pic_ref(pic_state *pic, struct pic_lib *lib, const char *name)
|
||||||
{
|
{
|
||||||
pic_sym sym, rename;
|
pic_sym sym, rename;
|
||||||
|
|
||||||
sym = pic_intern_cstr(pic, name);
|
sym = pic_intern_cstr(pic, name);
|
||||||
|
|
||||||
if (! pic_find_rename(pic, pic->lib->env, sym, &rename)) {
|
if (! pic_find_rename(pic, lib->env, sym, &rename)) {
|
||||||
pic_errorf(pic, "symbol \"%s\" not defined", name);
|
pic_errorf(pic, "symbol \"%s\" not defined in library ~s", name, lib->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return xh_val(xh_get_int(&pic->globals, rename), pic_value);
|
return xh_val(xh_get_int(&pic->globals, rename), pic_value);
|
||||||
|
@ -444,7 +444,7 @@ pic_funcall(pic_state *pic, const char *name, pic_list args)
|
||||||
{
|
{
|
||||||
pic_value proc;
|
pic_value proc;
|
||||||
|
|
||||||
proc = pic_ref(pic, name);
|
proc = pic_ref(pic, pic->lib, name);
|
||||||
|
|
||||||
pic_assert_type(pic, proc, proc);
|
pic_assert_type(pic, proc, proc);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue