DISABLE FDs (REMOVE ME).
[jackhill/mal.git] / jq / step1_read_print.jq
1 include "reader";
2 include "printer";
3 include "utils";
4
5 def read_line:
6 . as $in
7 | label $top
8 | _readline;
9
10 def READ:
11 read_str | read_form | .value;
12
13 def EVAL:
14 .;
15
16 def PRINT:
17 pr_str;
18
19 def rep:
20 READ | EVAL |
21 if . != null then
22 PRINT
23 else
24 null
25 end;
26
27 def repl_:
28 ("user> " | _print) |
29 (read_line | rep);
30
31 def repl:
32 {continue: true} | while(
33 .continue;
34 try {value: repl_, continue: true}
35 catch
36 if is_jqmal_error then
37 {value: "Error: \(.)", continue: true}
38 else
39 {value: ., continue: false}
40 end) | if .value then .value|_display else empty end;
41
42 repl