;;; -*- Mode:LISP; Package:SYSTEM-INTERNALS; Readtable:CL; Base:10 -*- (defconstant kcl-readtable (copy-readtable)) (eval-when (eval load) (setf (rdtbl-names kcl-readtable) (list "KCL")) (setf (rdtbl-read-function-property kcl-readtable) (cons 'kcl-read-function (list (rdtbl-read-function-property kcl-readtable))))) (defprop fixnum xr-read-fixnum-crock kcl-read-function) (defun xr-read-fixnum-crock (stream string) (declare (ignore stream)) (let ((b (current-read-base)) (len (length string))) (multiple-value-bind (num i) (xr-read-fixnum-internal string 0 len b) (values `(QUOTE ,(sim::make-datum sim::$$boxed (sim::32-dpb sim::$$dtp-fixnum (byte 6. 26.) (if (= i len) num (let ((num2 (xr-read-fixnum-internal string (1+ i) len b))) (if (= (char string i) #\_) (ash num num2) (* num (^ b num2)))))))) 'fixnum))))