There are going to be some changes made to it, so it has to be written
out suitably. Nothing should be very different. The way newlines are
handled is a little tricksy.
A shame, really, because the old `format' string was quite fun.
;; Compound statements.
(definst block (stream :export t) (decls body)
- (format stream "{~:@_~@< ~2I~@[~{~A~:@_~}~:@_~]~{~A~^~:@_~}~:>~:@_}"
- decls body))
+ (write-char #\{ stream)
+ (pprint-newline :mandatory stream)
+ (pprint-logical-block (stream nil)
+ (let ((newlinep nil))
+ (flet ((newline ()
+ (if newlinep
+ (pprint-newline :mandatory stream)
+ (setf newlinep t))))
+ (pprint-indent :block 2 stream)
+ (write-string " " stream)
+ (when decls
+ (dolist (decl decls)
+ (newline)
+ (write decl :stream stream))
+ (when body (newline)))
+ (dolist (inst body)
+ (newline)
+ (write inst :stream stream)))))
+ (pprint-newline :mandatory stream)
+ (write-char #\} stream))
(definst if (stream :export t) (#1=#:cond conseq &optional alt)
(let ((stmt "if"))