(Arne Babenhauserheide)
2013-09-06: ";" now parses correctly. updated FIXMES. ";" now parses correctly. updated FIXMES.
diff --git a/wisp-guile.w b/wisp-guile.w
--- a/wisp-guile.w
+++ b/wisp-guile.w
@@ -16,6 +16,7 @@ define : endsinunevenbackslashes text
. #f
let counter
: last : string-take-right text 1
+ ; FIXME: the : after rest stays. I do not yet know why.
rest : string-append " " : string-drop-right text 1
count 0
cond
@@ -48,23 +49,24 @@ define : nostringandbracketbreaks inport
; FIXME: Fails to capture #t and #f which can kill line splitting if it happens inside brackets
when : = incharform 1
when : not : and (char=? lastchar #\# ) : or (char=? #\f nextchar) (char=? #\t nextchar)
- format #t "1: set incharform 0: lastchar ~a nextchar ~a instring ~a incomment ~a incharform ~a" lastchar nextchar instring incomment incharform
- newline
+ ; format #t "1: set incharform 0: lastchar ~a nextchar ~a instring ~a incomment ~a incharform ~a" lastchar nextchar instring incomment incharform
+ ; newline
set! incharform 0
when : >= incharform 2
if : or (char=? nextchar #\space) (char=? nextchar #\linefeed ) (char=? nextchar #\newline )
begin
- format #t "2: set incharform 0: lastchar ~a nextchar ~a instring ~a incomment ~a incharform ~a" lastchar nextchar instring incomment incharform
- newline
+ ; format #t "2: set incharform 0: lastchar ~a nextchar ~a instring ~a incomment ~a incharform ~a" lastchar nextchar instring incomment incharform
+ ; newline
set! incharform 0
; else
set! incharform : + incharform 1
; check if we switch to a string: last char is space, linebreak or in a string, not in a charform, not in a comment
when
and
- ; FIXME: This fails to capture ";"
char=? nextchar #\"
+ not incomment
+ < incharform 1
or
and
. instring ; when I’m in a string, I can get out
@@ -81,8 +83,6 @@ define : nostringandbracketbreaks inport
or
char=? lastchar #\(
char=? lastchar #\)
- not incomment
- < incharform 1
set! instring : not instring
; check if we switch to a comment
when
@@ -191,8 +191,8 @@ define : line-merge-comment line
comment : line-comment line
if : equal? "" comment
. line ; no change needed
- ; FIXME: ";" fails to parse.
- list indent (string-append content ";" comment) ""
+ list indent : string-append content ";" comment
+ . ""
; skip the leading indentation
define : skipindent inport
@@ -258,7 +258,7 @@ define : splitindent inport
; if we cannot complete the commentcheck, we did not start a real comment. Append it to the content
when : and commentstart : not : char=? nextchar : string-ref commentstartidentifier commentidentifierindex
set! commentstart #f
- set! content : string-append content comment
+ set! content : string-append content comment : string nextchar
set! comment ""
set! commentidentifierindex 0
set! nextchar : read-char inport
@@ -533,7 +533,6 @@ let*
display : xsubstring " " 0 : line-indent next
display : line-content next
unless : equal? "" : line-comment next
- ; FIXME: ";" fails to parse
display ";"
display : line-comment next
newline