Commit | Line | Data |
---|---|---|
99fa8f0c NG |
1 | ;; Copyright (C) 2015 |
2 | ;; "Mu Lei" known as "NalaGinrut" <NalaGinrut@gmail.com> | |
3 | ;; This file is free software: you can redistribute it and/or modify | |
4 | ;; it under the terms of the GNU General Public License as published by | |
5 | ;; the Free Software Foundation, either version 3 of the License, or | |
6 | ;; (at your option) any later version. | |
7 | ||
8 | ;; This file is distributed in the hope that it will be useful, | |
9 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | ;; GNU General Public License for more details. | |
12 | ||
13 | ;; You should have received a copy of the GNU General Public License | |
14 | ;; along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | ||
16 | (import (readline) (reader) (printer)) | |
17 | ||
dd7a4f55 JM |
18 | (define (READ str) |
19 | (read_str str)) | |
99fa8f0c NG |
20 | |
21 | (define (EVAL ast env) ast) | |
22 | ||
23 | (define (PRINT exp) | |
24 | (and (not (eof-object? exp)) | |
99fa8f0c NG |
25 | (format #t "~a~%" (pr_str exp #t)))) |
26 | ||
27 | (define (LOOP continue?) | |
28 | (and continue? (REPL))) | |
29 | ||
30 | (define (REPL) | |
cd098500 | 31 | (LOOP |
dd7a4f55 JM |
32 | (let ((line (_readline "user> "))) |
33 | (cond | |
34 | ((eof-object? line) #f) | |
35 | ((string=? line "") #t) | |
36 | (else | |
37 | (catch 'mal-error | |
38 | (lambda () (PRINT (EVAL (READ line) '()))) | |
39 | (lambda (k . e) | |
40 | (format #t "Error: ~a~%" (pr_str (car e) #t))))))))) | |
99fa8f0c NG |
41 | |
42 | (REPL) |