(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)