namespace; include rt, run; // a repl on the resident compiler: each backtick-separated chunk of input is // compiled as a function body and run. definitions (fn ...) can be loaded too: // a chunk that starts with "fn" goes through load instead of eval. let buf[4000]; fn readchunk() { let n = 0, c; while (!rt.eof()) { c = rt.get_c(); if (c == 96) break; if (n < 3999) { buf[n] = c; n++; } } buf[n] = 0; return n; } void main() { let q, i; while (!rt.eof()) { readchunk(); q = run.tokens(buf); if (q[0] && q[1] == run.T_ID && q[2] == run.intern("fn")) run.load(q); else run.eval(q); rt.free(q); } return; }