Merge branch 'issue130_diagram_updates'
[jackhill/mal.git] / forth / step1_read_print.fs
1 require reader.fs
2 require printer.fs
3
4 : read read-str ;
5 : eval ;
6 : print
7 \ ." Type: " dup mal-type @ type-name safe-type cr
8 pr-str ;
9
10 : rep ( str-addr str-len -- str-addr str-len )
11 read
12 eval
13 print ;
14
15 create buff 128 allot
16 77777777777 constant stack-leak-detect
17
18 : read-lines
19 begin
20 ." user> "
21 stack-leak-detect
22 buff 128 stdin read-line throw
23 while ( num-bytes-read )
24 buff swap ( str-addr str-len )
25 ['] rep
26 \ execute safe-type
27 catch ?dup 0= if safe-type else ." Caught error " . endif
28 cr
29 stack-leak-detect <> if ." --stack leak--" cr endif
30 repeat ;
31
32 read-lines
33 cr
34 bye