Commit | Line | Data |
---|---|---|
4eb88ef2 DM |
1 | load "../logo/readline.lg |
2 | load "../logo/reader.lg | |
3 | load "../logo/printer.lg | |
4 | ||
5 | to _read :str | |
6 | output read_str :str | |
7 | end | |
8 | ||
9 | to _eval :ast :env | |
10 | output :ast | |
11 | end | |
12 | ||
13 | to _print :exp | |
14 | output pr_str :exp "true | |
15 | end | |
16 | ||
17 | to rep :str | |
18 | output _print _eval _read :str [] | |
19 | end | |
20 | ||
21 | to repl | |
22 | localmake "running "true | |
23 | while [:running] [ | |
24 | localmake "line readline word "user> :space_char | |
25 | ifelse :line=[] [ | |
26 | print " | |
27 | make "running "false | |
28 | ] [ | |
29 | if not emptyp :line [ | |
30 | catch "error [print rep :line] | |
31 | localmake "exception error | |
32 | if not emptyp :exception [ | |
33 | (print "Error: first butfirst :exception) | |
34 | ] | |
35 | ] | |
36 | ] | |
37 | ] | |
38 | end | |
39 | ||
40 | repl | |
41 | bye |