#include "repl.h" #include "evaluator.h" #include "reader.h" #include #include bool step_repl(repl_t *repl) { init_memory_pool(&repl->pool); const int len = read_line(getchar, repl->buffer, REPL_BUFFER_SIZE); if (len < 0) return false; const expression_t *e = read_expression(&repl->pool, repl->buffer, len); if (NULL == e) { puts("Invalid expression\n"); return true; } const int result = evaluate(e); printf("%d\n", result); return true; } void run_repl(repl_t *repl) { while (step_repl(repl)) ; }