(Arne Babenhauserheide)
2013-09-11: wisp-guile: some cleanup and actually define a language module. wisp-guile: some cleanup and actually define a language module.
diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -9,8 +9,13 @@
;; placeholders \STRING_BREAK_N and \STRING_BREAK_R. Also identify
;; real comments as ;\REALCOMMENTHERE
;;
+;; bootstrap via python3 wisp.py wisp-guile.w > 1 && guile 1 wisp-guile.w > 2 && guile 2 wisp-guile.w > 3 && diff 2 3
+;;
;; -Author: Arne Babenhauserheide
+define-module : language wisp
+ . #:export : wisp2lisp
+
define : endsinunevenbackslashes text
if : = 0 : string-length text
. #f
@@ -509,7 +514,7 @@ define : wisp2lisp-hashbang lisp prev un
. (list-ref unprocessed 0) (list-tail unprocessed 1)
list lisp prev unprocessed
-define : wisp2lisp lines
+define : wisp2lisp-lines lines
. "Parse indentation in the lines to add the correct brackets."
if : equal? lines '()
. '()
@@ -523,6 +528,12 @@ define : wisp2lisp lines
parsed : apply wisp2lisp-parse deinitialized
. parsed
+define : wisp2lisp text
+ let*
+ : textlines : split-wisp-lines text
+ lines : linestoindented textlines
+ wisp2lisp-lines lines
+
; first step: Be able to mirror a file to stdout
let*
: filename : list-ref ( command-line ) 1
@@ -530,9 +541,9 @@ let*
; Lines consist of lines with indent, content and comment. See
; line-indent, line-content, line-comment and the other
; line-functions for details.
- textlines : split-wisp-lines text
- lines : linestoindented textlines
- lisp : wisp2lisp lines
+ ; textlines : split-wisp-lines text
+ ; lines : linestoindented textlines
+ lisp : wisp2lisp text
; display : list-ref lines 100 ; seems good
let show : (processed '()) (unprocessed lisp)
when : not : equal? unprocessed '()