4 #include "interpreter.h"
8 #define REPL_BUFFER_MAX 1024
10 char buffer[REPL_BUFFER_MAX + 1];
12 int main(int argc, char *argv[])
19 struct Expr scope = NIL(gc);
24 if (fgets(buffer, REPL_BUFFER_MAX, stdin) == NULL) {
28 printf("Before parse:\t");
31 struct ParseResult parse_result = read_expr_from_string(gc, buffer);
32 if (parse_result.is_error) {
33 print_parse_error(stderr, buffer, parse_result);
36 printf("After parse:\t");
39 struct EvalResult eval_result = eval(gc, scope, parse_result.expr);
40 scope = eval_result.scope;
41 printf("After eval:\t");
44 gc_collect(gc, CONS(gc, scope, eval_result.expr));
45 printf("After collect:\t");
49 print_expr_as_sexpr(eval_result.scope);
52 if (eval_result.is_error) {
56 print_expr_as_sexpr(eval_result.expr);