1
1
mirror of https://github.com/kanaka/mal.git synced 2024-08-18 02:00:40 +03:00
mal/impls/picolisp/step1_read_print.l
Joel Martin 8a19f60386 Move implementations into impls/ dir
- Reorder README to have implementation list after "learning tool"
  bullet.

- This also moves tests/ and libs/ into impls. It would be preferrable
  to have these directories at the top level.  However, this causes
  difficulties with the wasm implementations which need pre-open
  directories and have trouble with paths starting with "../../". So
  in lieu of that, symlink those directories to the top-level.

- Move the run_argv_test.sh script into the tests directory for
  general hygiene.
2020-02-10 23:50:16 -06:00

37 lines
815 B
Plaintext

(de load-relative (Path)
(load (pack (car (file)) Path)) )
(load-relative "readline.l")
(load-relative "types.l")
(load-relative "reader.l")
(load-relative "printer.l")
(de READ (String)
(read-str String) )
(de EVAL (Ast)
Ast)
(de PRINT (Ast)
(pr-str Ast T) )
(de rep (String)
(PRINT (EVAL (READ String))) )
(load-history ".mal_history")
(use Eof
(until Eof
(let Input (readline "user> ")
(if (=0 Input)
(setq Eof T)
(let Output (catch 'err (rep Input))
(if (isa '+MALError Output)
(let Message (MAL-value Output)
(unless (= (MAL-value Message) "end of token stream")
(prinl "[error] " (pr-str Message)) ) )
(prinl Output) ) ) ) ) ) )
(prinl)
(bye)