diff options
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -58,13 +58,18 @@ prompt(Rune *pr) Datum * evalline(Rune *line) { - int ntoks; - Datum *tokens = lexline(line, &ntoks, globalsymtab); - Datum *result = eval(tokens, &ntoks); - if(ntoks == 1) + Statement *stmts = lexline(line, globalsymtab); + Datum *result = eval(stmts); + if(result) return result; else{ - free(tokens); + Statement *s = stmts; + while(s != nil){ + Statement *tmp = s; + s = s->next; + free(tmp->toks); + free(tmp); + } return nil; } }
\ No newline at end of file |