#| -*-Scheme-*-
-$Id: boot.scm,v 14.9 1993/08/31 08:42:34 cph Exp $
+$Id: boot.scm,v 14.10 1993/10/21 13:57:29 cph Exp $
Copyright (c) 1988-93 Massachusetts Institute of Technology
(declare (usual-integrations))
\f
-(define (unparser/standard-method name #!optional unparser)
- (lambda (state object)
- (if (not (unparser-state? state)) (error "Bad unparser state" state))
- (let ((port (unparser-state/port state))
- (hash-string (number->string (hash object))))
- (if *unparse-with-maximum-readability?*
- (begin
- (write-string "#@" port)
- (write-string hash-string port))
- (begin
- (write-string "#[" port)
- (if (string? name)
- (write-string name port)
- (unparse-object state name))
- (write-char #\space port)
- (write-string hash-string port)
- (if (and (not (default-object? unparser)) unparser)
- (begin (write-char #\Space port)
- (unparser state object)))
- (write-char #\] port))))))
+(define standard-unparser-method)
+(define unparser/standard-method)
+(let ((make-method
+ (lambda (name unparser)
+ (lambda (state object)
+ (let ((port (unparser-state/port state))
+ (hash-string (number->string (hash object))))
+ (if *unparse-with-maximum-readability?*
+ (begin
+ (write-string "#@" port)
+ (write-string hash-string port))
+ (begin
+ (write-string "#[" port)
+ (if (string? name)
+ (write-string name port)
+ (with-current-unparser-state state
+ (lambda (port)
+ (write name port))))
+ (write-char #\space port)
+ (write-string hash-string port)
+ (if unparser (unparser state object))
+ (write-char #\] port))))))))
+ (set! standard-unparser-method
+ (lambda (name unparser)
+ (make-method name
+ (and unparser
+ (lambda (state object)
+ (with-current-unparser-state state
+ (lambda (port)
+ (unparser object port))))))))
+ (set! unparser/standard-method
+ (lambda (name #!optional unparser)
+ (make-method name
+ (and (not (default-object? unparser))
+ unparser
+ (lambda (state object)
+ (unparse-char state #\space)
+ (unparser state object)))))))
(define (unparser-method? object)
(and (procedure? object)
(procedure-arity-valid? object 2)))
-
+\f
(define-integrable interrupt-bit/stack #x0001)
(define-integrable interrupt-bit/global-gc #x0002)
(define-integrable interrupt-bit/gc #x0004)
#| -*-Scheme-*-
-$Id: output.scm,v 14.15 1993/10/21 11:49:47 cph Exp $
+$Id: output.scm,v 14.16 1993/10/21 13:57:30 cph Exp $
Copyright (c) 1988-93 Massachusetts Institute of Technology
((output-port/operation/write-substring port) port string start end))
(define (output-port/write-object port object)
- (unparse-object/internal object port 0 true (current-unparser-table)))
+ (unparse-object/top-level object port #t (current-unparser-table)))
(define (output-port/flush-output port)
((output-port/operation/flush-output port) port))
(unparser-table
(if (default-object? unparser-table)
(current-unparser-table)
- (guarantee-unparser-table unparser-table))))
+ (guarantee-unparser-table unparser-table 'DISPLAY))))
(if (string? object)
(output-port/write-string port object)
- (unparse-object/internal object port 0 false unparser-table))
+ (unparse-object/top-level object port #f unparser-table))
(output-port/discretionary-flush port)))
(define (write object #!optional port unparser-table)
(unparser-table
(if (default-object? unparser-table)
(current-unparser-table)
- (guarantee-unparser-table unparser-table))))
- (unparse-object/internal object port 0 true unparser-table)
+ (guarantee-unparser-table unparser-table 'WRITE))))
+ (unparse-object/top-level object port #t unparser-table)
(output-port/discretionary-flush port)))
(define (write-line object #!optional port unparser-table)
(unparser-table
(if (default-object? unparser-table)
(current-unparser-table)
- (guarantee-unparser-table unparser-table))))
+ (guarantee-unparser-table unparser-table 'WRITE-LINE))))
(output-port/write-char port #\Newline)
- (unparse-object/internal object port 0 true unparser-table)
+ (unparse-object/top-level object port #t unparser-table)
(output-port/discretionary-flush port)))
(define (flush-output #!optional port)
#| -*-Scheme-*-
-$Id: runtime.pkg,v 14.208 1993/10/21 12:14:20 cph Exp $
+$Id: runtime.pkg,v 14.209 1993/10/21 13:57:31 cph Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
unparser-table/entry
unparser-table/set-entry!
unparser-table?
- user-object-type)
+ user-object-type
+ with-current-unparser-state)
(export (runtime output-port)
- unparse-object/internal)
+ unparse-object/top-level)
(export (runtime pretty-printer)
unparse-list/prefix-pair?
unparse-list/unparser
#| -*-Scheme-*-
-$Id: unpars.scm,v 14.31 1993/06/18 02:45:33 gjr Exp $
+$Id: unpars.scm,v 14.32 1993/10/21 13:57:33 cph Exp $
Copyright (c) 1988-93 Massachusetts Institute of Technology
(set! *unparse-disambiguate-null-lambda-list?* false)
(set! *unparse-compound-procedure-names?* true)
(set! system-global-unparser-table (make-system-global-unparser-table))
+ (set! *default-list-depth* 0)
(set-current-unparser-table! system-global-unparser-table))
(define *unparser-radix*)
(define *unparse-disambiguate-null-lambda-list?*)
(define *unparse-compound-procedure-names?*)
(define system-global-unparser-table)
+(define *default-list-depth*)
(define *current-unparser-table*)
(define (current-unparser-table)
*current-unparser-table*)
(define (set-current-unparser-table! table)
- (guarantee-unparser-table table)
+ (guarantee-unparser-table table 'SET-CURRENT-UNPARSER-TABLE!)
(set! *current-unparser-table* table)
unspecific)
(conc-name unparser-table/))
(dispatch-vector false read-only true))
-(define (guarantee-unparser-table table)
- (if (not (unparser-table? table)) (error "Bad unparser table" table))
+(define (guarantee-unparser-table table procedure)
+ (if (not (unparser-table? table))
+ (error:wrong-type-argument table "unparser table" procedure))
table)
(define (make-unparser-table default-method)
(slashify? false read-only true)
(unparser-table false read-only true))
-(define (guarantee-unparser-state state)
- (if (not (unparser-state? state)) (error "Bad unparser state" state))
+(define (guarantee-unparser-state state procedure)
+ (if (not (unparser-state? state))
+ (error:wrong-type-argument table state "unparser state" procedure))
state)
+
+(define (with-current-unparser-state state procedure)
+ (guarantee-unparser-state state 'WITH-CURRENT-UNPARSER-STATE)
+ (fluid-let
+ ((*default-list-depth* (unparser-state/list-depth state))
+ (*current-unparser-table* (unparser-state/list-unparser-table state)))
+ (procedure (unparser-state/port state))))
\f
;;;; Top Level
(define (unparse-char state char)
- (guarantee-unparser-state state)
+ (guarantee-unparser-state state 'UNPARSE-CHAR)
(write-char char (unparser-state/port state)))
(define (unparse-string state string)
- (guarantee-unparser-state state)
+ (guarantee-unparser-state state 'UNPARSE-STRING)
(write-string string (unparser-state/port state)))
(define (unparse-object state object)
- (guarantee-unparser-state state)
+ (guarantee-unparser-state state 'UNPARSE-OBJECT)
(unparse-object/internal object
(unparser-state/port state)
(unparser-state/list-depth state)
(unparser-state/slashify? state)
(unparser-state/unparser-table state)))
+(define (unparse-object/top-level object port slashify? table)
+ (unparse-object/internal object port *default-list-depth* slashify? table))
+
(define (unparse-object/internal object port list-depth slashify? table)
(fluid-let ((*output-port* port)
(*list-depth* list-depth)
#| -*-Scheme-*-
-$Id: runtime.pkg,v 14.208 1993/10/21 12:14:20 cph Exp $
+$Id: runtime.pkg,v 14.209 1993/10/21 13:57:31 cph Exp $
Copyright (c) 1988-1993 Massachusetts Institute of Technology
unparser-table/entry
unparser-table/set-entry!
unparser-table?
- user-object-type)
+ user-object-type
+ with-current-unparser-state)
(export (runtime output-port)
- unparse-object/internal)
+ unparse-object/top-level)
(export (runtime pretty-printer)
unparse-list/prefix-pair?
unparse-list/unparser