(Arne Babenhauserheide)
2013-04-28: minimal working text mirroring again. minimal working text mirroring again.
diff --git a/wisp.w b/wisp.w
--- a/wisp.w
+++ b/wisp.w
@@ -1,59 +1,59 @@
#!/home/arne/wisp/wisp-multiline.sh
; !#
+; we need to be able to replace end-of-line characters in brackets and strings
+
+;; define : nostringandbracketbreaks inport
+;; ; Replace end of line characters in brackets and strings
+;; let*
+;; : nextchar : read-char inport
+;; text ""
+;; incomment #f
+;; instring #f
+;; inbrackets 0
+;; incharform 0
+;; while : not : eof-object? nextchar
+;; when : and ( char=? nextchar #\" ) ( not incomment )
+;; set! instring : not instring
+;; display instring
+;; when : and ( char=? nextchar #\; ) ( not incomment ) ( not instring )
+;; set! incomment #t
+;; when
+;; and incomment
+;; not instring
+;; or
+;; char=? nextchar #\newline
+;; char=? nextchar #\linefeed
+;; set! incomment #f
+;; ; TODO: This still treats cod as in brackets which is not, possibly because it cannot cope with char literals: #\( and #\)
+;; when : and ( char=? nextchar #\( ) ( not instring ) ( not incomment )
+;; set! inbrackets : + inbrackets 1
+;; when : and ( char=? nextchar #\) ) ( not instring ) ( not incomment )
+;; set! inbrackets : - inbrackets 1
+;;
+;; if : or instring : > inbrackets 0
+;; if : char=? nextchar #\linefeed
+;; set! text : string-append text "\\LINE_BREAK_N"
+;; if : char=? nextchar #\newline
+;; set! text : string-append text "\\LINE_BREAK_R"
+;; set! text : string-append text : string nextchar
+;; ; when not in brackets or string: just append the char
+;; set! text : string-append text : string nextchar
+;;
+;; set! nextchar : read-char origfile
+;;
+
; first step: Be able to mirror a file to stdout
-let ((i (display
- 1)))
- display 1
-
-let : : a "rcie
-rcie
-crie"
- display "
-"
-
let*
: filename : list-ref ( command-line ) 1
origfile : open-file filename "r" ; mode
nextchar : read-char origfile
-
- ; Replace end of line characters in brackets and strings
- let*
- : text ""
- incomment #f
- instring #f
- inbrackets 0
- while : not : eof-object? nextchar
- when : and ( char=? nextchar #\" ) ( not incomment )
- set! instring : not instring
- display instring
- when : and ( char=? nextchar #\; ) ( not incomment ) ( not instring )
- set! incomment #t
- when
- and incomment
- not instring
- or
- char=? nextchar #\newline
- char=? nextchar #\linefeed
- set! incomment #f
- ; TODO: This still treats cod as in brackets which is not, possibly because it cannot cope with char literals: #\( and #\)
- when : and ( char=? nextchar #\( ) ( not instring ) ( not incomment )
- set! inbrackets : + inbrackets 1
- when : and ( char=? nextchar #\) ) ( not instring ) ( not incomment )
- set! inbrackets : - inbrackets 1
-
- if : or instring : > inbrackets 0
- if : char=? nextchar #\linefeed
- set! text : string-append text "\\LINE_BREAK_N"
- if : char=? nextchar #\newline
- set! text : string-append text "\\LINE_BREAK_R"
- set! text : string-append text : string nextchar
- ; when not in brackets or string: just append the char
- set! text : string-append text : string nextchar
-
- set! nextchar : read-char origfile
- display text
+ text ""
+ while : not : eof-object? nextchar
+ set! text : string-append text : string nextchar
+ set! nextchar : read-char origfile
+ display text
newline
-(modify-syntax-entry ?: "w")
+; (modify-syntax-entry ?: "w")