Commit | Line | Data |
---|---|---|
107d9694 IJ |
1 | require_relative "mal_readline" |
2 | require_relative "types" | |
3 | require_relative "reader" | |
4 | require_relative "printer" | |
f705f0fc JM |
5 | |
6 | # read | |
7 | def READ(str) | |
8 | return read_str(str) | |
9 | end | |
10 | ||
11 | # eval | |
12 | def EVAL(ast, env) | |
13 | return ast | |
14 | end | |
15 | ||
16 | ||
17 | def PRINT(exp) | |
18 | return _pr_str(exp, true) | |
19 | end | |
20 | ||
21 | # repl | |
22 | def REP(str) | |
23 | return PRINT(EVAL(READ(str), {})) | |
24 | end | |
25 | ||
86b689f3 | 26 | # repl loop |
718887c3 | 27 | while line = _readline("user> ") |
f705f0fc JM |
28 | begin |
29 | puts REP(line) | |
30 | rescue Exception => e | |
86b689f3 JM |
31 | puts "Error: #{e}" |
32 | puts "\t#{e.backtrace.join("\n\t")}" | |
f705f0fc JM |
33 | end |
34 | end |