anchor.diff:  (in-package :php)
   
   (eval-when (:compile-toplevel :load-toplevel :execute)
  +  (in-package :php)
     (defvar *php-pprint-dispatch* (copy-pprint-dispatch))
     (proclaim '(special *B*)))
   
  
positive.code:     (write x :pretty t :escape nil)
      (values)))
  
  (defun set-php-pprint-dispatch (typespec function &optional (priority 0))
    (set-pprint-dispatch typespec function priority *php-pprint-dispatch*))
  
  (defmacro defprinter ((typespec obj &optional (priority 0)) &body body)
  
negative.code: 			       (pprint-newline :fill s)
  			       (let ((*B* precedence))
  				 (write (pprint-pop) :stream s))))))
  
  (set-php-pprint-dispatch 'cons
  			 (let ((precedence (car (find-op 'funcall 1))))
  			   (lambda (s op)
  			     (pprint-logical-block (s nil)
  			       (when (<= precedence *B*)
  				 (write-string "(" s))
  			       (let ((*B* (1- precedence)))
  				 (write (car op) :stream s))
  			       (write-string "(" s)
  			       (pprint-indent :block 4 s)
  			       (let ((*B* 0))
  				 (format s "~<~@{~W~^, ~:_~}~:>" (cdr op)))
  			       (write-string ")" s)
  			       (when (<= precedence *B*)
  				 (write-string ")" s))))))
  