(Arne Babenhauserheide)
2013-09-13: experiments with the chunked reader. experiments with the chunked reader.
diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -13,8 +13,8 @@
;;
;; -Author: Arne Babenhauserheide
-define-module : language wisp parser
- . #:export : wisp2lisp
+define-module : wisp
+ . #:export : wisp2lisp nostringandbracketbreaksreader
define : endsinunevenbackslashes text
if : = 0 : string-length text
@@ -40,6 +40,7 @@ define : nostringandbracketbreaks inport
set! expressions : append expressions : list : nostringandbracketbreaksreader inport
string-join expressions "\n"
+
define : nostringandbracketbreaksreader inport
. "Read one wisp-expression from the inport.
Ends with three consecutive linebreaks or eof."
@@ -59,7 +60,7 @@ Ends with three consecutive linebreaks o
or : eof-object? nextchar
and
or (char=? nextchar #\linefeed ) (char=? nextchar #\newline )
- string-suffix? text "\n\n"
+ string-suffix? text "\n\n" ; text includes lastchar
; incommentfirstchar is only valid for exactly one char
when incommentfirstchar : set! incommentfirstchar #f
; already started char forms win over everything, so process them first.
@@ -221,6 +222,7 @@ define : line-merge-comment line
list indent : string-append content ";" comment
. ""
+
; skip the leading indentation
define : skipindent inport
let skipper
@@ -249,6 +251,7 @@ define : skipindent inport
. indent
. indent
+
; Now we have to split a single line into indentation, content and comment.
define : splitindent inport
let
diff --git a/wisp-reader.w b/wisp-reader.w
--- a/wisp-reader.w
+++ b/wisp-reader.w
@@ -9,7 +9,8 @@
; adapted from spec.scm: https://gitorious.org/nacre/guile-sweet/source/ae306867e371cb4b56e00bb60a50d9a0b8353109:sweet/spec.scm
-(define-module (language scheme spec)
+(define-module (wisp-reader)
+ #:use-module (wisp)
#:use-module (system base compile)
#:use-module (system base language)
#:use-module (language scheme compile-tree-il)