From f899f1b9d4ccd792dfc92c840e7e3d355cf858fe Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 26 Aug 2016 12:21:10 +0200 Subject: Added eval_main --- interpreter/eval.c | 14 ++++++++++++++ interpreter/eval.h | 2 ++ interpreter/fuspelc.c | 21 ++++++++------------- 3 files changed, 24 insertions(+), 13 deletions(-) (limited to 'interpreter') diff --git a/interpreter/eval.c b/interpreter/eval.c index 7349c28..1b28200 100644 --- a/interpreter/eval.c +++ b/interpreter/eval.c @@ -374,3 +374,17 @@ expression* eval(fuspel* rules, expression* expr) { return result; } + +expression* eval_main(fuspel* rules) { + expression to_eval, *evaled; + + to_eval.kind = EXPR_NAME; + to_eval.var1 = my_calloc(1, 5); + strcpy(to_eval.var1, "main"); + + evaled = eval(rules, &to_eval); + + free_expression(&to_eval); + + return evaled; +} diff --git a/interpreter/eval.h b/interpreter/eval.h index 3acd1d0..ca2741f 100644 --- a/interpreter/eval.h +++ b/interpreter/eval.h @@ -3,6 +3,8 @@ #include "syntax.h" +expression* eval_main(fuspel*); + expression* eval_rnf(fuspel*, expression*); expression* eval(fuspel*, expression*); diff --git a/interpreter/fuspelc.c b/interpreter/fuspelc.c index 4450486..c885e06 100644 --- a/interpreter/fuspelc.c +++ b/interpreter/fuspelc.c @@ -10,7 +10,7 @@ int main(void) { token_list* tokens; fuspel* pgm; - expression to_eval, *evaled; + expression* result; tokens = NULL; @@ -32,7 +32,7 @@ int main(void) { pgm = parse(tokens); free_token_list(tokens); - free(tokens); + my_free(tokens); if (!pgm) { fprintf(stderr, "Couldn't parse program."); @@ -43,22 +43,17 @@ int main(void) { print_fuspel(pgm); printf("\n\n"); - to_eval.kind = EXPR_NAME; - to_eval.var1 = my_calloc(1, 5); - strcpy(to_eval.var1, "main"); - - evaled = eval(pgm, &to_eval); - free_expression(&to_eval); - if (evaled) { - print_expression(evaled); + result = eval_main(pgm); + if (result) { + print_expression(result); printf("\n"); - free_expression(evaled); - free(evaled); + free_expression(result); + my_free(result); } free_fuspel(pgm); - free(pgm); + my_free(pgm); return 0; } -- cgit v1.2.3