scm: Add open-input-string, read-string.
[mes.git] / module / mes / read-0.mes
index afb990446a49e1941792690097115d026c94da03..7dd4888ecff1446cd2431a07f579da37fa563456 100644 (file)
            (read-hex c p 1 0)))
      (read-byte) (peek-byte)))
 
-  (define (read-string)
+  (define (reader:read-string)
     (define (append-char s c)
       (append2 s (cons (integer->char c) (list))))
-    (define (read-string c p s)
+    (define (reader:read-string c p s)
       (cond
        ((and (eq? c 92) (or (eq? p 92) (eq? p 34)))
         ((lambda (c)
-           (read-string (read-byte) (peek-byte) (append-char s c)))
+           (reader:read-string (read-byte) (peek-byte) (append-char s c)))
          (read-byte)))
        ((and (eq? c 92) (eq? p 110))
         (read-byte)
-        (read-string (read-byte) (peek-byte) (append-char s 10)))
+        (reader:read-string (read-byte) (peek-byte) (append-char s 10)))
        ((eq? c 34) s)
-       ((eq? c -1) (error (quote EOF-in-string)))
-       (#t (read-string (read-byte) (peek-byte) (append-char s c)))))
-    (list->string (read-string (read-byte) (peek-byte) (list))))
+       ((eq? c -1) (error (quote EOF-in-string) (cons c s)))
+       (#t (reader:read-string (read-byte) (peek-byte) (append-char s c)))))
+    (list->string (reader:read-string (read-byte) (peek-byte) (list))))
 
   (define (map1 f lst)
     (if (null? lst) (list)
                      (begin (unread-byte c) (lookup w a))))
      ((eq? c 41) (if (null? w) (quote *FOOBAR*)
                      (begin (unread-byte c) (lookup w a))))
-     ((eq? c 34) (if (null? w) (read-string)
+     ((eq? c 34) (if (null? w) (reader:read-string)
                      (begin (unread-byte c) (lookup w a))))
      ((eq? c 32) (if (null? w) (read-word (read-byte) (list) a) (lookup w a)))
      ((eq? c 10) (if (null? w) (read-word (read-byte) (list) a) (lookup w a)))