1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-19 09:38:28 +03:00
mal/jq/step1_read_print.jq

43 lines
721 B
Plaintext

include "reader";
include "printer";
include "utils";
def read_line:
. as $in
| label $top
| _readline;
def READ:
read_str | read_form | .value;
def EVAL:
.;
def PRINT:
pr_str;
def rep:
READ | EVAL |
if . != null then
PRINT
else
null
end;
def repl_:
("user> " | _print) |
(read_line | rep);
def repl:
{continue: true} | while(
.continue;
try {value: repl_, continue: true}
catch
if is_jqmal_error then
{value: "Error: \(.)", continue: true}
else
{value: ., continue: false}
end) | if .value then .value|_display else empty end;
repl