From 67a9b503724a4390abf08baa367959713483f363 Mon Sep 17 00:00:00 2001 From: dos-reis Date: Sun, 3 Jul 2011 16:53:30 +0000 Subject: * boot/tokens.boot: flushOutput, writeNewline, writeString are new builtin library functions. * boot/utility.boot (finishLine): New exported function. * interp/i-output.boot (formulaFormat): Use it. (texFormat): Likewise. (texFormat1): Likewise. (mathmlFormat): Likewise. (output): Remove case for TextWriter. --- src/boot/strap/tokens.clisp | 10 +++++++--- src/boot/strap/utility.clisp | 7 ++++++- src/boot/tokens.boot | 8 ++++++-- src/boot/utility.boot | 10 +++++++++- 4 files changed, 28 insertions(+), 7 deletions(-) (limited to 'src/boot') diff --git a/src/boot/strap/tokens.clisp b/src/boot/strap/tokens.clisp index 41ae0b5d..703b4263 100644 --- a/src/boot/strap/tokens.clisp +++ b/src/boot/strap/tokens.clisp @@ -215,8 +215,9 @@ (LIST '|croak| 'CROAK) (LIST '|digit?| 'DIGIT-CHAR-P) (LIST '|drop| 'DROP) (LIST '|exit| 'EXIT) (LIST '|false| 'NIL) (LIST '|first| 'CAR) - (LIST '|float?| 'FLOATP) (LIST '|fourth| 'CADDDR) - (LIST '|function| 'FUNCTION) + (LIST '|float?| 'FLOATP) + (LIST '|flushOutput| 'FORCE-OUTPUT) + (LIST '|fourth| 'CADDDR) (LIST '|function| 'FUNCTION) (LIST '|function?| 'FUNCTIONP) (LIST '|gensym| 'GENSYM) (LIST '|genvar| 'GENVAR) (LIST '|integer?| 'INTEGERP) (LIST 'LAST '|last|) (LIST '|list| 'LIST) @@ -255,7 +256,10 @@ (LIST '|vector?| 'SIMPLE-VECTOR-P) (LIST '|vectorRef| 'SVREF) (LIST '|writeByte| 'WRITE-BYTE) - (LIST '|writeLine| 'WRITE-LINE) (LIST 'PLUS '+) + (LIST '|writeChar| 'WRITE-CHAR) + (LIST '|writeLine| 'WRITE-LINE) + (LIST '|writeNewline| 'TERPRI) + (LIST '|writeString| 'WRITE-STRING) (LIST 'PLUS '+) (LIST 'MINUS '-) (LIST 'TIMES '*) (LIST 'POWER 'EXPT) (LIST 'REM 'REM) (LIST 'QUO 'TRUNCATE) (LIST 'SLASH '/) (LIST 'LT '<) (LIST 'GT '>) (LIST 'LE '<=) diff --git a/src/boot/strap/utility.clisp b/src/boot/strap/utility.clisp index a832a3ce..75416004 100644 --- a/src/boot/strap/utility.clisp +++ b/src/boot/strap/utility.clisp @@ -11,7 +11,7 @@ |reverse!| |lastNode| |append| |append!| |copyList| |substitute| |substitute!| |setDifference| |applySubst| |applySubst!| |applySubstNQ| |remove| |removeSymbol| - |atomic?|))) + |atomic?| |finishLine|))) (DECLAIM (FTYPE (FUNCTION (|%Thing| |%Thing| |%Thing|) |%Thing|) |substitute|)) @@ -44,6 +44,8 @@ (DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Boolean|) |atomic?|)) +(DECLAIM (FTYPE (FUNCTION (|%Thing|) |%Void|) |finishLine|)) + (DEFUN |atomic?| (|x|) (OR (NOT (CONSP |x|)) (EQ (CAR |x|) 'QUOTE))) (DEFUN |objectMember?| (|x| |l|) @@ -318,3 +320,6 @@ ((CHAR= (SCHAR |s| |k|) |c|) (RETURN |k|)) (T (SETQ |k| (+ |k| 1))))))))) +(DEFUN |finishLine| (|out|) + (PROGN (TERPRI |out|) (FORCE-OUTPUT |out|))) + diff --git a/src/boot/tokens.boot b/src/boot/tokens.boot index c0b8134e..e9fde37d 100644 --- a/src/boot/tokens.boot +++ b/src/boot/tokens.boot @@ -270,6 +270,7 @@ for i in [ _ ["false", 'NIL] , _ ["first", "CAR"] , _ ["float?", "FLOATP"] , _ + ["flushOutput", "FORCE-OUTPUT"], _ ["fourth", "CADDDR"] , _ ["function","FUNCTION"] , _ ["function?","FUNCTIONP"] , _ @@ -325,8 +326,11 @@ for i in [ _ ["valueEq?", "EQUAL"] , _ ["vector?", "SIMPLE-VECTOR-P"], _ ["vectorRef", "SVREF"] , _ - ["writeByte", "WRITE-BYTE"], _ - ["writeLine", "WRITE-LINE"], _ + ["writeByte", "WRITE-BYTE"], _ + ["writeChar", "WRITE-CHAR"], _ + ["writeLine", "WRITE-LINE"], _ + ["writeNewline", "TERPRI"], _ + ["writeString", "WRITE-STRING"], _ ["PLUS", "+"] , _ ["MINUS", "-"] , _ ["TIMES", "*"] , _ diff --git a/src/boot/utility.boot b/src/boot/utility.boot index 8410b790..0eca52d2 100644 --- a/src/boot/utility.boot +++ b/src/boot/utility.boot @@ -37,7 +37,7 @@ module utility (objectMember?, symbolMember?, stringMember?, charMember?, scalarMember?, listMember?, reverse, reverse!, lastNode, append, append!, copyList, substitute, substitute!, setDifference, applySubst, applySubst!, applySubstNQ, - remove,removeSymbol,atomic?) where + remove,removeSymbol,atomic?,finishLine) where substitute: (%Thing,%Thing,%Thing) -> %Thing substitute!: (%Thing,%Thing,%Thing) -> %Thing append: (%List %Thing,%List %Thing) -> %List %Thing @@ -47,6 +47,7 @@ module utility (objectMember?, symbolMember?, stringMember?, removeSymbol: (%List %Thing, %Symbol) -> %List %Thing remove: (%List %Thing, %Thing) -> %List %Thing atomic?: %Thing -> %Boolean + finishLine: %Thing -> %Void --% @@ -267,3 +268,10 @@ charPosition(c,s,k) == k >= n => return nil stringChar(s,k) = c => return k k := k + 1 + +--% I/O + +++ Add a newline character and flush the output stream. +finishLine out == + writeNewline out + flushOutput out -- cgit v1.2.3