Code: Select all
: (
factor
99999999991
)
(83 1289 934693)
Code: Select all
: * 2 3)
)
)
^Z
ERR: string expected : nil
Code: Select all
(define (input__complete? str)
(if (or (find "^\s*$" str 0)
(find "^\s*;[^\n]*$" str 0))
true
(let (error-message ""
scanned 0)
(if
(catch
(begin
(read-expr str)
(setq scanned $0))
'error-message)
(input__complete? (slice str scanned))
false))))
(let ((repl__line "")
(repl__accum '())
(repl__expression ""))
(do-while true
(unless
(catch
(begin
(if (null? repl__accum) (print ": "))
(setq repl__line (read-line))
(push repl__line repl__accum)
(setq repl__expression
(join (reverse (copy repl__accum)) "\n"))
(if (input__complete? repl__expression)
(begin
(setq repl__accum '())
(setq repl__expression
(read-expr (string "(begin " repl__expression ")")))
(println (eval repl__expression)))))
'error-message)
(setq repl__accum '())
(println error-message))))