summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/main.c b/main.c
index 378f840..784bc25 100644
--- a/main.c
+++ b/main.c
@@ -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