aboutsummaryrefslogtreecommitdiff
path: root/src/boot
diff options
context:
space:
mode:
Diffstat (limited to 'src/boot')
-rw-r--r--src/boot/strap/tokens.clisp10
-rw-r--r--src/boot/strap/utility.clisp7
-rw-r--r--src/boot/tokens.boot8
-rw-r--r--src/boot/utility.boot10
4 files changed, 28 insertions, 7 deletions
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