wisp
 
(Arne Babenhauserheide)
2013-09-13: module path for the wisp-reader has to be (language wisp spec)

module path for the wisp-reader has to be (language wisp spec)

diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -9,8 +9,8 @@
 
 
 ; adapted from spec.scm: https://gitorious.org/nacre/guile-sweet/source/ae306867e371cb4b56e00bb60a50d9a0b8353109:sweet/spec.scm
-(define-module (wisp-reader)
-  #:use-module (wisp)
+(define-module (language wisp spec)
+  #:use-module (wisp)  ; I’d like to specify 
   #:use-module (system base compile)
   #:use-module (system base language)
   #:use-module (language scheme compile-tree-il)
@@ -21,12 +21,16 @@
 ;;; Language definition
 ;;;
 
+(define (compile-scheme x e opts) (values x e e))
+
+(define (decompile-scheme x e opts) (values x e))
+
 (define-language wisp
   #:title "Wisp Scheme Syntax"
   #:reader (lambda (port env)
-             (wisp-read port))
-  #:compilers `((tree-il . ,compile-tree-il))
-  #:decompilers `((tree-il . ,decompile-tree-il))
+             (wisp2lisp (wisp-chunkreader port)))
+  #:compilers `((scheme . ,compile-scheme))
+  #:decompilers `((scheme . ,decompile-scheme))
   #:evaluator (lambda (x module) (primitive-eval x))
   #:printer write
   #:make-default-environment
@@ -45,32 +49,3 @@
       (module-set! m 'format simple-format)
       m)))
 
-; adapted from sugar.scm: https://gitorious.org/nacre/guile-sweet/source/ae306867e371cb4b56e00bb60a50d9a0b8353109:sweet/sugar.scm
-
-(define* (wisp-read #:optional (port (current-input-port)))
-  ; Read single complete I-expression.
-  (let* ((indentation (list->string (accumulate-hspace port)))
-         (c (peek-char port)))
-    (cond
-     ((eof-object? c) c) ; EOF - return it, we're done.
-     ((eqv? c #\; ) ; comment - consume and see what's after it.
-      (let ((d (consume-to-eol port)))
-        (cond
-         ((eof-object? d) d) ; If EOF after comment, return it.
-         (#t
-          (read-char port) ; Newline after comment. Consume NL
-          (sugar-read port))))) ; and try again
-     ((eqv? c #\newline)
-      (read-char port) ; Newline (with no preceding comment).
-      (sugar-read port)) ; Consume and again
-     (#t
-                                        ; TODO: Handle (> (string-length indentation) 0)
-      (let* ((read (readblock-clean "" port))
-             (level (car read))
-             (block (cdr read)))
-        (cond
-         ((eq? block '.)
-          '())
-         (#t
-          block)))))))
-