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 | ||
18 | (define (READ) | |
94a0943a | 19 | (read_str (_readline "user> "))) |
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 NG |
31 | (LOOP |
32 | (catch 'mal-error | |
33 | (lambda () (PRINT (EVAL (READ) '()))) | |
34 | (lambda (k . e) | |
f33a3d58 NG |
35 | (if (string=? (car e) "blank line") |
36 | (display "") | |
37 | (format #t "Error: ~a~%" (car e))))))) | |
99fa8f0c NG |
38 | |
39 | (REPL) |