#include "repl.h" #include void init_repl(repl_t *repl) { init_memory_pool(&repl->pool); } bool step_repl(repl_t *repl) { int len; for (len = 0; len < REPL_LINE_BUFFER_SIZE; ++len) { const int byte = repl->get_byte(); if (EOF == byte) return false; else if ('\n' == byte) break; repl->line_buffer[len] = (char)byte; } const expression_t *e = repl->read(&repl->pool, repl->line_buffer, len); const int result = repl->evaluate(e); const int result_len = snprintf( repl->result_buffer, REPL_RESULT_BUFFER_SIZE, "%d\n", result); repl->print(repl->result_buffer, result_len); return true; } void run_repl(repl_t *repl) { while (step_repl(repl)) ; }