[bugfix] picrin evaluates exprs in files in order.

This commit is contained in:
Yuichi Nishiwaki 2013-11-04 13:18:16 -05:00
parent 808fe32ac0
commit 7ae15246fa
1 changed files with 23 additions and 15 deletions

View File

@ -159,8 +159,8 @@ int
exec_file(pic_state *pic, const char *fname) exec_file(pic_state *pic, const char *fname)
{ {
FILE *file; FILE *file;
bool r; int n, i;
pic_value v; pic_value vs;
struct pic_proc *proc; struct pic_proc *proc;
file = fopen(fname, "r"); file = fopen(fname, "r");
@ -169,12 +169,17 @@ exec_file(pic_state *pic, const char *fname)
return 1; return 1;
} }
r = pic_parse_file(pic, file, &v); n = pic_parse_file(pic, file, &vs);
if (! r) { if (n <= 0) {
fprintf(stderr, "fatal error: %s broken\n", fname); fprintf(stderr, "fatal error: %s broken\n", fname);
return 1; return 1;
} }
for (i = 0; i < n; ++i) {
pic_value v;
v = pic_car(pic, vs);
proc = pic_codegen(pic, v); proc = pic_codegen(pic, v);
if (proc == NULL) { if (proc == NULL) {
fputs(pic->errmsg, stderr); fputs(pic->errmsg, stderr);
@ -189,6 +194,9 @@ exec_file(pic_state *pic, const char *fname)
return 1; return 1;
} }
vs = pic_cdr(pic, vs);
}
return 0; return 0;
} }