mirror of
https://github.com/kanaka/mal.git
synced 2024-09-20 10:07:45 +03:00
39 lines
576 B
Tcl
39 lines
576 B
Tcl
|
source mal_readline.tcl
|
||
|
source types.tcl
|
||
|
source reader.tcl
|
||
|
source printer.tcl
|
||
|
|
||
|
proc READ str {
|
||
|
read_str $str
|
||
|
}
|
||
|
|
||
|
proc EVAL {ast env} {
|
||
|
return $ast
|
||
|
}
|
||
|
|
||
|
proc PRINT exp {
|
||
|
pr_str $exp 1
|
||
|
}
|
||
|
|
||
|
proc REP str {
|
||
|
PRINT [EVAL [READ $str] {}]
|
||
|
}
|
||
|
|
||
|
fconfigure stdout -translation binary
|
||
|
|
||
|
# repl loop
|
||
|
while {true} {
|
||
|
set res [_readline "user> "]
|
||
|
if {[lindex $res 0] == "EOF"} {
|
||
|
break
|
||
|
}
|
||
|
set line [lindex $res 1]
|
||
|
if {$line == ""} {
|
||
|
continue
|
||
|
}
|
||
|
if { [catch { puts [REP $line] } exception] } {
|
||
|
puts "Error: $exception"
|
||
|
}
|
||
|
}
|
||
|
puts ""
|