summaryrefslogtreecommitdiff
path: root/tests/lexers/common-lisp/example.txt
diff options
context:
space:
mode:
Diffstat (limited to 'tests/lexers/common-lisp/example.txt')
-rw-r--r--tests/lexers/common-lisp/example.txt12550
1 files changed, 12550 insertions, 0 deletions
diff --git a/tests/lexers/common-lisp/example.txt b/tests/lexers/common-lisp/example.txt
new file mode 100644
index 00000000..ef52b5ce
--- /dev/null
+++ b/tests/lexers/common-lisp/example.txt
@@ -0,0 +1,12550 @@
+---input---
+;;;; TYPEP und Verwandtes
+;;;; Michael Stoll, 21. 10. 1988
+;;;; Bruno Haible, 10.6.1989
+;;;; Sam Steingold 2000-2005
+
+;;; Datenstrukturen für TYPEP:
+;;; - Ein Type-Specifier-Symbol hat auf seiner Propertyliste unter dem
+;;; Indikator SYS::TYPE-SYMBOL eine Funktion von einem Argument, die
+;;; testet, ob ein Objekt vom richtigen Typ ist.
+;;; - Ein Symbol, das eine Type-Specifier-Liste beginnen kann, hat auf seiner
+;;; Propertyliste unter dem Indikator SYS::TYPE-LIST eine Funktion von
+;;; einem Argument für das zu testende Objekt und zusätzlichen Argumenten
+;;; für die Listenelemente.
+;;; - Ein Symbol, das als Typmacro definiert wurde, hat auf seiner Property-
+;;; liste unter dem Indikator SYSTEM::DEFTYPE-EXPANDER den zugehörigen
+;;; Expander: eine Funktion, die den zu expandierenden Type-Specifier (eine
+;;; mindestens einelementige Liste) als Argument bekommt.
+
+(in-package "EXT")
+(export '(type-expand))
+(in-package "SYSTEM")
+
+; vorläufig, solange bis clos.lisp geladen wird:
+(eval-when (eval)
+ (predefun clos::built-in-class-p (object) (declare (ignore object)) nil))
+(unless (fboundp 'clos::class-name)
+ (defun clos::class-name (c) (declare (ignore c)) nil)
+)
+
+(defun typespec-error (fun type)
+ (error-of-type 'error
+ (TEXT "~S: invalid type specification ~S")
+ fun type
+) )
+
+;; ============================================================================
+
+;; return the CLOS class named by TYPESPEC or NIL
+(defun clos-class (typespec)
+ (let ((cc (get typespec 'CLOS::CLOSCLASS)))
+ (when (and cc (clos::defined-class-p cc) (eq (clos:class-name cc) typespec))
+ cc)))
+
+;;; TYPEP, CLTL S. 72, S. 42-51
+(defun typep (x y &optional env &aux f) ; x = Objekt, y = Typ
+ (declare (ignore env))
+ (setq y (expand-deftype y))
+ (cond
+ ((symbolp y)
+ (cond ((setq f (get y 'TYPE-SYMBOL)) (funcall f x))
+ ((setq f (get y 'TYPE-LIST)) (funcall f x))
+ ((setq f (get y 'DEFSTRUCT-DESCRIPTION)) (ds-typep x y f))
+ ((setq f (clos-class y))
+ ; It's not worth handling structure classes specially here.
+ (clos::typep-class x f))
+ (t (typespec-error 'typep y))
+ ) )
+ ((and (consp y) (symbolp (first y)))
+ (cond
+ ((and (eq (first y) 'SATISFIES) (eql (length y) 2))
+ (unless (symbolp (second y))
+ (error-of-type 'error
+ (TEXT "~S: argument to SATISFIES must be a symbol: ~S")
+ 'typep (second y)
+ ) )
+ (if (funcall (symbol-function (second y)) x) t nil)
+ )
+ ((eq (first y) 'MEMBER)
+ (if (member x (rest y)) t nil)
+ )
+ ((and (eq (first y) 'EQL) (eql (length y) 2))
+ (eql x (second y))
+ )
+ ((and (eq (first y) 'NOT) (eql (length y) 2))
+ (not (typep x (second y)))
+ )
+ ((eq (first y) 'AND)
+ (dolist (type (rest y) t)
+ (unless (typep x type) (return nil))
+ ) )
+ ((eq (first y) 'OR)
+ (dolist (type (rest y) nil)
+ (when (typep x type) (return t))
+ ) )
+ ((setq f (get (first y) 'TYPE-LIST)) (apply f x (rest y)))
+ (t (typespec-error 'typep y))
+ ) )
+ ((clos::defined-class-p y) (clos::typep-class x y))
+ ((clos::eql-specializer-p y) (eql x (clos::eql-specializer-singleton y)))
+ ((encodingp y) (charset-typep x y))
+ (t (typespec-error 'typep y))
+) )
+
+;; ----------------------------------------------------------------------------
+
+;; UPGRADED-ARRAY-ELEMENT-TYPE is a lattice homomorphism, see
+;; ANSI CL 15.1.2.1.
+(defun upgraded-array-element-type (type &optional environment)
+ (declare (ignore environment))
+ ;; see array.d
+ (case type
+ ((BIT) 'BIT)
+ ((CHARACTER) 'CHARACTER)
+ ((T) 'T)
+ ((NIL) 'NIL)
+ (t (if (subtypep type 'NIL)
+ 'NIL
+ (multiple-value-bind (low high) (sys::subtype-integer type)
+ ; Es gilt (or (null low) (subtypep type `(INTEGER ,low ,high)))
+ (if (and (integerp low) (not (minusp low)) (integerp high))
+ (let ((l (integer-length high)))
+ ; Es gilt (subtypep type `(UNSIGNED-BYTE ,l))
+ (cond ((<= l 1) 'BIT)
+ ((<= l 2) '(UNSIGNED-BYTE 2))
+ ((<= l 4) '(UNSIGNED-BYTE 4))
+ ((<= l 8) '(UNSIGNED-BYTE 8))
+ ((<= l 16) '(UNSIGNED-BYTE 16))
+ ((<= l 32) '(UNSIGNED-BYTE 32))
+ (t 'T)))
+ (if (subtypep type 'CHARACTER)
+ 'CHARACTER
+ 'T)))))))
+
+;; ----------------------------------------------------------------------------
+
+;; UPGRADED-COMPLEX-PART-TYPE is a lattice homomorphism, see
+;; HyperSpec/Body/fun_complex.html and HyperSpec/Body/syscla_complex.html,
+;; and an idempotent. Therefore
+;; (subtypep (upgraded-complex-part-type T1) (upgraded-complex-part-type T2))
+;; is equivalent to
+;; (subtypep T1 (upgraded-complex-part-type T2))
+;; (Proof: Let U T be an abbreviation for (upgraded-complex-part-type T).
+;; If U T1 <= U T2, then T1 <= U T1 <= U T2.
+;; If T1 <= U T2, then by homomorphism U T1 <= U U T2 = U T2.)
+;;
+;; For _any_ CL implementation, you could define
+;; (defun upgraded-complex-part-type (type) 'REAL)
+;; Likewise for _any_ CL implementation, you could define
+;; (defun upgraded-complex-part-type (type) type)
+;; or - again for _any_ CL implementation:
+;; (defun upgraded-complex-part-type (type)
+;; (cond ((subtypep type 'NIL) 'NIL)
+;; ((subtypep type 'SHORT-FLOAT) 'SHORT-FLOAT)
+;; ((subtypep type 'SINGLE-FLOAT) 'SINGLE-FLOAT)
+;; ((subtypep type 'DOUBLE-FLOAT) 'DOUBLE-FLOAT)
+;; ((subtypep type 'LONG-FLOAT) 'LONG-FLOAT)
+;; ((subtypep type 'RATIONAL) 'RATIONAL)
+;; ((subtypep type 'REAL) 'REAL)
+;; (t (error ...))))
+;; The reason is that a complex number is immutable: no setters for the
+;; realpart and imagpart exist.
+;;
+;; We choose the second implementation because it allows the most precise
+;; type inference.
+(defun upgraded-complex-part-type (type &optional environment)
+ (declare (ignore environment))
+ (if (subtypep type 'REAL)
+ type
+ (error-of-type 'error
+ (TEXT "~S: type ~S is not a subtype of ~S")
+ 'upgraded-complex-part-type type 'real)))
+
+;; ----------------------------------------------------------------------------
+
+;; Macros for defining the various built-in "atomic type specifier"s and
+;; "compound type specifier"s. The following macros add information for both
+;; the TYPEP function above and the c-TYPEP in the compiler.
+
+; Alist symbol -> funname, used by the compiler.
+(defparameter c-typep-alist1 '())
+; Alist symbol -> lambdabody, used by the compiler.
+(defparameter c-typep-alist2 '())
+; Alist symbol -> expander function, used by the compiler.
+(defparameter c-typep-alist3 '())
+
+; (def-atomic-type symbol function-name)
+; defines an atomic type. The function-name designates a function taking one
+; argument and returning a generalized boolean value. It can be either a
+; symbol or a lambda expression.
+(defmacro def-atomic-type (symbol funname)
+ (let ((lambdap (and (consp funname) (eq (car funname) 'LAMBDA))))
+ `(PROGN
+ (SETF (GET ',symbol 'TYPE-SYMBOL)
+ ,(if lambdap
+ `(FUNCTION ,(concat-pnames "TYPE-SYMBOL-" symbol) ,funname)
+ `(FUNCTION ,funname)
+ )
+ )
+ ,(if lambdap
+ `(SETQ C-TYPEP-ALIST2
+ (NCONC C-TYPEP-ALIST2 (LIST (CONS ',symbol ',(cdr funname))))
+ )
+ `(SETQ C-TYPEP-ALIST1
+ (NCONC C-TYPEP-ALIST1 (LIST (CONS ',symbol ',funname)))
+ )
+ )
+ ',symbol
+ )
+) )
+
+; (def-compound-type symbol lambda-list (x) check-form typep-form c-typep-form)
+; defines a compound type. The lambda-list is of the form (&optional ...)
+; where the arguments come from the CDR of the type specifier.
+; For typep-form, x is an object.
+; For c-typep-form, x is a multiply evaluatable form (actually a gensym).
+; check-form is a form performing error checking, may call `error'.
+; typep-form should return a generalized boolean value.
+; c-typep-form should produce a form returning a generalized boolean value.
+(defmacro def-compound-type (symbol lambdalist (var) check-form typep-form c-typep-form)
+ `(PROGN
+ (SETF (GET ',symbol 'TYPE-LIST)
+ (FUNCTION ,(concat-pnames "TYPE-LIST-" symbol)
+ (LAMBDA (,var ,@lambdalist)
+ ,@(if check-form
+ `((MACROLET ((ERROR (&REST ERROR-ARGS)
+ (LIST* 'ERROR-OF-TYPE ''ERROR ERROR-ARGS)
+ ))
+ ,check-form
+ ))
+ )
+ ,typep-form
+ ) ) )
+ (SETQ C-TYPEP-ALIST3
+ (NCONC C-TYPEP-ALIST3
+ (LIST (CONS ',symbol
+ #'(LAMBDA (,var ,@lambdalist &REST ILLEGAL-ARGS)
+ (DECLARE (IGNORE ILLEGAL-ARGS))
+ ,@(if check-form
+ `((MACROLET ((ERROR (&REST ERROR-ARGS)
+ (LIST 'PROGN
+ (LIST* 'C-WARN ERROR-ARGS)
+ '(THROW 'C-TYPEP NIL)
+ )) )
+ ,check-form
+ ))
+ )
+ ,c-typep-form
+ )
+ ) ) ) )
+ ',symbol
+ )
+)
+
+; CLtL1 p. 43
+(def-atomic-type ARRAY arrayp)
+(def-atomic-type ATOM atom)
+(def-atomic-type BASE-CHAR
+ #+BASE-CHAR=CHARACTER
+ characterp
+ #-BASE-CHAR=CHARACTER
+ (lambda (x) (and (characterp x) (base-char-p x)))
+)
+(def-atomic-type BASE-STRING
+ (lambda (x)
+ (and (stringp x)
+ (eq (array-element-type x)
+ #+BASE-CHAR=CHARACTER 'CHARACTER #-BASE-CHAR=CHARACTER 'BASE-CHAR
+) ) ) )
+(def-atomic-type BIGNUM
+ (lambda (x) (and (integerp x) (not (fixnump x))))
+)
+(def-atomic-type BIT
+ (lambda (x) (or (eql x 0) (eql x 1)))
+)
+(def-atomic-type BIT-VECTOR bit-vector-p)
+(def-atomic-type BOOLEAN
+ (lambda (x) (or (eq x 'nil) (eq x 't)))
+)
+(def-atomic-type CHARACTER characterp)
+(def-atomic-type COMPILED-FUNCTION compiled-function-p)
+(def-atomic-type COMPLEX complexp)
+(def-atomic-type CONS consp)
+(def-atomic-type DOUBLE-FLOAT double-float-p)
+(def-atomic-type ENCODING encodingp)
+(def-atomic-type EXTENDED-CHAR
+ #+BASE-CHAR=CHARACTER
+ (lambda (x) (declare (ignore x)) nil)
+ #-BASE-CHAR=CHARACTER
+ (lambda (x) (and (characterp x) (not (base-char-p x))))
+)
+(def-atomic-type FIXNUM fixnump)
+(def-atomic-type FLOAT floatp)
+(def-atomic-type FUNCTION functionp)
+(def-atomic-type HASH-TABLE hash-table-p)
+(def-atomic-type INTEGER integerp)
+(def-atomic-type KEYWORD keywordp)
+(def-atomic-type LIST listp)
+#+LOGICAL-PATHNAMES
+(def-atomic-type LOGICAL-PATHNAME logical-pathname-p)
+(def-atomic-type LONG-FLOAT long-float-p)
+(def-atomic-type NIL
+ (lambda (x) (declare (ignore x)) nil)
+)
+(def-atomic-type NULL null)
+(def-atomic-type NUMBER numberp)
+(def-atomic-type PACKAGE packagep)
+(def-atomic-type PATHNAME pathnamep)
+(def-atomic-type RANDOM-STATE random-state-p)
+(def-atomic-type RATIO
+ (lambda (x) (and (rationalp x) (not (integerp x))))
+)
+(def-atomic-type RATIONAL rationalp)
+(def-atomic-type READTABLE readtablep)
+(def-atomic-type REAL realp)
+(def-atomic-type SEQUENCE sequencep)
+(def-atomic-type SHORT-FLOAT short-float-p)
+(def-atomic-type SIMPLE-ARRAY simple-array-p)
+(def-atomic-type SIMPLE-BASE-STRING
+ (lambda (x)
+ (and (simple-string-p x)
+ (eq (array-element-type x)
+ #+BASE-CHAR=CHARACTER 'CHARACTER #-BASE-CHAR=CHARACTER 'BASE-CHAR
+) ) ) )
+(def-atomic-type SIMPLE-BIT-VECTOR simple-bit-vector-p)
+(def-atomic-type SIMPLE-STRING simple-string-p)
+(def-atomic-type SIMPLE-VECTOR simple-vector-p)
+(def-atomic-type SINGLE-FLOAT single-float-p)
+(defun %standard-char-p (x) (and (characterp x) (standard-char-p x))) ; ABI
+(def-atomic-type STANDARD-CHAR %standard-char-p)
+(def-atomic-type CLOS:STANDARD-OBJECT clos::std-instance-p)
+(def-atomic-type STREAM streamp)
+(def-atomic-type FILE-STREAM file-stream-p)
+(def-atomic-type SYNONYM-STREAM synonym-stream-p)
+(def-atomic-type BROADCAST-STREAM broadcast-stream-p)
+(def-atomic-type CONCATENATED-STREAM concatenated-stream-p)
+(def-atomic-type TWO-WAY-STREAM two-way-stream-p)
+(def-atomic-type ECHO-STREAM echo-stream-p)
+(def-atomic-type STRING-STREAM string-stream-p)
+(def-atomic-type STRING stringp)
+(def-atomic-type STRING-CHAR characterp)
+(def-atomic-type CLOS:STRUCTURE-OBJECT clos::structure-object-p)
+(def-atomic-type SYMBOL symbolp)
+(def-atomic-type T (lambda (x) (declare (ignore x)) t))
+;; foreign1.lisp is loaded after this file,
+;; so these symbols are not external yet
+#+ffi
+(def-atomic-type ffi::foreign-function
+ (lambda (x) (eq 'ffi::foreign-function (type-of x))))
+#+ffi
+(def-atomic-type ffi::foreign-variable
+ (lambda (x) (eq 'ffi::foreign-variable (type-of x))))
+#+ffi
+(def-atomic-type ffi::foreign-address
+ (lambda (x) (eq 'ffi::foreign-address (type-of x))))
+;; see lispbibl.d (#define FOREIGN) and predtype.d (TYPE-OF):
+#+(or unix ffi affi win32)
+(def-atomic-type foreign-pointer
+ (lambda (x) (eq 'foreign-pointer (type-of x))))
+(def-atomic-type VECTOR vectorp)
+(def-atomic-type PLIST
+ (lambda (x) (multiple-value-bind (length tail) (list-length-dotted x)
+ (and (null tail) (evenp length)))))
+
+(defmacro ensure-dim (type dim)
+ ;; make sure DIM is a valid dimension
+ `(unless (or (eq ,dim '*) (typep ,dim `(INTEGER 0 (,ARRAY-DIMENSION-LIMIT))))
+ (error (TEXT "~S: dimension ~S is invalid") ',type ,dim)))
+
+(defmacro ensure-rank (type rank)
+ ;; make sure RANK is a valid rank
+ `(unless (typep ,rank `(INTEGER 0 (,ARRAY-RANK-LIMIT)))
+ (error (TEXT "~S: rank ~S is invalid") ',type ,rank)))
+
+; CLtL1 p. 46-50
+(defun c-typep-array (tester el-type dims x)
+ `(AND (,tester ,x)
+ ,@(if (eq el-type '*)
+ '()
+ `((EQUAL (ARRAY-ELEMENT-TYPE ,x) ',(upgraded-array-element-type el-type)))
+ )
+ ,@(if (eq dims '*)
+ '()
+ (if (numberp dims)
+ `((EQL ,dims (ARRAY-RANK ,x)))
+ `((EQL ,(length dims) (ARRAY-RANK ,x))
+ ,@(let ((i 0))
+ (mapcap #'(lambda (dim)
+ (prog1
+ (if (eq dim '*)
+ '()
+ `((EQL ',dim (ARRAY-DIMENSION ,x ,i)))
+ )
+ (incf i)
+ ) )
+ dims
+ ) )
+ )
+ ) )
+ )
+)
+(defun c-typep-vector (tester size x)
+ `(AND (,tester ,x)
+ ,@(if (eq size '*)
+ '()
+ `((EQL ',size (ARRAY-DIMENSION ,x 0)))
+ )
+ )
+)
+(defun typep-number-test (x low high test type)
+ (and (funcall test x)
+ (cond ((eq low '*))
+ ((funcall test low) (<= low x))
+ ((and (consp low) (null (rest low)) (funcall test (first low)))
+ (< (first low) x)
+ )
+ (t (error-of-type 'error
+ #1=(TEXT "~S: argument to ~S must be *, ~S or a list of ~S: ~S")
+ 'typep type type type low
+ ) ) )
+ (cond ((eq high '*))
+ ((funcall test high) (>= high x))
+ ((and (consp high) (null (rest high)) (funcall test (first high)))
+ (> (first high) x)
+ )
+ (t (error-of-type 'error
+ #1# 'typep type type type high
+) ) ) ) )
+(defun c-typep-number (caller tester low high x)
+ `(AND (,tester ,x)
+ ,@(cond ((eq low '*) '())
+ ((funcall tester low) `((<= ,low ,x)))
+ ((and (consp low) (null (rest low)) (funcall tester (first low)))
+ `((< ,(first low) ,x))
+ )
+ (t (c-warn #1=(TEXT "~S: argument to ~S must be *, ~S or a list of ~S: ~S")
+ 'typep caller caller caller low
+ )
+ (throw 'c-TYPEP nil)
+ ) )
+ ,@(cond ((eq high '*) '())
+ ((funcall tester high) `((>= ,high ,x)))
+ ((and (consp high) (null (rest high)) (funcall tester (first high)))
+ `((> ,(first high) ,x))
+ )
+ (t (c-warn #1# 'typep caller caller caller high)
+ (throw 'c-TYPEP nil)
+ ) )
+ )
+)
+(def-compound-type ARRAY (&optional (el-type '*) (dims '*)) (x)
+ (unless (eq dims '*)
+ (if (numberp dims)
+ (ensure-rank ARRAY dims)
+ (dolist (dim dims) (ensure-dim ARRAY dim))))
+ (and (arrayp x)
+ (or (eq el-type '*)
+ (equal (array-element-type x) (upgraded-array-element-type el-type))
+ )
+ (or (eq dims '*)
+ (if (numberp dims)
+ (eql dims (array-rank x))
+ (and (eql (length dims) (array-rank x))
+ (every #'(lambda (a b) (or (eq a '*) (eql a b)))
+ dims (array-dimensions x)
+ ) ) ) ) )
+ (c-typep-array 'ARRAYP el-type dims x)
+)
+(def-compound-type SIMPLE-ARRAY (&optional (el-type '*) (dims '*)) (x)
+ (unless (eq dims '*)
+ (if (numberp dims)
+ (ensure-rank SIMPLE-ARRAY dims)
+ (dolist (dim dims) (ensure-dim SIMPLE-ARRAY dim))))
+ (and (simple-array-p x)
+ (or (eq el-type '*)
+ (equal (array-element-type x) (upgraded-array-element-type el-type))
+ )
+ (or (eq dims '*)
+ (if (numberp dims)
+ (eql dims (array-rank x))
+ (and (eql (length dims) (array-rank x))
+ (every #'(lambda (a b) (or (eq a '*) (eql a b)))
+ dims (array-dimensions x)
+ ) ) ) ) )
+ (c-typep-array 'SIMPLE-ARRAY-P el-type dims x)
+)
+(def-compound-type VECTOR (&optional (el-type '*) (size '*)) (x)
+ (ensure-dim VECTOR size)
+ (and (vectorp x)
+ (or (eq el-type '*)
+ (equal (array-element-type x) (upgraded-array-element-type el-type))
+ )
+ (or (eq size '*) (eql (array-dimension x 0) size))
+ )
+ `(AND (VECTORP ,x)
+ ,@(if (eq el-type '*)
+ '()
+ `((EQUAL (ARRAY-ELEMENT-TYPE ,x) ',(upgraded-array-element-type el-type)))
+ )
+ ,@(if (eq size '*)
+ '()
+ `((EQL (ARRAY-DIMENSION ,x 0) ',size))
+ )
+ )
+)
+(def-compound-type SIMPLE-VECTOR (&optional (size '*)) (x)
+ (ensure-dim SIMLPE-VECTOR size)
+ (and (simple-vector-p x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'SIMPLE-VECTOR-P size x)
+)
+(def-compound-type COMPLEX (&optional (rtype '*) (itype rtype)) (x)
+ nil
+ (and (complexp x)
+ (or (eq rtype '*)
+ (typep (realpart x) (upgraded-complex-part-type rtype)))
+ (or (eq itype '*)
+ (typep (imagpart x) (upgraded-complex-part-type itype))))
+ `(AND (COMPLEXP ,x)
+ ,@(if (eq rtype '*)
+ '()
+ `((TYPEP (REALPART ,x) ',(upgraded-complex-part-type rtype))))
+ ,@(if (eq itype '*)
+ '()
+ `((TYPEP (IMAGPART ,x) ',(upgraded-complex-part-type itype))))))
+(def-compound-type INTEGER (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'integerp 'INTEGER)
+ (c-typep-number 'INTEGER 'INTEGERP low high x)
+)
+(def-compound-type MOD (n) (x)
+ (unless (integerp n)
+ (error (TEXT "~S: argument to MOD must be an integer: ~S")
+ 'typep n
+ ) )
+ (and (integerp x) (<= 0 x) (< x n))
+ `(AND (INTEGERP ,x) (NOT (MINUSP ,x)) (< ,x ,n))
+)
+(def-compound-type SIGNED-BYTE (&optional (n '*)) (x)
+ (unless (or (eq n '*) (integerp n))
+ (error (TEXT "~S: argument to SIGNED-BYTE must be an integer or * : ~S")
+ 'typep n
+ ) )
+ (and (integerp x) (or (eq n '*) (< (integer-length x) n)))
+ `(AND (INTEGERP ,x)
+ ,@(if (eq n '*) '() `((< (INTEGER-LENGTH ,x) ,n)))
+ )
+)
+(def-compound-type UNSIGNED-BYTE (&optional (n '*)) (x)
+ (unless (or (eq n '*) (integerp n))
+ (error (TEXT "~S: argument to UNSIGNED-BYTE must be an integer or * : ~S")
+ 'typep n
+ ) )
+ (and (integerp x)
+ (not (minusp x))
+ (or (eq n '*) (<= (integer-length x) n))
+ )
+ `(AND (INTEGERP ,x) (NOT (MINUSP ,x))
+ ,@(if (eq n '*) '() `((<= (INTEGER-LENGTH ,x) ,n)))
+ )
+)
+(def-compound-type REAL (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'realp 'REAL)
+ (c-typep-number 'REAL 'REALP low high x)
+)
+(def-compound-type RATIONAL (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'rationalp 'RATIONAL)
+ (c-typep-number 'RATIONAL 'RATIONALP low high x)
+)
+(def-compound-type FLOAT (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'floatp 'FLOAT)
+ (c-typep-number 'FLOAT 'FLOATP low high x)
+)
+(def-compound-type SHORT-FLOAT (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'short-float-p 'SHORT-FLOAT)
+ (c-typep-number 'SHORT-FLOAT 'SHORT-FLOAT-P low high x)
+)
+(def-compound-type SINGLE-FLOAT (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'single-float-p 'SINGLE-FLOAT)
+ (c-typep-number 'SINGLE-FLOAT 'SINGLE-FLOAT-P low high x)
+)
+(def-compound-type DOUBLE-FLOAT (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'double-float-p 'DOUBLE-FLOAT)
+ (c-typep-number 'DOUBLE-FLOAT 'DOUBLE-FLOAT-P low high x)
+)
+(def-compound-type LONG-FLOAT (&optional (low '*) (high '*)) (x)
+ nil
+ (typep-number-test x low high #'long-float-p 'LONG-FLOAT)
+ (c-typep-number 'LONG-FLOAT 'LONG-FLOAT-P low high x)
+)
+(def-compound-type STRING (&optional (size '*)) (x)
+ (ensure-dim STRING size)
+ (and (stringp x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'STRINGP size x)
+)
+(def-compound-type SIMPLE-STRING (&optional (size '*)) (x)
+ (ensure-dim SIMPLE-STRING size)
+ (and (simple-string-p x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'SIMPLE-STRING-P size x)
+)
+(def-compound-type BASE-STRING (&optional (size '*)) (x)
+ (ensure-dim BASE-STRING size)
+ (and (stringp x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'STRINGP size x)
+)
+(def-compound-type SIMPLE-BASE-STRING (&optional (size '*)) (x)
+ (ensure-dim SIMPLE-BASE-STRING size)
+ (and (simple-string-p x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'SIMPLE-STRING-P size x)
+)
+(def-compound-type BIT-VECTOR (&optional (size '*)) (x)
+ (ensure-dim BIT-VECTOR size)
+ (and (bit-vector-p x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'BIT-VECTOR-P size x)
+)
+(def-compound-type SIMPLE-BIT-VECTOR (&optional (size '*)) (x)
+ (ensure-dim SIMPLE-BIT-VECTOR size)
+ (and (simple-bit-vector-p x)
+ (or (eq size '*) (eql size (array-dimension x 0)))
+ )
+ (c-typep-vector 'SIMPLE-BIT-VECTOR-P size x)
+)
+(def-compound-type CONS (&optional (car-type '*) (cdr-type '*)) (x)
+ nil
+ (and (consp x)
+ (or (eq car-type '*) (typep (car x) car-type))
+ (or (eq cdr-type '*) (typep (cdr x) cdr-type))
+ )
+ `(AND (CONSP ,x)
+ ,@(if (eq car-type '*) '() `((TYPEP (CAR ,x) ',car-type)))
+ ,@(if (eq cdr-type '*) '() `((TYPEP (CDR ,x) ',cdr-type)))
+ )
+)
+
+(fmakunbound 'def-compound-type)
+
+;; ----------------------------------------------------------------------------
+
+; Typtest ohne Gefahr einer Fehlermeldung. Für SIGNAL und HANDLER-BIND.
+(defun safe-typep (x y &optional env)
+ (let ((*error-handler*
+ #'(lambda (&rest error-args)
+ (declare (ignore error-args))
+ (return-from safe-typep (values nil nil))
+ )) )
+ (values (typep x y env) t)
+) )
+
+; Umwandlung eines "type for declaration" in einen "type for discrimination".
+(defun type-for-discrimination (y &optional (notp nil) &aux f)
+ (cond ((symbolp y)
+ (cond ((get y 'TYPE-SYMBOL) y)
+ ((get y 'TYPE-LIST) y)
+ ((setq f (get y 'DEFTYPE-EXPANDER))
+ (let* ((z (funcall f (list y)))
+ (zx (type-for-discrimination z notp)))
+ (if (eql zx z) y zx)
+ ))
+ (t y)
+ ) )
+ ((and (consp y) (symbolp (first y)))
+ (case (first y)
+ ((SATISFIES MEMBER EQL) y)
+ (NOT
+ (let* ((z (second y))
+ (zx (type-for-discrimination z (not notp))))
+ (if (eql zx z) y `(NOT ,zx))
+ ))
+ ((AND OR COMPLEX VALUES)
+ (let* ((z (rest y))
+ (zx (mapcar #'(lambda (x) (type-for-discrimination x notp)) z)))
+ (if (every #'eql z zx) y (cons (first y) zx))
+ ))
+ (FUNCTION
+ ;; (FUNCTION arg-types res-type) is somewhere between
+ ;; NIL and FUNCTION, but undecidable.
+ (if notp 'NIL 'FUNCTION)
+ )
+ (t (cond ((get (first y) 'TYPE-LIST) y)
+ ((setq f (get (first y) 'DEFTYPE-EXPANDER))
+ (let* ((z (funcall f y))
+ (zx (type-for-discrimination z notp)))
+ (if (eql zx z) y zx)
+ ))
+ (t y)
+ ) ) ) )
+ (t y)
+) )
+
+; Testet eine Liste von Werten auf Erfüllen eines Type-Specifiers. Für THE.
+(defun %the (values type) ; ABI
+ (macrolet ((near-typep (objform typform)
+ ;; near-typep ist wie typep, nur dass das Objekt auch ein
+ ;; Read-Label sein darf. Das tritt z.B. auf bei
+ ;; (read-from-string "#1=#S(FOO :X #1#)")
+ ;; im Konstruktor MAKE-FOO. Die Implementation ist aber
+ ;; nicht gezwungen, bei fehlerhaftem THE zwingend einen
+ ;; Fehler zu melden, darum ist ein lascherer Typcheck hier
+ ;; erlaubt.
+ (let ((g (gensym)))
+ `(let ((,g ,objform))
+ (or (typep ,g ,typform) (eq (type-of ,g) 'READ-LABEL))))))
+ (if (and (consp type) (eq (car type) 'VALUES))
+ ;; The VALUES type specifier is ill-defined in ANSI CL.
+ ;;
+ ;; There are two possibilities to define a VALUES type specifier in a
+ ;; sane way:
+ ;; - (EXACT-VALUES type1 ... [&optional ...]) describes the exact shape
+ ;; of the values list, as received by MULTIPLE-VALUE-LIST.
+ ;; For example, (EXACT-VALUES SYMBOL) is matched by (values 'a) but not
+ ;; by (values 'a 'b) or (values).
+ ;; - (ASSIGNABLE-VALUES type1 ... [&optional ...]) describes the values
+ ;; as received by a set of variables through MULTIPLE-VALUE-BIND or
+ ;; MULTIPLE-VALUE-SETQ. For example, (ASSIGNABLE-VALUES SYMBOL) is
+ ;; defined by whether
+ ;; (MULTIPLE-VALUE-BIND (var1) values (DECLARE (TYPE SYMBOL var1)) ...)
+ ;; is valid or not; therefore (ASSIGNABLE-VALUES SYMBOL) is matched by
+ ;; (values 'a) and (values 'a 'b) and (values).
+ ;; Note that &OPTIONAL is actually redundant here:
+ ;; (ASSIGNABLE-VALUES type1 ... &optional otype1 ...)
+ ;; is equivalent to
+ ;; (ASSIGNABLE-VALUES type1 ... (OR NULL otype1) ...)
+ ;; HyperSpec/Body/typspe_values.html indicates that VALUES means
+ ;; EXACT-VALUES; however, HyperSpec/Body/speope_the.html indicates that
+ ;; VALUES means ASSIGNABLE-VALUES.
+ ;;
+ ;; SBCL interprets the VALUES type specifier to mean EXACT-VALUES when
+ ;; it contains &OPTIONAL or &REST, but ASSIGNABLE-VALUES when it has
+ ;; only a tuple of type specifiers. This is utter nonsense, in particular
+ ;; because it makes (VALUES type1 ... typek &OPTIONAL)
+ ;; different from (VALUES type1 ... typek).
+ ;;
+ ;; Here we use the ASSIGNABLE-VALUES interpretation.
+ ;; In SUBTYPEP we just punt and don't assume any interpretation.
+ (let ((vals values) (types (cdr type)))
+ ;; required:
+ (loop
+ (when (or (atom types) (atom vals)) (return-from %the t))
+ (when (memq (car types) lambda-list-keywords) (return))
+ (unless (near-typep (pop vals) (pop types))
+ (return-from %the nil)))
+ ;; &optional:
+ (when (and (consp types) (eq (car types) '&optional))
+ (setq types (cdr types))
+ (loop
+ (when (or (atom types) (atom vals)) (return-from %the t))
+ (when (memq (car types) lambda-list-keywords) (return))
+ (unless (near-typep (pop vals) (pop types))
+ (return-from %the nil))))
+ ;; &rest &key:
+ (case (car types)
+ (&rest
+ (setq types (cdr types))
+ (when (atom types) (typespec-error 'the type))
+ (unless (near-typep (pop vals) (pop types))
+ (return-from %the nil)))
+ (&key)
+ (t (typespec-error 'the type)))
+ (if (eq (car types) '&key)
+ (progn
+ (setq types (cdr types))
+ (when (oddp (length vals)) (return-from %the nil))
+ (let ((keywords nil))
+ (loop
+ (when (or (atom types) (atom vals)) (return-from %the t))
+ (when (memq (car types) lambda-list-keywords) (return))
+ (let ((item (pop types)))
+ (unless (and (listp item) (eql (length item) 2)
+ (symbolp (first item)))
+ (typespec-error 'the type))
+ (let ((kw (symbol-to-keyword (first item))))
+ (unless (near-typep (getf vals kw) (second item))
+ (return-from %the nil))
+ (push kw keywords))))
+ (if (and (consp types) (eq (car types) '&allow-other-keys))
+ (setq types (cdr types))
+ (unless (getf vals ':allow-other-keys)
+ (do ((L vals (cddr L)))
+ ((atom L))
+ (unless (memq (car L) keywords)
+ (return-from %the nil)))))))
+ (when (consp types) (typespec-error 'the type)))
+ t)
+ (near-typep (if (consp values) (car values) nil) type))))
+
+;;; ===========================================================================
+
+;; SUBTYPEP
+(load "subtypep")
+
+
+;; Returns the number of bytes that are needed to represent #\Null in a
+;; given encoding.
+(defun encoding-zeroes (encoding)
+ #+UNICODE
+ ;; this should use min_bytes_per_char for cache, not the hash table
+ (let ((name (ext:encoding-charset encoding))
+ (table #.(make-hash-table :key-type '(or string symbol) :value-type 'fixnum
+ :test 'stablehash-equal :warn-if-needs-rehash-after-gc t
+ :initial-contents '(("UTF-7" . 1))))
+ (tester #.(make-string 2 :initial-element (code-char 0))))
+ (or (gethash name table)
+ (setf (gethash name table)
+ (- (length (ext:convert-string-to-bytes tester encoding))
+ (length (ext:convert-string-to-bytes tester encoding
+ :end 1))))))
+ #-UNICODE 1)
+
+;; Determines two values low,high such that
+;; (subtypep type `(INTEGER ,low ,high))
+;; holds and low is as large as possible and high is as small as possible.
+;; low = * means -infinity, high = * means infinity.
+;; When (subtypep type 'INTEGER) is false, the values NIL,NIL are returned.
+;; We need this function only for MAKE-ARRAY, UPGRADED-ARRAY-ELEMENT-TYPE and
+;; OPEN and can therefore w.l.o.g. replace
+;; type with `(OR ,type (MEMBER 0))
+#| ;; The original implementation calls canonicalize-type and then applies
+ ;; a particular SUBTYPE variant:
+ (defun subtype-integer (type)
+ (macrolet ((yes () '(return-from subtype-integer (values low high)))
+ (no () '(return-from subtype-integer nil))
+ (unknown () '(return-from subtype-integer nil)))
+ (setq type (canonicalize-type type))
+ (if (consp type)
+ (case (first type)
+ (MEMBER ; (MEMBER &rest objects)
+ ;; All elements must be of type INTEGER.
+ (let ((low 0) (high 0)) ; wlog!
+ (dolist (x (rest type) (yes))
+ (unless (typep x 'INTEGER) (return (no)))
+ (setq low (min low x) high (max high x)))))
+ (OR ; (OR type*)
+ ;; Every type must be subtype of INTEGER.
+ (let ((low 0) (high 0)) ; wlog!
+ (dolist (type1 (rest type) (yes))
+ (multiple-value-bind (low1 high1) (subtype-integer type1)
+ (unless low1 (return (no)))
+ (setq low (if (or (eq low '*) (eq low1 '*)) '* (min low low1))
+ high (if (or (eq high '*) (eq high1 '*))
+ '* (max high high1)))))))
+ (AND ; (AND type*)
+ ;; If one of the types is subtype of INTEGER, then yes,
+ ;; otherwise unknown.
+ (let ((low nil) (high nil))
+ (dolist (type1 (rest type))
+ (multiple-value-bind (low1 high1) (subtype-integer type1)
+ (when low1
+ (if low
+ (setq low (if (eq low '*) low1 (if (eq low1 '*) low (max low low1)))
+ high (if (eq high '*) high1 (if (eq high1 '*) high (min high high1))))
+ (setq low low1 high high1)))))
+ (if low
+ (progn
+ (when (and (numberp low) (numberp high) (not (<= low high)))
+ (setq low 0 high 0) ; type equivalent to NIL)
+ (yes))
+ (unknown)))))
+ (setq type (list type)))
+ (if (eq (first type) 'INTEGER)
+ (let ((low (if (rest type) (second type) '*))
+ (high (if (cddr type) (third type) '*)))
+ (when (consp low)
+ (setq low (first low))
+ (when (numberp low) (incf low)))
+ (when (consp high)
+ (setq high (first high))
+ (when (numberp high) (decf high)))
+ (when (and (numberp low) (numberp high) (not (<= low high))) ; type leer?
+ (setq low 0 high 0))
+ (yes))
+ (if (and (eq (first type) 'INTERVALS) (eq (second type) 'INTEGER))
+ (let ((low (third type))
+ (high (car (last type))))
+ (when (consp low)
+ (setq low (first low))
+ (when (numberp low) (incf low)))
+ (when (consp high)
+ (setq high (first high))
+ (when (numberp high) (decf high)))
+ (yes))
+ (unknown)))))
+|# ;; This implementation inlines the (tail-recursive) canonicalize-type
+ ;; function. Its advantage is that it doesn't cons as much.
+ ;; (For example, (subtype-integer '(UNSIGNED-BYTE 8)) doesn't cons.)
+(defun subtype-integer (type)
+ (macrolet ((yes () '(return-from subtype-integer (values low high)))
+ (no () '(return-from subtype-integer nil))
+ (unknown () '(return-from subtype-integer nil)))
+ (setq type (expand-deftype type))
+ (cond ((symbolp type)
+ (case type
+ (BIT (let ((low 0) (high 1)) (yes)))
+ (FIXNUM
+ (let ((low '#,most-negative-fixnum)
+ (high '#,most-positive-fixnum))
+ (yes)))
+ ((INTEGER BIGNUM SIGNED-BYTE)
+ (let ((low '*) (high '*)) (yes)))
+ (UNSIGNED-BYTE
+ (let ((low 0) (high '*)) (yes)))
+ ((NIL)
+ (let ((low 0) (high 0)) (yes))) ; wlog!
+ (t (no))))
+ ((and (consp type) (symbolp (first type)))
+ (unless (and (list-length type) (null (cdr (last type))))
+ (typespec-error 'subtypep type))
+ (case (first type)
+ (MEMBER ; (MEMBER &rest objects)
+ ;; All elements must be of type INTEGER.
+ (let ((low 0) (high 0)) ; wlog!
+ (dolist (x (rest type) (yes))
+ (unless (typep x 'INTEGER) (return (no)))
+ (setq low (min low x) high (max high x)))))
+ (EQL ; (EQL object)
+ (let ((x (second type)))
+ (if (typep x 'INTEGER)
+ (let ((low (min 0 x)) (high (max 0 x))) (yes))
+ (no))))
+ (OR ; (OR type*)
+ ;; Every type must be subtype of INTEGER.
+ (let ((low 0) (high 0)) ; wlog!
+ (dolist (type1 (rest type) (yes))
+ (multiple-value-bind (low1 high1) (subtype-integer type1)
+ (unless low1 (return (no)))
+ (setq low (if (or (eq low '*) (eq low1 '*))
+ '* (min low low1))
+ high (if (or (eq high '*) (eq high1 '*))
+ '* (max high high1)))))))
+ (AND ; (AND type*)
+ ;; If one of the types is subtype of INTEGER, then yes,
+ ;; otherwise unknown.
+ (let ((low nil) (high nil))
+ (dolist (type1 (rest type))
+ (multiple-value-bind (low1 high1) (subtype-integer type1)
+ (when low1
+ (if low
+ (setq low (if (eq low '*) low1
+ (if (eq low1 '*) low
+ (max low low1)))
+ high (if (eq high '*) high1
+ (if (eq high1 '*) high
+ (min high high1))))
+ (setq low low1
+ high high1)))))
+ (if low
+ (progn
+ (when (and (numberp low) (numberp high)
+ (not (<= low high)))
+ (setq low 0 high 0)) ; type equivalent to NIL
+ (yes))
+ (unknown))))
+ (INTEGER
+ (let ((low (if (rest type) (second type) '*))
+ (high (if (cddr type) (third type) '*)))
+ (when (consp low)
+ (setq low (first low))
+ (when (numberp low) (incf low)))
+ (when (consp high)
+ (setq high (first high))
+ (when (numberp high) (decf high)))
+ (when (and (numberp low) (numberp high) (not (<= low high)))
+ (setq low 0 high 0)) ; type equivalent to NIL
+ (yes)))
+ (INTERVALS
+ (if (eq (second type) 'INTEGER)
+ (let ((low (third type))
+ (high (car (last type))))
+ (when (consp low)
+ (setq low (first low))
+ (when (numberp low) (incf low)))
+ (when (consp high)
+ (setq high (first high))
+ (when (numberp high) (decf high)))
+ (yes))
+ (unknown)))
+ (MOD ; (MOD n)
+ (let ((n (second type)))
+ (unless (and (integerp n) (>= n 0))
+ (typespec-error 'subtypep type))
+ (if (eql n 0)
+ (no)
+ (let ((low 0) (high (1- n)))
+ (yes)))))
+ (SIGNED-BYTE ; (SIGNED-BYTE &optional s)
+ (let ((s (if (cdr type) (second type) '*)))
+ (if (eq s '*)
+ (let ((low '*) (high '*)) (yes))
+ (progn
+ (unless (and (integerp s) (plusp s))
+ (typespec-error 'subtypep type))
+ (let ((n (ash 1 (1- s)))) ; (ash 1 *) == (expt 2 *)
+ (let ((low (- n)) (high (1- n)))
+ (yes)))))))
+ (UNSIGNED-BYTE ; (UNSIGNED-BYTE &optional s)
+ (let ((s (if (cdr type) (second type) '*)))
+ (if (eq s '*)
+ (let ((low 0) (high '*)) (yes))
+ (progn
+ (unless (and (integerp s) (>= s 0))
+ (typespec-error 'subtypep type))
+ (let ((n (ash 1 s))) ; (ash 1 *) == (expt 2 *)
+ (let ((low 0) (high (1- n)))
+ (yes)))))))
+ (t (no))))
+ ((clos::defined-class-p type)
+ (if (and (clos::built-in-class-p type)
+ (eq (get (clos:class-name type) 'CLOS::CLOSCLASS) type))
+ (return-from subtype-integer
+ (subtype-integer (clos:class-name type)))
+ (no)))
+ ((clos::eql-specializer-p type)
+ (let ((x (clos::eql-specializer-singleton type)))
+ (if (typep x 'INTEGER)
+ (let ((low (min 0 x)) (high (max 0 x))) (yes))
+ (no))))
+ ((encodingp type) (no))
+ (t (typespec-error 'subtypep type)))))
+
+#| TODO: Fix subtype-integer such that this works.
+Henry Baker:
+ (defun type-null (x)
+ (values (and (eq 'bit (upgraded-array-element-type `(or bit ,x)))
+ (not (typep 0 x))
+ (not (typep 1 x)))
+ t))
+ (type-null '(and symbol number))
+ (type-null '(and integer symbol))
+ (type-null '(and integer character))
+|#
+
+;; Determines a sequence kind (an atom, as defined in defseq.lisp: one of
+;; LIST - stands for LIST
+;; VECTOR - stands for (VECTOR T)
+;; STRING - stands for (VECTOR CHARACTER)
+;; 1, 2, 4, 8, 16, 32 - stands for (VECTOR (UNSIGNED-BYTE n))
+;; 0 - stands for (VECTOR NIL))
+;; that indicates the sequence type meant by the given type. Other possible
+;; return values are
+;; SEQUENCE - denoting a type whose intersection with (OR LIST VECTOR) is not
+;; subtype of LIST or VECTOR, or
+;; NIL - indicating a type whose intersection with (OR LIST VECTOR) is empty.
+;; When the type is (OR (VECTOR eltype1) ... (VECTOR eltypeN)), the chosen
+;; element type is the smallest element type that contains all of eltype1 ...
+;; eltypeN.
+;;
+;; User-defined sequence types are not supported here.
+;;
+;; This implementation inlines the (tail-recursive) canonicalize-type
+;; function. Its advantage is that it doesn't cons as much. Also it employs
+;; some heuristics and does not have the full power of SUBTYPEP.
+(defun subtype-sequence (type)
+ (setq type (expand-deftype type))
+ (cond ((symbolp type)
+ (case type
+ ((LIST CONS NULL) 'LIST)
+ ((NIL) 'NIL)
+ ((BIT-VECTOR SIMPLE-BIT-VECTOR) '1)
+ ((STRING SIMPLE-STRING BASE-STRING SIMPLE-BASE-STRING) 'STRING)
+ ((VECTOR SIMPLE-VECTOR ARRAY SIMPLE-ARRAY) 'VECTOR)
+ ((SEQUENCE) 'SEQUENCE)
+ (t 'NIL)))
+ ((and (consp type) (symbolp (first type)))
+ (unless (and (list-length type) (null (cdr (last type))))
+ (typespec-error 'subtypep type))
+ (case (first type)
+ (MEMBER ; (MEMBER &rest objects)
+ (let ((kind 'NIL))
+ (dolist (x (rest type))
+ (setq kind (sequence-type-union kind (type-of-sequence x))))
+ kind))
+ (EQL ; (EQL object)
+ (unless (eql (length type) 2)
+ (typespec-error 'subtypep type))
+ (type-of-sequence (second type)))
+ (OR ; (OR type*)
+ (let ((kind 'NIL))
+ (dolist (x (rest type))
+ (setq kind (sequence-type-union kind (subtype-sequence x))))
+ kind))
+ (AND ; (AND type*)
+ (let ((kind 'SEQUENCE))
+ (dolist (x (rest type))
+ (setq kind (sequence-type-intersection kind (subtype-sequence x))))
+ kind))
+ ((SIMPLE-BIT-VECTOR BIT-VECTOR) ; (SIMPLE-BIT-VECTOR &optional size)
+ (when (cddr type)
+ (typespec-error 'subtypep type))
+ '1)
+ ((SIMPLE-STRING STRING SIMPLE-BASE-STRING BASE-STRING) ; (SIMPLE-STRING &optional size)
+ (when (cddr type)
+ (typespec-error 'subtypep type))
+ 'STRING)
+ (SIMPLE-VECTOR ; (SIMPLE-VECTOR &optional size)
+ (when (cddr type)
+ (typespec-error 'subtypep type))
+ 'VECTOR)
+ ((VECTOR ARRAY SIMPLE-ARRAY) ; (VECTOR &optional el-type size), (ARRAY &optional el-type dimensions)
+ (when (cdddr type)
+ (typespec-error 'subtypep type))
+ (let ((el-type (if (cdr type) (second type) '*)))
+ (if (eq el-type '*)
+ 'VECTOR
+ (let ((eltype (upgraded-array-element-type el-type)))
+ (cond ((eq eltype 'T) 'VECTOR)
+ ((eq eltype 'CHARACTER) 'STRING)
+ ((eq eltype 'BIT) '1)
+ ((and (consp eltype) (eq (first eltype) 'UNSIGNED-BYTE)) (second eltype))
+ ((eq eltype 'NIL) '0)
+ (t (error (TEXT "~S is not up-to-date with ~S for element type ~S")
+ 'subtypep-sequence 'upgraded-array-element-type eltype)))))))
+ ((CONS) ; (CONS &optional cartype cdrtype)
+ (when (cdddr type)
+ (typespec-error 'subtypep type))
+ 'LIST)
+ (t 'NIL)))
+ ((clos::defined-class-p type)
+ (if (and (clos::built-in-class-p type)
+ (eq (get (clos:class-name type) 'CLOS::CLOSCLASS) type))
+ (subtype-sequence (clos:class-name type))
+ 'NIL))
+ ((clos::eql-specializer-p type)
+ (type-of-sequence (clos::eql-specializer-singleton type)))
+ (t 'NIL)))
+(defun type-of-sequence (x)
+ (cond ((listp x) 'LIST)
+ ((vectorp x)
+ (let ((eltype (array-element-type x)))
+ (cond ((eq eltype 'T) 'VECTOR)
+ ((eq eltype 'CHARACTER) 'STRING)
+ ((eq eltype 'BIT) '1)
+ ((and (consp eltype) (eq (first eltype) 'UNSIGNED-BYTE)) (second eltype))
+ ((eq eltype 'NIL) '0)
+ (t (error (TEXT "~S is not up-to-date with ~S for element type ~S")
+ 'type-of-sequence 'array-element-type eltype)))))
+ (t 'NIL)))
+(defun sequence-type-union (t1 t2)
+ (cond ; Simple general rules.
+ ((eql t1 t2) t1)
+ ((eq t1 'NIL) t2)
+ ((eq t2 'NIL) t1)
+ ; Now the union of two different types.
+ ((or (eq t1 'SEQUENCE) (eq t2 'SEQUENCE)) 'SEQUENCE)
+ ((or (eq t1 'LIST) (eq t2 'LIST))
+ ; union of LIST and a vector type
+ 'SEQUENCE)
+ ((or (eq t1 'VECTOR) (eq t2 'VECTOR)) 'VECTOR)
+ ((eql t1 0) t2)
+ ((eql t2 0) t1)
+ ((or (eq t1 'STRING) (eq t2 'STRING))
+ ; union of STRING and an integer-vector type
+ 'VECTOR)
+ (t (max t1 t2))))
+(defun sequence-type-intersection (t1 t2)
+ (cond ; Simple general rules.
+ ((eql t1 t2) t1)
+ ((or (eq t1 'NIL) (eq t2 'NIL)) 'NIL)
+ ; Now the intersection of two different types.
+ ((eq t1 'SEQUENCE) t2)
+ ((eq t2 'SEQUENCE) t1)
+ ((or (eq t1 'LIST) (eq t2 'LIST))
+ ; intersection of LIST and a vector type
+ 'NIL)
+ ((eq t1 'VECTOR) t2)
+ ((eq t2 'VECTOR) t1)
+ ((or (eql t1 0) (eql t2 0)) '0)
+ ((or (eq t1 'STRING) (eq t2 'STRING))
+ ; intersection of STRING and an integer-vector type
+ '0)
+ (t (min t1 t2))))
+
+;; ============================================================================
+
+(defun type-expand (typespec &optional once-p)
+ (multiple-value-bind (expanded user-defined-p)
+ (expand-deftype typespec once-p)
+ (if user-defined-p (values expanded user-defined-p)
+ (cond ((symbolp typespec)
+ (cond ((or (get typespec 'TYPE-SYMBOL) (get typespec 'TYPE-LIST))
+ (values typespec nil))
+ ((or (get typespec 'DEFSTRUCT-DESCRIPTION)
+ (clos-class typespec))
+ (values typespec nil))
+ (t (typespec-error 'type-expand typespec))))
+ ((and (consp typespec) (symbolp (first typespec)))
+ (case (first typespec)
+ ((SATISFIES MEMBER EQL NOT AND OR) (values typespec nil))
+ (t (cond ((get (first typespec) 'TYPE-LIST)
+ (values typespec nil))
+ (t (typespec-error 'type-expand typespec))))))
+ ((clos::defined-class-p typespec) (values typespec nil))
+ (t (typespec-error 'type-expand typespec))))))
+
+;; ============================================================================
+
+(unless (clos::funcallable-instance-p #'clos::class-name)
+ (fmakunbound 'clos::class-name))
+
+
+(keywordp :junk)
+ T
+
+(keywordp ::junk)
+ T
+
+(symbol-name ::junk)
+ "JUNK"
+
+(symbol-name :#junk)
+ "#JUNK"
+
+(symbol-name :#.junk)
+ "#.JUNK"
+
+---tokens---
+';;;; TYPEP und Verwandtes' Comment.Single
+'\n' Text
+
+';;;; Michael Stoll, 21. 10. 1988' Comment.Single
+'\n' Text
+
+';;;; Bruno Haible, 10.6.1989' Comment.Single
+'\n' Text
+
+';;;; Sam Steingold 2000-2005' Comment.Single
+'\n\n' Text
+
+';;; Datenstrukturen für TYPEP:' Comment.Single
+'\n' Text
+
+';;; - Ein Type-Specifier-Symbol hat auf seiner Propertyliste unter dem' Comment.Single
+'\n' Text
+
+';;; Indikator SYS::TYPE-SYMBOL eine Funktion von einem Argument, die' Comment.Single
+'\n' Text
+
+';;; testet, ob ein Objekt vom richtigen Typ ist.' Comment.Single
+'\n' Text
+
+';;; - Ein Symbol, das eine Type-Specifier-Liste beginnen kann, hat auf seiner' Comment.Single
+'\n' Text
+
+';;; Propertyliste unter dem Indikator SYS::TYPE-LIST eine Funktion von' Comment.Single
+'\n' Text
+
+';;; einem Argument für das zu testende Objekt und zusätzlichen Argumenten' Comment.Single
+'\n' Text
+
+';;; für die Listenelemente.' Comment.Single
+'\n' Text
+
+';;; - Ein Symbol, das als Typmacro definiert wurde, hat auf seiner Property-' Comment.Single
+'\n' Text
+
+';;; liste unter dem Indikator SYSTEM::DEFTYPE-EXPANDER den zugehörigen' Comment.Single
+'\n' Text
+
+';;; Expander: eine Funktion, die den zu expandierenden Type-Specifier (eine' Comment.Single
+'\n' Text
+
+';;; mindestens einelementige Liste) als Argument bekommt.' Comment.Single
+'\n\n' Text
+
+'(' Punctuation
+'in-package' Name.Builtin
+' ' Text
+'"EXT"' Literal.String
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'export' Name.Builtin
+' ' Text
+"'" Operator
+'(' Punctuation
+'type-expand' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'in-package' Name.Builtin
+' ' Text
+'"SYSTEM"' Literal.String
+')' Punctuation
+'\n\n' Text
+
+'; vorläufig, solange bis clos.lisp geladen wird:' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'eval-when' Keyword
+' ' Text
+'(' Punctuation
+'eval' Name.Builtin
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'predefun' Name.Variable
+' ' Text
+'clos::built-in-class-p' Name.Variable
+' ' Text
+'(' Punctuation
+'object' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'object' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'fboundp' Name.Builtin
+' ' Text
+"'clos::class-name" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'clos::class-name' Name.Variable
+' ' Text
+'(' Punctuation
+'c' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'c' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'typespec-error' Name.Variable
+' ' Text
+'(' Punctuation
+'fun' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error-of-type' Name.Variable
+' ' Text
+"'error" Literal.String.Symbol
+'\n ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: invalid type specification ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+'fun' Name.Variable
+' ' Text
+'type' Keyword
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n\n' Text
+
+';; ============================================================================' Comment.Single
+'\n\n' Text
+
+';; return the CLOS class named by TYPESPEC or NIL' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'clos-class' Name.Variable
+' ' Text
+'(' Punctuation
+'typespec' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'cc' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+"'CLOS::CLOSCLASS" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'cc' Name.Variable
+' ' Text
+'(' Punctuation
+'clos::defined-class-p' Name.Variable
+' ' Text
+'cc' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'clos:class-name' Name.Variable
+' ' Text
+'cc' Name.Variable
+')' Punctuation
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'cc' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+';;; TYPEP, CLTL S. 72, S. 42-51' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'typep' Name.Builtin
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'y' Name.Variable
+' ' Text
+'&optional' Keyword
+' ' Text
+'env' Name.Variable
+' ' Text
+'&aux' Keyword
+' ' Text
+'f' Name.Variable
+')' Punctuation
+' ' Text
+'; x = Objekt, y = Typ' Comment.Single
+'\n ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'env' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'y' Name.Variable
+' ' Text
+'(' Punctuation
+'expand-deftype' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'y' Name.Variable
+' ' Text
+"'TYPE-SYMBOL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'f' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'y' Name.Variable
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'f' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'y' Name.Variable
+' ' Text
+"'DEFSTRUCT-DESCRIPTION" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'ds-typep' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'y' Name.Variable
+' ' Text
+'f' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'clos-class' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"; It's not worth handling structure classes specially here." Comment.Single
+'\n ' Text
+'(' Punctuation
+'clos::typep-class' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'f' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'SATISFIES" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error-of-type' Name.Variable
+' ' Text
+"'error" Literal.String.Symbol
+'\n ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: argument to SATISFIES must be a symbol: ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'(' Punctuation
+'symbol-function' Name.Builtin
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'t' Name.Constant
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'MEMBER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'member' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'t' Name.Constant
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'EQL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'NOT" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'AND" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'type' Keyword
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'t' Name.Constant
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'OR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'type' Keyword
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+' ' Text
+'t' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'apply' Name.Builtin
+' ' Text
+'f' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::defined-class-p' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'clos::typep-class' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::eql-specializer-p' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'clos::eql-specializer-singleton' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'encodingp' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'charset-typep' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n\n' Text
+
+';; ----------------------------------------------------------------------------' Comment.Single
+'\n\n' Text
+
+';; UPGRADED-ARRAY-ELEMENT-TYPE is a lattice homomorphism, see' Comment.Single
+'\n' Text
+
+';; ANSI CL 15.1.2.1.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'(' Punctuation
+'type' Keyword
+' ' Text
+'&optional' Keyword
+' ' Text
+'environment' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'environment' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+';; see array.d' Comment.Single
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'type' Keyword
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'BIT' Name.Variable
+')' Punctuation
+' ' Text
+"'BIT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'CHARACTER' Name.Variable
+')' Punctuation
+' ' Text
+"'CHARACTER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'T' Name.Constant
+')' Punctuation
+' ' Text
+"'T" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'NIL' Name.Constant
+')' Punctuation
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'subtypep' Name.Builtin
+' ' Text
+'type' Keyword
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'NIL" Literal.String.Symbol
+'\n ' Text
+'(' Punctuation
+'multiple-value-bind' Name.Builtin
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'sys::subtype-integer' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'; Es gilt (or (null low) (subtypep type `(INTEGER ,low ,high)))' Comment.Single
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'minusp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'l' Name.Variable
+' ' Text
+'(' Punctuation
+'integer-length' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'; Es gilt (subtypep type `(UNSIGNED-BYTE ,l))' Comment.Single
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'l' Name.Variable
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"'BIT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'l' Name.Variable
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'l' Name.Variable
+' ' Text
+'4' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'4' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'l' Name.Variable
+' ' Text
+'8' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'8' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'l' Name.Variable
+' ' Text
+'16' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'16' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'l' Name.Variable
+' ' Text
+'32' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'32' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+"'T" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'subtypep' Name.Builtin
+' ' Text
+'type' Keyword
+' ' Text
+"'CHARACTER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'CHARACTER" Literal.String.Symbol
+'\n ' Text
+"'T" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+';; ----------------------------------------------------------------------------' Comment.Single
+'\n\n' Text
+
+';; UPGRADED-COMPLEX-PART-TYPE is a lattice homomorphism, see' Comment.Single
+'\n' Text
+
+';; HyperSpec/Body/fun_complex.html and HyperSpec/Body/syscla_complex.html,' Comment.Single
+'\n' Text
+
+';; and an idempotent. Therefore' Comment.Single
+'\n' Text
+
+';; (subtypep (upgraded-complex-part-type T1) (upgraded-complex-part-type T2))' Comment.Single
+'\n' Text
+
+';; is equivalent to' Comment.Single
+'\n' Text
+
+';; (subtypep T1 (upgraded-complex-part-type T2))' Comment.Single
+'\n' Text
+
+';; (Proof: Let U T be an abbreviation for (upgraded-complex-part-type T).' Comment.Single
+'\n' Text
+
+';; If U T1 <= U T2, then T1 <= U T1 <= U T2.' Comment.Single
+'\n' Text
+
+';; If T1 <= U T2, then by homomorphism U T1 <= U U T2 = U T2.)' Comment.Single
+'\n' Text
+
+';;' Comment.Single
+'\n' Text
+
+';; For _any_ CL implementation, you could define' Comment.Single
+'\n' Text
+
+";; (defun upgraded-complex-part-type (type) 'REAL)" Comment.Single
+'\n' Text
+
+';; Likewise for _any_ CL implementation, you could define' Comment.Single
+'\n' Text
+
+';; (defun upgraded-complex-part-type (type) type)' Comment.Single
+'\n' Text
+
+';; or - again for _any_ CL implementation:' Comment.Single
+'\n' Text
+
+';; (defun upgraded-complex-part-type (type)' Comment.Single
+'\n' Text
+
+";; (cond ((subtypep type 'NIL) 'NIL)" Comment.Single
+'\n' Text
+
+";; ((subtypep type 'SHORT-FLOAT) 'SHORT-FLOAT)" Comment.Single
+'\n' Text
+
+";; ((subtypep type 'SINGLE-FLOAT) 'SINGLE-FLOAT)" Comment.Single
+'\n' Text
+
+";; ((subtypep type 'DOUBLE-FLOAT) 'DOUBLE-FLOAT)" Comment.Single
+'\n' Text
+
+";; ((subtypep type 'LONG-FLOAT) 'LONG-FLOAT)" Comment.Single
+'\n' Text
+
+";; ((subtypep type 'RATIONAL) 'RATIONAL)" Comment.Single
+'\n' Text
+
+";; ((subtypep type 'REAL) 'REAL)" Comment.Single
+'\n' Text
+
+';; (t (error ...))))' Comment.Single
+'\n' Text
+
+';; The reason is that a complex number is immutable: no setters for the' Comment.Single
+'\n' Text
+
+';; realpart and imagpart exist.' Comment.Single
+'\n' Text
+
+';;' Comment.Single
+'\n' Text
+
+';; We choose the second implementation because it allows the most precise' Comment.Single
+'\n' Text
+
+';; type inference.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'upgraded-complex-part-type' Name.Builtin
+' ' Text
+'(' Punctuation
+'type' Keyword
+' ' Text
+'&optional' Keyword
+' ' Text
+'environment' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'environment' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'subtypep' Name.Builtin
+' ' Text
+'type' Keyword
+' ' Text
+"'REAL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'type' Keyword
+'\n ' Text
+'(' Punctuation
+'error-of-type' Name.Variable
+' ' Text
+"'error" Literal.String.Symbol
+'\n ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: type ~S is not a subtype of ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'upgraded-complex-part-type" Literal.String.Symbol
+' ' Text
+'type' Keyword
+' ' Text
+"'real" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+';; ----------------------------------------------------------------------------' Comment.Single
+'\n\n' Text
+
+';; Macros for defining the various built-in "atomic type specifier"s and' Comment.Single
+'\n' Text
+
+';; "compound type specifier"s. The following macros add information for both' Comment.Single
+'\n' Text
+
+';; the TYPEP function above and the c-TYPEP in the compiler.' Comment.Single
+'\n\n' Text
+
+'; Alist symbol -> funname, used by the compiler.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defparameter' Name.Builtin
+' ' Text
+'c-typep-alist1' Name.Variable
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'; Alist symbol -> lambdabody, used by the compiler.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defparameter' Name.Builtin
+' ' Text
+'c-typep-alist2' Name.Variable
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'; Alist symbol -> expander function, used by the compiler.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defparameter' Name.Builtin
+' ' Text
+'c-typep-alist3' Name.Variable
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+'; (def-atomic-type symbol function-name)' Comment.Single
+'\n' Text
+
+'; defines an atomic type. The function-name designates a function taking one' Comment.Single
+'\n' Text
+
+'; argument and returning a generalized boolean value. It can be either a' Comment.Single
+'\n' Text
+
+'; symbol or a lambda expression.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defmacro' Name.Builtin
+' ' Text
+'def-atomic-type' Name.Variable
+' ' Text
+'(' Punctuation
+'symbol' Name.Class
+' ' Text
+'funname' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'lambdap' Name.Variable
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'funname' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'funname' Name.Variable
+')' Punctuation
+' ' Text
+"'LAMBDA" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'PROGN' Name.Variable
+'\n ' Text
+'(' Punctuation
+'SETF' Name.Variable
+' ' Text
+'(' Punctuation
+'GET' Name.Variable
+' ' Text
+"',symbol" Literal.String.Symbol
+' ' Text
+"'TYPE-SYMBOL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+',' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'lambdap' Name.Variable
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'FUNCTION' Name.Variable
+' ' Text
+',' Operator
+'(' Punctuation
+'concat-pnames' Name.Variable
+' ' Text
+'"TYPE-SYMBOL-"' Literal.String
+' ' Text
+'symbol' Name.Class
+')' Punctuation
+' ' Text
+',' Operator
+'funname' Name.Variable
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'FUNCTION' Name.Variable
+' ' Text
+',' Operator
+'funname' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+',' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'lambdap' Name.Variable
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'SETQ' Name.Variable
+' ' Text
+'C-TYPEP-ALIST2' Name.Variable
+'\n ' Text
+'(' Punctuation
+'NCONC' Name.Variable
+' ' Text
+'C-TYPEP-ALIST2' Name.Variable
+' ' Text
+'(' Punctuation
+'LIST' Name.Variable
+' ' Text
+'(' Punctuation
+'CONS' Name.Variable
+' ' Text
+"',symbol" Literal.String.Symbol
+' ' Text
+"'," Literal.String.Symbol
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'funname' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'SETQ' Name.Variable
+' ' Text
+'C-TYPEP-ALIST1' Name.Variable
+'\n ' Text
+'(' Punctuation
+'NCONC' Name.Variable
+' ' Text
+'C-TYPEP-ALIST1' Name.Variable
+' ' Text
+'(' Punctuation
+'LIST' Name.Variable
+' ' Text
+'(' Punctuation
+'CONS' Name.Variable
+' ' Text
+"',symbol" Literal.String.Symbol
+' ' Text
+"',funname" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+"',symbol" Literal.String.Symbol
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n\n' Text
+
+'; (def-compound-type symbol lambda-list (x) check-form typep-form c-typep-form)' Comment.Single
+'\n' Text
+
+'; defines a compound type. The lambda-list is of the form (&optional ...)' Comment.Single
+'\n' Text
+
+'; where the arguments come from the CDR of the type specifier.' Comment.Single
+'\n' Text
+
+'; For typep-form, x is an object.' Comment.Single
+'\n' Text
+
+'; For c-typep-form, x is a multiply evaluatable form (actually a gensym).' Comment.Single
+'\n' Text
+
+"; check-form is a form performing error checking, may call `error'." Comment.Single
+'\n' Text
+
+'; typep-form should return a generalized boolean value.' Comment.Single
+'\n' Text
+
+'; c-typep-form should produce a form returning a generalized boolean value.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defmacro' Name.Builtin
+' ' Text
+'def-compound-type' Name.Variable
+' ' Text
+'(' Punctuation
+'symbol' Name.Class
+' ' Text
+'lambdalist' Name.Variable
+' ' Text
+'(' Punctuation
+'var' Name.Variable
+')' Punctuation
+' ' Text
+'check-form' Name.Variable
+' ' Text
+'typep-form' Name.Variable
+' ' Text
+'c-typep-form' Name.Variable
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'PROGN' Name.Variable
+'\n ' Text
+'(' Punctuation
+'SETF' Name.Variable
+' ' Text
+'(' Punctuation
+'GET' Name.Variable
+' ' Text
+"',symbol" Literal.String.Symbol
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'FUNCTION' Name.Variable
+' ' Text
+',' Operator
+'(' Punctuation
+'concat-pnames' Name.Variable
+' ' Text
+'"TYPE-LIST-"' Literal.String
+' ' Text
+'symbol' Name.Class
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'LAMBDA' Name.Variable
+' ' Text
+'(' Punctuation
+',' Operator
+'var' Name.Variable
+' ' Text
+',@' Operator
+'lambdalist' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'check-form' Name.Variable
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'MACROLET' Name.Variable
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'ERROR' Name.Variable
+' ' Text
+'(' Punctuation
+'&REST' Name.Variable
+' ' Text
+'ERROR-ARGS' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'LIST*' Name.Variable
+' ' Text
+"'ERROR-OF-TYPE" Literal.String.Symbol
+' ' Text
+"'" Operator
+"'ERROR" Literal.String.Symbol
+' ' Text
+'ERROR-ARGS' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+',' Operator
+'check-form' Name.Variable
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+',' Operator
+'typep-form' Name.Variable
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'SETQ' Name.Variable
+' ' Text
+'C-TYPEP-ALIST3' Name.Variable
+'\n ' Text
+'(' Punctuation
+'NCONC' Name.Variable
+' ' Text
+'C-TYPEP-ALIST3' Name.Variable
+'\n ' Text
+'(' Punctuation
+'LIST' Name.Variable
+' ' Text
+'(' Punctuation
+'CONS' Name.Variable
+' ' Text
+"',symbol" Literal.String.Symbol
+'\n ' Text
+"#'" Name.Function
+'(' Punctuation
+'LAMBDA' Name.Variable
+' ' Text
+'(' Punctuation
+',' Operator
+'var' Name.Variable
+' ' Text
+',@' Operator
+'lambdalist' Name.Variable
+' ' Text
+'&REST' Name.Variable
+' ' Text
+'ILLEGAL-ARGS' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'DECLARE' Name.Variable
+' ' Text
+'(' Punctuation
+'IGNORE' Name.Variable
+' ' Text
+'ILLEGAL-ARGS' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'check-form' Name.Variable
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'MACROLET' Name.Variable
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'ERROR' Name.Variable
+' ' Text
+'(' Punctuation
+'&REST' Name.Variable
+' ' Text
+'ERROR-ARGS' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'LIST' Name.Variable
+' ' Text
+"'PROGN" Literal.String.Symbol
+'\n ' Text
+'(' Punctuation
+'LIST*' Name.Variable
+' ' Text
+"'C-WARN" Literal.String.Symbol
+' ' Text
+'ERROR-ARGS' Name.Variable
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+'THROW' Name.Variable
+' ' Text
+"'C-TYPEP" Literal.String.Symbol
+' ' Text
+'NIL' Name.Constant
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+',' Operator
+'check-form' Name.Variable
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+',' Operator
+'c-typep-form' Name.Variable
+'\n ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+"',symbol" Literal.String.Symbol
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n\n' Text
+
+'; CLtL1 p. 43' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ARRAY' Name.Variable
+' ' Text
+'arrayp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ATOM' Name.Variable
+' ' Text
+'atom' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BASE-CHAR' Name.Variable
+'\n ' Text
+'#+' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+'\n ' Text
+'characterp' Name.Builtin
+'\n ' Text
+'#-' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'characterp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'base-char-p' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BASE-STRING' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'stringp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'array-element-type' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'#+' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+' ' Text
+"'CHARACTER" Literal.String.Symbol
+' ' Text
+'#-' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+' ' Text
+"'BASE-CHAR" Literal.String.Symbol
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BIGNUM' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'fixnump' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BIT' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BIT-VECTOR' Name.Variable
+' ' Text
+'bit-vector-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BOOLEAN' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+"'nil" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+"'t" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'CHARACTER' Name.Variable
+' ' Text
+'characterp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'COMPILED-FUNCTION' Name.Variable
+' ' Text
+'compiled-function-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'COMPLEX' Name.Variable
+' ' Text
+'complexp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'CONS' Name.Variable
+' ' Text
+'consp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'DOUBLE-FLOAT' Name.Variable
+' ' Text
+'double-float-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ENCODING' Name.Variable
+' ' Text
+'encodingp' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'EXTENDED-CHAR' Name.Variable
+'\n ' Text
+'#+' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n ' Text
+'#-' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'characterp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'base-char-p' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'FIXNUM' Name.Variable
+' ' Text
+'fixnump' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'FLOAT' Name.Variable
+' ' Text
+'floatp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'FUNCTION' Name.Variable
+' ' Text
+'functionp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'HASH-TABLE' Name.Variable
+' ' Text
+'hash-table-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'INTEGER' Name.Variable
+' ' Text
+'integerp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'KEYWORD' Name.Variable
+' ' Text
+'keywordp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'LIST' Name.Variable
+' ' Text
+'listp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'#+' Operator
+'LOGICAL-PATHNAMES' Name.Variable
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'LOGICAL-PATHNAME' Name.Variable
+' ' Text
+'logical-pathname-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'LONG-FLOAT' Name.Variable
+' ' Text
+'long-float-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'NIL' Name.Constant
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'NULL' Name.Variable
+' ' Text
+'null' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'NUMBER' Name.Variable
+' ' Text
+'numberp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'PACKAGE' Name.Variable
+' ' Text
+'packagep' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'PATHNAME' Name.Variable
+' ' Text
+'pathnamep' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'RANDOM-STATE' Name.Variable
+' ' Text
+'random-state-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'RATIO' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'rationalp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'RATIONAL' Name.Variable
+' ' Text
+'rationalp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'READTABLE' Name.Variable
+' ' Text
+'readtablep' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'REAL' Name.Variable
+' ' Text
+'realp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SEQUENCE' Name.Variable
+' ' Text
+'sequencep' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SHORT-FLOAT' Name.Variable
+' ' Text
+'short-float-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SIMPLE-ARRAY' Name.Variable
+' ' Text
+'simple-array-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SIMPLE-BASE-STRING' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'simple-string-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'array-element-type' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'#+' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+' ' Text
+"'CHARACTER" Literal.String.Symbol
+' ' Text
+'#-' Operator
+'BASE-CHAR=CHARACTER' Name.Variable
+' ' Text
+"'BASE-CHAR" Literal.String.Symbol
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SIMPLE-BIT-VECTOR' Name.Variable
+' ' Text
+'simple-bit-vector-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SIMPLE-STRING' Name.Variable
+' ' Text
+'simple-string-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SIMPLE-VECTOR' Name.Variable
+' ' Text
+'simple-vector-p' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SINGLE-FLOAT' Name.Variable
+' ' Text
+'single-float-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'%standard-char-p' Name.Variable
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'characterp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'standard-char-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'; ABI' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'STANDARD-CHAR' Name.Variable
+' ' Text
+'%standard-char-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'CLOS:STANDARD-OBJECT' Name.Variable
+' ' Text
+'clos::std-instance-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'STREAM' Name.Variable
+' ' Text
+'streamp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'FILE-STREAM' Name.Variable
+' ' Text
+'file-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SYNONYM-STREAM' Name.Variable
+' ' Text
+'synonym-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'BROADCAST-STREAM' Name.Variable
+' ' Text
+'broadcast-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'CONCATENATED-STREAM' Name.Variable
+' ' Text
+'concatenated-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'TWO-WAY-STREAM' Name.Variable
+' ' Text
+'two-way-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ECHO-STREAM' Name.Variable
+' ' Text
+'echo-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'STRING-STREAM' Name.Variable
+' ' Text
+'string-stream-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'STRING' Name.Variable
+' ' Text
+'stringp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'STRING-CHAR' Name.Variable
+' ' Text
+'characterp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'CLOS:STRUCTURE-OBJECT' Name.Variable
+' ' Text
+'clos::structure-object-p' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'SYMBOL' Name.Variable
+' ' Text
+'symbolp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'T' Name.Constant
+' ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'t' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+';; foreign1.lisp is loaded after this file,' Comment.Single
+'\n' Text
+
+';; so these symbols are not external yet' Comment.Single
+'\n' Text
+
+'#+' Operator
+'ffi' Name.Variable
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ffi::foreign-function' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+"'ffi::foreign-function" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'type-of' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'#+' Operator
+'ffi' Name.Variable
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ffi::foreign-variable' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+"'ffi::foreign-variable" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'type-of' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'#+' Operator
+'ffi' Name.Variable
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'ffi::foreign-address' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+"'ffi::foreign-address" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'type-of' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+';; see lispbibl.d (#define FOREIGN) and predtype.d (TYPE-OF):' Comment.Single
+'\n' Text
+
+'#+' Operator
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'unix' Name.Variable
+' ' Text
+'ffi' Name.Variable
+' ' Text
+'affi' Name.Variable
+' ' Text
+'win32' Name.Variable
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'foreign-pointer' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+"'foreign-pointer" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'type-of' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'VECTOR' Name.Variable
+' ' Text
+'vectorp' Name.Builtin
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-atomic-type' Name.Variable
+' ' Text
+'PLIST' Name.Variable
+'\n ' Text
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'multiple-value-bind' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'tail' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'list-length-dotted' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'tail' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'evenp' Name.Builtin
+' ' Text
+'length' Name.Builtin
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+'(' Punctuation
+'defmacro' Name.Builtin
+' ' Text
+'ensure-dim' Name.Variable
+' ' Text
+'(' Punctuation
+'type' Keyword
+' ' Text
+'dim' Name.Variable
+')' Punctuation
+'\n ' Text
+';; make sure DIM is a valid dimension' Comment.Single
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+',' Operator
+'dim' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+',' Operator
+'dim' Name.Variable
+' ' Text
+'`' Operator
+'(' Punctuation
+'INTEGER' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'(' Punctuation
+',' Operator
+'ARRAY-DIMENSION-LIMIT' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: dimension ~S is invalid"' Literal.String
+')' Punctuation
+' ' Text
+"',type" Literal.String.Symbol
+' ' Text
+',' Operator
+'dim' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+'(' Punctuation
+'defmacro' Name.Builtin
+' ' Text
+'ensure-rank' Name.Variable
+' ' Text
+'(' Punctuation
+'type' Keyword
+' ' Text
+'rank' Name.Variable
+')' Punctuation
+'\n ' Text
+';; make sure RANK is a valid rank' Comment.Single
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+',' Operator
+'rank' Name.Variable
+' ' Text
+'`' Operator
+'(' Punctuation
+'INTEGER' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'(' Punctuation
+',' Operator
+'ARRAY-RANK-LIMIT' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: rank ~S is invalid"' Literal.String
+')' Punctuation
+' ' Text
+"',type" Literal.String.Symbol
+' ' Text
+',' Operator
+'rank' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+'; CLtL1 p. 46-50' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'c-typep-array' Name.Variable
+' ' Text
+'(' Punctuation
+'tester' Name.Variable
+' ' Text
+'el-type' Name.Variable
+' ' Text
+'dims' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+',' Operator
+'tester' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQUAL' Name.Variable
+' ' Text
+'(' Punctuation
+'ARRAY-ELEMENT-TYPE' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"'," Literal.String.Symbol
+'(' Punctuation
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+',' Operator
+'dims' Name.Variable
+' ' Text
+'(' Punctuation
+'ARRAY-RANK' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+',' Operator
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'ARRAY-RANK' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'i' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'mapcap' Name.Variable
+' ' Text
+"#'" Name.Function
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'dim' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'prog1' Name.Builtin
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'dim' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+"',dim" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'ARRAY-DIMENSION' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+' ' Text
+',' Operator
+'i' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'incf' Name.Builtin
+' ' Text
+'i' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'dims' Name.Variable
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'c-typep-vector' Name.Variable
+' ' Text
+'(' Punctuation
+'tester' Name.Variable
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+',' Operator
+'tester' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+"',size" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'ARRAY-DIMENSION' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'typep-number-test' Name.Variable
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'test' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'test' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'test' Name.Variable
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'test' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'<' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'error-of-type' Name.Variable
+' ' Text
+"'error" Literal.String.Symbol
+'\n ' Text
+'#1=' Operator
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: argument to ~S must be *, ~S or a list of ~S: ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+' ' Text
+'type' Keyword
+' ' Text
+'type' Keyword
+' ' Text
+'low' Name.Variable
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'test' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'>=' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'test' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'>' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'error-of-type' Name.Variable
+' ' Text
+"'error" Literal.String.Symbol
+'\n ' Text
+'#1#' Operator
+' ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+' ' Text
+'type' Keyword
+' ' Text
+'type' Keyword
+' ' Text
+'high' Name.Variable
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'c-typep-number' Name.Variable
+' ' Text
+'(' Punctuation
+'caller' Name.Variable
+' ' Text
+'tester' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+',' Operator
+'tester' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'tester' Name.Variable
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+',' Operator
+'low' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'tester' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'<' Name.Builtin
+' ' Text
+',' Operator
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'c-warn' Name.Variable
+' ' Text
+'#1=' Operator
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: argument to ~S must be *, ~S or a list of ~S: ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'caller' Name.Variable
+' ' Text
+'caller' Name.Variable
+' ' Text
+'caller' Name.Variable
+' ' Text
+'low' Name.Variable
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'throw' Keyword
+' ' Text
+"'c-TYPEP" Literal.String.Symbol
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'tester' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'>=' Name.Builtin
+' ' Text
+',' Operator
+'high' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'tester' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'>' Name.Builtin
+' ' Text
+',' Operator
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'c-warn' Name.Variable
+' ' Text
+'#1#' Operator
+' ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'caller' Name.Variable
+' ' Text
+'caller' Name.Variable
+' ' Text
+'caller' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'throw' Keyword
+' ' Text
+"'c-TYPEP" Literal.String.Symbol
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'ARRAY' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-rank' Name.Variable
+' ' Text
+'ARRAY' Name.Variable
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'dim' Name.Variable
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'ARRAY' Name.Variable
+' ' Text
+'dim' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'arrayp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'equal' Name.Builtin
+' ' Text
+'(' Punctuation
+'array-element-type' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+'(' Punctuation
+'array-rank' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'array-rank' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'every' Name.Builtin
+' ' Text
+"#'" Name.Function
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'a' Name.Variable
+' ' Text
+'b' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'a' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'a' Name.Variable
+' ' Text
+'b' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'dims' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimensions' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-array' Name.Variable
+' ' Text
+"'ARRAYP" Literal.String.Symbol
+' ' Text
+'el-type' Name.Variable
+' ' Text
+'dims' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SIMPLE-ARRAY' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-rank' Name.Variable
+' ' Text
+'SIMPLE-ARRAY' Name.Variable
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'dim' Name.Variable
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'SIMPLE-ARRAY' Name.Variable
+' ' Text
+'dim' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'simple-array-p' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'equal' Name.Builtin
+' ' Text
+'(' Punctuation
+'array-element-type' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'dims' Name.Variable
+' ' Text
+'(' Punctuation
+'array-rank' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'dims' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'array-rank' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'every' Name.Builtin
+' ' Text
+"#'" Name.Function
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'a' Name.Variable
+' ' Text
+'b' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'a' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'a' Name.Variable
+' ' Text
+'b' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'dims' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimensions' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-array' Name.Variable
+' ' Text
+"'SIMPLE-ARRAY-P" Literal.String.Symbol
+' ' Text
+'el-type' Name.Variable
+' ' Text
+'dims' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'VECTOR' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'VECTOR' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'vectorp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'equal' Name.Builtin
+' ' Text
+'(' Punctuation
+'array-element-type' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'size' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+'VECTORP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQUAL' Name.Variable
+' ' Text
+'(' Punctuation
+'ARRAY-ELEMENT-TYPE' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"'," Literal.String.Symbol
+'(' Punctuation
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+'(' Punctuation
+'ARRAY-DIMENSION' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+"',size" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SIMPLE-VECTOR' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'SIMLPE-VECTOR' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'simple-vector-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'SIMPLE-VECTOR-P" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'COMPLEX' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'rtype' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'itype' Name.Variable
+' ' Text
+'rtype' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'complexp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'rtype' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'(' Punctuation
+'realpart' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'upgraded-complex-part-type' Name.Builtin
+' ' Text
+'rtype' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'itype' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'(' Punctuation
+'imagpart' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'upgraded-complex-part-type' Name.Builtin
+' ' Text
+'itype' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+'COMPLEXP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'rtype' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'TYPEP' Name.Variable
+' ' Text
+'(' Punctuation
+'REALPART' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"'," Literal.String.Symbol
+'(' Punctuation
+'upgraded-complex-part-type' Name.Builtin
+' ' Text
+'rtype' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'itype' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'TYPEP' Name.Variable
+' ' Text
+'(' Punctuation
+'IMAGPART' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"'," Literal.String.Symbol
+'(' Punctuation
+'upgraded-complex-part-type' Name.Builtin
+' ' Text
+'itype' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'INTEGER' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'integerp' Name.Builtin
+' ' Text
+"'INTEGER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'INTEGER" Literal.String.Symbol
+' ' Text
+"'INTEGERP" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'MOD' Name.Variable
+' ' Text
+'(' Punctuation
+'n' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: argument to MOD must be an integer: ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'n' Name.Variable
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'<' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+'INTEGERP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'NOT' Name.Variable
+' ' Text
+'(' Punctuation
+'MINUSP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'<' Name.Builtin
+' ' Text
+',' Operator
+'x' Name.Variable
+' ' Text
+',' Operator
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SIGNED-BYTE' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: argument to SIGNED-BYTE must be an integer or * : ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'n' Name.Variable
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'<' Name.Builtin
+' ' Text
+'(' Punctuation
+'integer-length' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+'INTEGERP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+' ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'<' Name.Builtin
+' ' Text
+'(' Punctuation
+'INTEGER-LENGTH' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+',' Operator
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S: argument to UNSIGNED-BYTE must be an integer or * : ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'typep" Literal.String.Symbol
+' ' Text
+'n' Name.Variable
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'minusp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'(' Punctuation
+'integer-length' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+'INTEGERP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'NOT' Name.Variable
+' ' Text
+'(' Punctuation
+'MINUSP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+' ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'(' Punctuation
+'INTEGER-LENGTH' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+',' Operator
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'REAL' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'realp' Name.Builtin
+' ' Text
+"'REAL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'REAL" Literal.String.Symbol
+' ' Text
+"'REALP" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'RATIONAL' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'rationalp' Name.Builtin
+' ' Text
+"'RATIONAL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'RATIONAL" Literal.String.Symbol
+' ' Text
+"'RATIONALP" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'FLOAT' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'floatp' Name.Builtin
+' ' Text
+"'FLOAT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'FLOAT" Literal.String.Symbol
+' ' Text
+"'FLOATP" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SHORT-FLOAT' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'short-float-p' Name.Variable
+' ' Text
+"'SHORT-FLOAT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'SHORT-FLOAT" Literal.String.Symbol
+' ' Text
+"'SHORT-FLOAT-P" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SINGLE-FLOAT' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'single-float-p' Name.Variable
+' ' Text
+"'SINGLE-FLOAT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'SINGLE-FLOAT" Literal.String.Symbol
+' ' Text
+"'SINGLE-FLOAT-P" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'DOUBLE-FLOAT' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'double-float-p' Name.Variable
+' ' Text
+"'DOUBLE-FLOAT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'DOUBLE-FLOAT" Literal.String.Symbol
+' ' Text
+"'DOUBLE-FLOAT-P" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'LONG-FLOAT' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'typep-number-test' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+"#'" Name.Function
+'long-float-p' Name.Variable
+' ' Text
+"'LONG-FLOAT" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-number' Name.Variable
+' ' Text
+"'LONG-FLOAT" Literal.String.Symbol
+' ' Text
+"'LONG-FLOAT-P" Literal.String.Symbol
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'STRING' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'STRING' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'stringp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'STRINGP" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SIMPLE-STRING' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'SIMPLE-STRING' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'simple-string-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'SIMPLE-STRING-P" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'BASE-STRING' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'BASE-STRING' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'stringp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'STRINGP" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SIMPLE-BASE-STRING' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'SIMPLE-BASE-STRING' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'simple-string-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'SIMPLE-STRING-P" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'BIT-VECTOR' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'BIT-VECTOR' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'bit-vector-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'BIT-VECTOR-P" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'SIMPLE-BIT-VECTOR' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'ensure-dim' Name.Variable
+' ' Text
+'SIMPLE-BIT-VECTOR' Name.Variable
+' ' Text
+'size' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'simple-bit-vector-p' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'size' Name.Variable
+' ' Text
+'(' Punctuation
+'array-dimension' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'c-typep-vector' Name.Variable
+' ' Text
+"'SIMPLE-BIT-VECTOR-P" Literal.String.Symbol
+' ' Text
+'size' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'def-compound-type' Name.Variable
+' ' Text
+'CONS' Name.Variable
+' ' Text
+'(' Punctuation
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'car-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'cdr-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'nil' Name.Constant
+'\n ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'car-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'car-type' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'cdr-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'cdr-type' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'(' Punctuation
+'CONSP' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'car-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+' ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'TYPEP' Name.Variable
+' ' Text
+'(' Punctuation
+'CAR' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"',car-type" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+',@' Operator
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'cdr-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+')' Punctuation
+' ' Text
+'`' Operator
+'(' Punctuation
+'(' Punctuation
+'TYPEP' Name.Variable
+' ' Text
+'(' Punctuation
+'CDR' Name.Variable
+' ' Text
+',' Operator
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"',cdr-type" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+'\n\n' Text
+
+'(' Punctuation
+'fmakunbound' Name.Builtin
+' ' Text
+"'def-compound-type" Literal.String.Symbol
+')' Punctuation
+'\n\n' Text
+
+';; ----------------------------------------------------------------------------' Comment.Single
+'\n\n' Text
+
+'; Typtest ohne Gefahr einer Fehlermeldung. Für SIGNAL und HANDLER-BIND.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'safe-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'y' Name.Variable
+' ' Text
+'&optional' Keyword
+' ' Text
+'env' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'*error-handler*' Name.Variable.Global
+'\n ' Text
+"#'" Name.Function
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'&rest' Keyword
+' ' Text
+'error-args' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'declare' Keyword
+' ' Text
+'(' Punctuation
+'ignore' Keyword
+' ' Text
+'error-args' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'safe-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'nil' Name.Constant
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+'y' Name.Variable
+' ' Text
+'env' Name.Variable
+')' Punctuation
+' ' Text
+'t' Name.Constant
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n\n' Text
+
+'; Umwandlung eines "type for declaration" in einen "type for discrimination".' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'type-for-discrimination' Name.Variable
+' ' Text
+'(' Punctuation
+'y' Name.Variable
+' ' Text
+'&optional' Keyword
+' ' Text
+'(' Punctuation
+'notp' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+' ' Text
+'&aux' Keyword
+' ' Text
+'f' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'y' Name.Variable
+' ' Text
+"'TYPE-SYMBOL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'y' Name.Variable
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'y' Name.Variable
+' ' Text
+"'DEFTYPE-EXPANDER" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let*' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'z' Name.Variable
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'list' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'zx' Name.Variable
+' ' Text
+'(' Punctuation
+'type-for-discrimination' Name.Variable
+' ' Text
+'z' Name.Variable
+' ' Text
+'notp' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'zx' Name.Variable
+' ' Text
+'z' Name.Variable
+')' Punctuation
+' ' Text
+'y' Name.Variable
+' ' Text
+'zx' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'SATISFIES' Name.Variable
+' ' Text
+'MEMBER' Name.Variable
+' ' Text
+'EQL' Name.Variable
+')' Punctuation
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'NOT' Name.Variable
+'\n ' Text
+'(' Punctuation
+'let*' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'z' Name.Variable
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'zx' Name.Variable
+' ' Text
+'(' Punctuation
+'type-for-discrimination' Name.Variable
+' ' Text
+'z' Name.Variable
+' ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'notp' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'zx' Name.Variable
+' ' Text
+'z' Name.Variable
+')' Punctuation
+' ' Text
+'y' Name.Variable
+' ' Text
+'`' Operator
+'(' Punctuation
+'NOT' Name.Variable
+' ' Text
+',' Operator
+'zx' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'OR' Name.Variable
+' ' Text
+'COMPLEX' Name.Variable
+' ' Text
+'VALUES' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let*' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'z' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'zx' Name.Variable
+' ' Text
+'(' Punctuation
+'mapcar' Name.Builtin
+' ' Text
+"#'" Name.Function
+'(' Punctuation
+'lambda' Keyword
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'type-for-discrimination' Name.Variable
+' ' Text
+'x' Name.Variable
+' ' Text
+'notp' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'z' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'every' Name.Builtin
+' ' Text
+"#'" Name.Function
+'eql' Name.Builtin
+' ' Text
+'z' Name.Variable
+' ' Text
+'zx' Name.Variable
+')' Punctuation
+' ' Text
+'y' Name.Variable
+' ' Text
+'(' Punctuation
+'cons' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+'zx' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'FUNCTION' Name.Variable
+'\n ' Text
+';; (FUNCTION arg-types res-type) is somewhere between' Comment.Single
+'\n ' Text
+';; NIL and FUNCTION, but undecidable.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'notp' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+' ' Text
+"'FUNCTION" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'f' Name.Variable
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'y' Name.Variable
+')' Punctuation
+' ' Text
+"'DEFTYPE-EXPANDER" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let*' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'z' Name.Variable
+' ' Text
+'(' Punctuation
+'funcall' Name.Builtin
+' ' Text
+'f' Name.Variable
+' ' Text
+'y' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'zx' Name.Variable
+' ' Text
+'(' Punctuation
+'type-for-discrimination' Name.Variable
+' ' Text
+'z' Name.Variable
+' ' Text
+'notp' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'zx' Name.Variable
+' ' Text
+'z' Name.Variable
+')' Punctuation
+' ' Text
+'y' Name.Variable
+' ' Text
+'zx' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'y' Name.Variable
+')' Punctuation
+'\n' Text
+
+')' Punctuation
+' ' Text
+')' Punctuation
+'\n\n' Text
+
+'; Testet eine Liste von Werten auf Erfüllen eines Type-Specifiers. Für THE.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'%the' Name.Variable
+' ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'; ABI' Comment.Single
+'\n ' Text
+'(' Punctuation
+'macrolet' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'near-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'objform' Name.Variable
+' ' Text
+'typform' Name.Variable
+')' Punctuation
+'\n ' Text
+';; near-typep ist wie typep, nur dass das Objekt auch ein' Comment.Single
+'\n ' Text
+';; Read-Label sein darf. Das tritt z.B. auf bei' Comment.Single
+'\n ' Text
+';; (read-from-string "#1=#S(FOO :X #1#)")' Comment.Single
+'\n ' Text
+';; im Konstruktor MAKE-FOO. Die Implementation ist aber' Comment.Single
+'\n ' Text
+';; nicht gezwungen, bei fehlerhaftem THE zwingend einen' Comment.Single
+'\n ' Text
+';; Fehler zu melden, darum ist ein lascherer Typcheck hier' Comment.Single
+'\n ' Text
+';; erlaubt.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'g' Name.Variable
+' ' Text
+'(' Punctuation
+'gensym' Name.Builtin
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'`' Operator
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+',' Operator
+'g' Name.Variable
+' ' Text
+',' Operator
+'objform' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+',' Operator
+'g' Name.Variable
+' ' Text
+',' Operator
+'typform' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'type-of' Name.Builtin
+' ' Text
+',' Operator
+'g' Name.Variable
+')' Punctuation
+' ' Text
+"'READ-LABEL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'VALUES" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+';; The VALUES type specifier is ill-defined in ANSI CL.' Comment.Single
+'\n ' Text
+';;' Comment.Single
+'\n ' Text
+';; There are two possibilities to define a VALUES type specifier in a' Comment.Single
+'\n ' Text
+';; sane way:' Comment.Single
+'\n ' Text
+';; - (EXACT-VALUES type1 ... [&optional ...]) describes the exact shape' Comment.Single
+'\n ' Text
+';; of the values list, as received by MULTIPLE-VALUE-LIST.' Comment.Single
+'\n ' Text
+";; For example, (EXACT-VALUES SYMBOL) is matched by (values 'a) but not" Comment.Single
+'\n ' Text
+";; by (values 'a 'b) or (values)." Comment.Single
+'\n ' Text
+';; - (ASSIGNABLE-VALUES type1 ... [&optional ...]) describes the values' Comment.Single
+'\n ' Text
+';; as received by a set of variables through MULTIPLE-VALUE-BIND or' Comment.Single
+'\n ' Text
+';; MULTIPLE-VALUE-SETQ. For example, (ASSIGNABLE-VALUES SYMBOL) is' Comment.Single
+'\n ' Text
+';; defined by whether' Comment.Single
+'\n ' Text
+';; (MULTIPLE-VALUE-BIND (var1) values (DECLARE (TYPE SYMBOL var1)) ...)' Comment.Single
+'\n ' Text
+';; is valid or not; therefore (ASSIGNABLE-VALUES SYMBOL) is matched by' Comment.Single
+'\n ' Text
+";; (values 'a) and (values 'a 'b) and (values)." Comment.Single
+'\n ' Text
+';; Note that &OPTIONAL is actually redundant here:' Comment.Single
+'\n ' Text
+';; (ASSIGNABLE-VALUES type1 ... &optional otype1 ...)' Comment.Single
+'\n ' Text
+';; is equivalent to' Comment.Single
+'\n ' Text
+';; (ASSIGNABLE-VALUES type1 ... (OR NULL otype1) ...)' Comment.Single
+'\n ' Text
+';; HyperSpec/Body/typspe_values.html indicates that VALUES means' Comment.Single
+'\n ' Text
+';; EXACT-VALUES; however, HyperSpec/Body/speope_the.html indicates that' Comment.Single
+'\n ' Text
+';; VALUES means ASSIGNABLE-VALUES.' Comment.Single
+'\n ' Text
+';;' Comment.Single
+'\n ' Text
+';; SBCL interprets the VALUES type specifier to mean EXACT-VALUES when' Comment.Single
+'\n ' Text
+';; it contains &OPTIONAL or &REST, but ASSIGNABLE-VALUES when it has' Comment.Single
+'\n ' Text
+';; only a tuple of type specifiers. This is utter nonsense, in particular' Comment.Single
+'\n ' Text
+';; because it makes (VALUES type1 ... typek &OPTIONAL)' Comment.Single
+'\n ' Text
+';; different from (VALUES type1 ... typek).' Comment.Single
+'\n ' Text
+';;' Comment.Single
+'\n ' Text
+';; Here we use the ASSIGNABLE-VALUES interpretation.' Comment.Single
+'\n ' Text
+";; In SUBTYPEP we just punt and don't assume any interpretation." Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'vals' Name.Variable
+' ' Text
+'values' Name.Builtin
+')' Punctuation
+' ' Text
+'(' Punctuation
+'types' Name.Variable
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+';; required:' Comment.Single
+'\n ' Text
+'(' Punctuation
+'loop' Name.Builtin
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'t' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'memq' Name.Variable
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'lambda-list-keywords' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'near-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+';; &optional:' Comment.Single
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+"'&optional" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'types' Name.Variable
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'loop' Name.Builtin
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'t' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'memq' Name.Variable
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'lambda-list-keywords' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'near-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+';; &rest &key:' Comment.Single
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'&rest' Keyword
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'types' Name.Variable
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'the" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'near-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'&key' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'the" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+"'&key" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'progn' Keyword
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'types' Name.Variable
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'oddp' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'keywords' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'loop' Name.Builtin
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'vals' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'t' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'memq' Name.Variable
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'lambda-list-keywords' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'item' Name.Variable
+' ' Text
+'(' Punctuation
+'pop' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'listp' Name.Builtin
+' ' Text
+'item' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'item' Name.Variable
+')' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'item' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'the" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'kw' Name.Variable
+' ' Text
+'(' Punctuation
+'symbol-to-keyword' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'item' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'near-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'getf' Name.Builtin
+' ' Text
+'vals' Name.Variable
+' ' Text
+'kw' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'item' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'push' Name.Builtin
+' ' Text
+'kw' Name.Variable
+' ' Text
+'keywords' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+"'&allow-other-keys" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'types' Name.Variable
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'getf' Name.Builtin
+' ' Text
+'vals' Name.Variable
+' ' Text
+"'" Operator
+':allow-other-keys' Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'do' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'L' Name.Variable
+' ' Text
+'vals' Name.Variable
+' ' Text
+'(' Punctuation
+'cddr' Name.Builtin
+' ' Text
+'L' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'atom' Name.Builtin
+' ' Text
+'L' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'memq' Name.Variable
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'L' Name.Variable
+')' Punctuation
+' ' Text
+'keywords' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'%the' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'types' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'the" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'t' Name.Constant
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'near-typep' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'values' Name.Builtin
+')' Punctuation
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'values' Name.Builtin
+')' Punctuation
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+';;; ===========================================================================' Comment.Single
+'\n\n' Text
+
+';; SUBTYPEP' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'load' Name.Builtin
+' ' Text
+'"subtypep"' Literal.String
+')' Punctuation
+'\n\n\n' Text
+
+';; Returns the number of bytes that are needed to represent #\\Null in a' Comment.Single
+'\n' Text
+
+';; given encoding.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'encoding-zeroes' Name.Variable
+' ' Text
+'(' Punctuation
+'encoding' Name.Variable
+')' Punctuation
+'\n ' Text
+'#+' Operator
+'UNICODE' Name.Variable
+'\n ' Text
+';; this should use min_bytes_per_char for cache, not the hash table' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'name' Name.Variable
+' ' Text
+'(' Punctuation
+'ext:encoding-charset' Name.Variable
+' ' Text
+'encoding' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'table' Name.Variable
+' ' Text
+'#.' Operator
+'(' Punctuation
+'make-hash-table' Name.Builtin
+' ' Text
+':key-type' Literal.String.Symbol
+' ' Text
+"'" Operator
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'string' Name.Builtin
+' ' Text
+'symbol' Name.Class
+')' Punctuation
+' ' Text
+':value-type' Literal.String.Symbol
+' ' Text
+"'fixnum" Literal.String.Symbol
+'\n ' Text
+':test' Literal.String.Symbol
+' ' Text
+"'stablehash-equal" Literal.String.Symbol
+' ' Text
+':warn-if-needs-rehash-after-gc' Literal.String.Symbol
+' ' Text
+'t' Name.Constant
+'\n ' Text
+':initial-contents' Literal.String.Symbol
+' ' Text
+"'" Operator
+'(' Punctuation
+'(' Punctuation
+'"UTF-7"' Literal.String
+' ' Text
+'.' Operator
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'tester' Name.Variable
+' ' Text
+'#.' Operator
+'(' Punctuation
+'make-string' Name.Builtin
+' ' Text
+'2' Literal.Number.Integer
+' ' Text
+':initial-element' Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'code-char' Name.Builtin
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'gethash' Name.Builtin
+' ' Text
+'name' Name.Variable
+' ' Text
+'table' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setf' Name.Builtin
+' ' Text
+'(' Punctuation
+'gethash' Name.Builtin
+' ' Text
+'name' Name.Variable
+' ' Text
+'table' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'-' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'(' Punctuation
+'ext:convert-string-to-bytes' Name.Variable
+' ' Text
+'tester' Name.Variable
+' ' Text
+'encoding' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'(' Punctuation
+'ext:convert-string-to-bytes' Name.Variable
+' ' Text
+'tester' Name.Variable
+' ' Text
+'encoding' Name.Variable
+'\n ' Text
+':end' Literal.String.Symbol
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'#-' Operator
+'UNICODE' Name.Variable
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+'\n\n' Text
+
+';; Determines two values low,high such that' Comment.Single
+'\n' Text
+
+';; (subtypep type `(INTEGER ,low ,high))' Comment.Single
+'\n' Text
+
+';; holds and low is as large as possible and high is as small as possible.' Comment.Single
+'\n' Text
+
+';; low = * means -infinity, high = * means infinity.' Comment.Single
+'\n' Text
+
+";; When (subtypep type 'INTEGER) is false, the values NIL,NIL are returned." Comment.Single
+'\n' Text
+
+';; We need this function only for MAKE-ARRAY, UPGRADED-ARRAY-ELEMENT-TYPE and' Comment.Single
+'\n' Text
+
+';; OPEN and can therefore w.l.o.g. replace' Comment.Single
+'\n' Text
+
+';; type with `(OR ,type (MEMBER 0))' Comment.Single
+'\n' Text
+
+'#|' Comment.Multiline
+" ;; The original implementation calls canonicalize-type and then applies\n ;; a particular SUBTYPE variant:\n (defun subtype-integer (type)\n (macrolet ((yes () '(return-from subtype-integer (values low high)))\n (no () '(return-from subtype-integer nil))\n (unknown () '(return-from subtype-integer nil)))\n (setq type (canonicalize-type type))\n (if (consp type)\n (case (first type)\n (MEMBER ; (MEMBER &rest objects)\n ;; All elements must be of type INTEGER.\n (let ((low 0) (high 0)) ; wlog!\n (dolist (x (rest type) (yes))\n (unless (typep x 'INTEGER) (return (no)))\n (setq low (min low x) high (max high x)))))\n (OR ; (OR type*)\n ;; Every type must be subtype of INTEGER.\n (let ((low 0) (high 0)) ; wlog!\n (dolist (type1 (rest type) (yes))\n (multiple-value-bind (low1 high1) (subtype-integer type1)\n (unless low1 (return (no)))\n (setq low (if (or (eq low '*) (eq low1 '*)) '* (min low low1))\n high (if (or (eq high '*) (eq high1 '*))\n '* (max high high1)))))))\n (AND ; (AND type*)\n ;; If one of the types is subtype of INTEGER, then yes,\n ;; otherwise unknown.\n (let ((low nil) (high nil))\n (dolist (type1 (rest type))\n (multiple-value-bind (low1 high1) (subtype-integer type1)\n (when low1\n (if low\n (setq low (if (eq low '*) low1 (if (eq low1 '*) low (max low low1)))\n high (if (eq high '*) high1 (if (eq high1 '*) high (min high high1))))\n (setq low low1 high high1)))))\n (if low\n (progn\n (when (and (numberp low) (numberp high) (not (<= low high)))\n (setq low 0 high 0) ; type equivalent to NIL)\n (yes))\n (unknown)))))\n (setq type (list type)))\n (if (eq (first type) 'INTEGER)\n (let ((low (if (rest type) (second type) '*))\n (high (if (cddr type) (third type) '*)))\n (when (consp low)\n (setq low (first low))\n (when (numberp low) (incf low)))\n (when (consp high)\n (setq high (first high))\n (when (numberp high) (decf high)))\n (when (and (numberp low) (numberp high) (not (<= low high))) ; type leer?\n (setq low 0 high 0))\n (yes))\n (if (and (eq (first type) 'INTERVALS) (eq (second type) 'INTEGER))\n (let ((low (third type))\n (high (car (last type))))\n (when (consp low)\n (setq low (first low))\n (when (numberp low) (incf low)))\n (when (consp high)\n (setq high (first high))\n (when (numberp high) (decf high)))\n (yes))\n (unknown)))))\n" Comment.Multiline
+
+'|#' Comment.Multiline
+' ' Text
+';; This implementation inlines the (tail-recursive) canonicalize-type' Comment.Single
+'\n ' Text
+";; function. Its advantage is that it doesn't cons as much." Comment.Single
+'\n ' Text
+";; (For example, (subtype-integer '(UNSIGNED-BYTE 8)) doesn't cons.)" Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'subtype-integer' Name.Variable
+' ' Text
+'(' Punctuation
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'macrolet' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'yes' Name.Variable
+' ' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'subtype-integer' Name.Variable
+' ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'no' Name.Variable
+' ' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'subtype-integer' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unknown' Name.Variable
+' ' Text
+'(' Punctuation
+')' Punctuation
+' ' Text
+"'" Operator
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'subtype-integer' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'type' Keyword
+' ' Text
+'(' Punctuation
+'expand-deftype' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'type' Keyword
+'\n ' Text
+'(' Punctuation
+'BIT' Name.Variable
+' ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'FIXNUM' Name.Variable
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'" Operator
+'#,' Operator
+'most-negative-fixnum' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'" Operator
+'#,' Operator
+'most-positive-fixnum' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'INTEGER' Name.Variable
+' ' Text
+'BIGNUM' Name.Variable
+' ' Text
+'SIGNED-BYTE' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'NIL' Name.Constant
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'; wlog!' Comment.Single
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'list-length' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'(' Punctuation
+'last' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'MEMBER' Name.Variable
+' ' Text
+'; (MEMBER &rest objects)' Comment.Single
+'\n ' Text
+';; All elements must be of type INTEGER.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+'; wlog!' Comment.Single
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+"'INTEGER" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+' ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'min' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'max' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+'; (EQL object)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+"'INTEGER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'min' Name.Builtin
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'max' Name.Builtin
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'OR' Name.Variable
+' ' Text
+'; (OR type*)' Comment.Single
+'\n ' Text
+';; Every type must be subtype of INTEGER.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+'; wlog!' Comment.Single
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'type1' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'multiple-value-bind' Name.Builtin
+' ' Text
+'(' Punctuation
+'low1' Name.Variable
+' ' Text
+'high1' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'subtype-integer' Name.Variable
+' ' Text
+'type1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'low1' Name.Variable
+' ' Text
+'(' Punctuation
+'return' Name.Builtin
+' ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'low1' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'*" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'min' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'low1' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'high1' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'*" Literal.String.Symbol
+' ' Text
+'(' Punctuation
+'max' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+'high1' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'; (AND type*)' Comment.Single
+'\n ' Text
+';; If one of the types is subtype of INTEGER, then yes,' Comment.Single
+'\n ' Text
+';; otherwise unknown.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'type1' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'multiple-value-bind' Name.Builtin
+' ' Text
+'(' Punctuation
+'low1' Name.Variable
+' ' Text
+'high1' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'subtype-integer' Name.Variable
+' ' Text
+'type1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'low1' Name.Variable
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'low' Name.Variable
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'low1' Name.Variable
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'low1' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'low' Name.Variable
+'\n ' Text
+'(' Punctuation
+'max' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'low1' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'high1' Name.Variable
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'high1' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'high' Name.Variable
+'\n ' Text
+'(' Punctuation
+'min' Name.Builtin
+' ' Text
+'high' Name.Variable
+' ' Text
+'high1' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'low1' Name.Variable
+'\n ' Text
+'high' Name.Variable
+' ' Text
+'high1' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'low' Name.Variable
+'\n ' Text
+'(' Punctuation
+'progn' Keyword
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'high' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+'; type equivalent to NIL' Comment.Single
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unknown' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'INTEGER' Name.Variable
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'cddr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'third' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'incf' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'decf' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'not' Name.Builtin
+' ' Text
+'(' Punctuation
+'<=' Name.Builtin
+' ' Text
+'low' Name.Variable
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'high' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+'; type equivalent to NIL' Comment.Single
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'INTERVALS' Name.Variable
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'INTEGER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'third' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'car' Name.Builtin
+' ' Text
+'(' Punctuation
+'last' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'incf' Name.Builtin
+' ' Text
+'low' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'numberp' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'decf' Name.Builtin
+' ' Text
+'high' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unknown' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'MOD' Name.Variable
+' ' Text
+'; (MOD n)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'n' Name.Variable
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'>=' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'n' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'1-' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'SIGNED-BYTE' Name.Variable
+' ' Text
+'; (SIGNED-BYTE &optional s)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'s' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'s' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'progn' Keyword
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'s' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'plusp' Name.Builtin
+' ' Text
+'s' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'n' Name.Variable
+' ' Text
+'(' Punctuation
+'ash' Name.Builtin
+' ' Text
+'1' Literal.Number.Integer
+' ' Text
+'(' Punctuation
+'1-' Name.Builtin
+' ' Text
+'s' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'; (ash 1 *) == (expt 2 *)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'-' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'1-' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'UNSIGNED-BYTE' Name.Variable
+' ' Text
+'; (UNSIGNED-BYTE &optional s)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'s' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'s' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'progn' Keyword
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'integerp' Name.Builtin
+' ' Text
+'s' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'>=' Name.Builtin
+' ' Text
+'s' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'n' Name.Variable
+' ' Text
+'(' Punctuation
+'ash' Name.Builtin
+' ' Text
+'1' Literal.Number.Integer
+' ' Text
+'s' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'; (ash 1 *) == (expt 2 *)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'1-' Name.Builtin
+' ' Text
+'n' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::defined-class-p' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'clos::built-in-class-p' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'(' Punctuation
+'clos:class-name' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'CLOS::CLOSCLASS" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'return-from' Keyword
+' ' Text
+'subtype-integer' Name.Variable
+'\n ' Text
+'(' Punctuation
+'subtype-integer' Name.Variable
+' ' Text
+'(' Punctuation
+'clos:class-name' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::eql-specializer-p' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'clos::eql-specializer-singleton' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'typep' Name.Builtin
+' ' Text
+'x' Name.Variable
+' ' Text
+"'INTEGER" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'low' Name.Variable
+' ' Text
+'(' Punctuation
+'min' Name.Builtin
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'high' Name.Variable
+' ' Text
+'(' Punctuation
+'max' Name.Builtin
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'yes' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'encodingp' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'no' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+'#|' Comment.Multiline
+" TODO: Fix subtype-integer such that this works.\nHenry Baker:\n (defun type-null (x)\n (values (and (eq 'bit (upgraded-array-element-type `(or bit ,x)))\n (not (typep 0 x))\n (not (typep 1 x)))\n t))\n (type-null '(and symbol number))\n (type-null '(and integer symbol))\n (type-null '(and integer character))\n" Comment.Multiline
+
+'|#' Comment.Multiline
+'\n\n' Text
+
+';; Determines a sequence kind (an atom, as defined in defseq.lisp: one of' Comment.Single
+'\n' Text
+
+';; LIST - stands for LIST' Comment.Single
+'\n' Text
+
+';; VECTOR - stands for (VECTOR T)' Comment.Single
+'\n' Text
+
+';; STRING - stands for (VECTOR CHARACTER)' Comment.Single
+'\n' Text
+
+';; 1, 2, 4, 8, 16, 32 - stands for (VECTOR (UNSIGNED-BYTE n))' Comment.Single
+'\n' Text
+
+';; 0 - stands for (VECTOR NIL))' Comment.Single
+'\n' Text
+
+';; that indicates the sequence type meant by the given type. Other possible' Comment.Single
+'\n' Text
+
+';; return values are' Comment.Single
+'\n' Text
+
+';; SEQUENCE - denoting a type whose intersection with (OR LIST VECTOR) is not' Comment.Single
+'\n' Text
+
+';; subtype of LIST or VECTOR, or' Comment.Single
+'\n' Text
+
+';; NIL - indicating a type whose intersection with (OR LIST VECTOR) is empty.' Comment.Single
+'\n' Text
+
+';; When the type is (OR (VECTOR eltype1) ... (VECTOR eltypeN)), the chosen' Comment.Single
+'\n' Text
+
+';; element type is the smallest element type that contains all of eltype1 ...' Comment.Single
+'\n' Text
+
+';; eltypeN.' Comment.Single
+'\n' Text
+
+';;' Comment.Single
+'\n' Text
+
+';; User-defined sequence types are not supported here.' Comment.Single
+'\n' Text
+
+';;' Comment.Single
+'\n' Text
+
+';; This implementation inlines the (tail-recursive) canonicalize-type' Comment.Single
+'\n' Text
+
+";; function. Its advantage is that it doesn't cons as much. Also it employs" Comment.Single
+'\n' Text
+
+';; some heuristics and does not have the full power of SUBTYPEP.' Comment.Single
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'subtype-sequence' Name.Variable
+' ' Text
+'(' Punctuation
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'type' Keyword
+' ' Text
+'(' Punctuation
+'expand-deftype' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'type' Keyword
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'LIST' Name.Variable
+' ' Text
+'CONS' Name.Variable
+' ' Text
+'NULL' Name.Variable
+')' Punctuation
+' ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'NIL' Name.Constant
+')' Punctuation
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'BIT-VECTOR' Name.Variable
+' ' Text
+'SIMPLE-BIT-VECTOR' Name.Variable
+')' Punctuation
+' ' Text
+"'1" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'STRING' Name.Variable
+' ' Text
+'SIMPLE-STRING' Name.Variable
+' ' Text
+'BASE-STRING' Name.Variable
+' ' Text
+'SIMPLE-BASE-STRING' Name.Variable
+')' Punctuation
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'VECTOR' Name.Variable
+' ' Text
+'SIMPLE-VECTOR' Name.Variable
+' ' Text
+'ARRAY' Name.Variable
+' ' Text
+'SIMPLE-ARRAY' Name.Variable
+')' Punctuation
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'SEQUENCE' Name.Variable
+')' Punctuation
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'list-length' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'null' Name.Builtin
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'(' Punctuation
+'last' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'MEMBER' Name.Variable
+' ' Text
+'; (MEMBER &rest objects)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'kind' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'kind' Name.Variable
+' ' Text
+'(' Punctuation
+'sequence-type-union' Name.Variable
+' ' Text
+'kind' Name.Variable
+' ' Text
+'(' Punctuation
+'type-of-sequence' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'kind' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'EQL' Name.Variable
+' ' Text
+'; (EQL object)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'(' Punctuation
+'length' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'2' Literal.Number.Integer
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'type-of-sequence' Name.Variable
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'OR' Name.Variable
+' ' Text
+'; (OR type*)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'kind' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'kind' Name.Variable
+' ' Text
+'(' Punctuation
+'sequence-type-union' Name.Variable
+' ' Text
+'kind' Name.Variable
+' ' Text
+'(' Punctuation
+'subtype-sequence' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'kind' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'AND' Name.Variable
+' ' Text
+'; (AND type*)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'kind' Name.Variable
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'dolist' Name.Builtin
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+' ' Text
+'(' Punctuation
+'rest' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'setq' Keyword
+' ' Text
+'kind' Name.Variable
+' ' Text
+'(' Punctuation
+'sequence-type-intersection' Name.Variable
+' ' Text
+'kind' Name.Variable
+' ' Text
+'(' Punctuation
+'subtype-sequence' Name.Variable
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'kind' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'SIMPLE-BIT-VECTOR' Name.Variable
+' ' Text
+'BIT-VECTOR' Name.Variable
+')' Punctuation
+' ' Text
+'; (SIMPLE-BIT-VECTOR &optional size)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'cddr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'1" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'SIMPLE-STRING' Name.Variable
+' ' Text
+'STRING' Name.Variable
+' ' Text
+'SIMPLE-BASE-STRING' Name.Variable
+' ' Text
+'BASE-STRING' Name.Variable
+')' Punctuation
+' ' Text
+'; (SIMPLE-STRING &optional size)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'cddr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'SIMPLE-VECTOR' Name.Variable
+' ' Text
+'; (SIMPLE-VECTOR &optional size)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'cddr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'VECTOR' Name.Variable
+' ' Text
+'ARRAY' Name.Variable
+' ' Text
+'SIMPLE-ARRAY' Name.Variable
+')' Punctuation
+' ' Text
+'; (VECTOR &optional el-type size), (ARRAY &optional el-type dimensions)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'cdddr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'el-type' Name.Variable
+' ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'cdr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+' ' Text
+"'*" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+"'VECTOR" Literal.String.Symbol
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eltype' Name.Variable
+' ' Text
+'(' Punctuation
+'upgraded-array-element-type' Name.Builtin
+' ' Text
+'el-type' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'T" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'CHARACTER" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'BIT" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'1" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+' ' Text
+"'UNSIGNED-BYTE" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'0" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S is not up-to-date with ~S for element type ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'subtypep-sequence" Literal.String.Symbol
+' ' Text
+"'upgraded-array-element-type" Literal.String.Symbol
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'CONS' Name.Variable
+')' Punctuation
+' ' Text
+'; (CONS &optional cartype cdrtype)' Comment.Single
+'\n ' Text
+'(' Punctuation
+'when' Name.Builtin
+' ' Text
+'(' Punctuation
+'cdddr' Name.Builtin
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'subtypep" Literal.String.Symbol
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::defined-class-p' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'clos::built-in-class-p' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'(' Punctuation
+'clos:class-name' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+' ' Text
+"'CLOS::CLOSCLASS" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'subtype-sequence' Name.Variable
+' ' Text
+'(' Punctuation
+'clos:class-name' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+'\n ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::eql-specializer-p' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'type-of-sequence' Name.Variable
+' ' Text
+'(' Punctuation
+'clos::eql-specializer-singleton' Name.Variable
+' ' Text
+'type' Keyword
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'type-of-sequence' Name.Variable
+' ' Text
+'(' Punctuation
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'listp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+' ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'vectorp' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'let' Keyword
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eltype' Name.Variable
+' ' Text
+'(' Punctuation
+'array-element-type' Name.Builtin
+' ' Text
+'x' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'T" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'CHARACTER" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'BIT" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'1" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+' ' Text
+"'UNSIGNED-BYTE" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+'(' Punctuation
+'second' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'eltype' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+"'0" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'error' Name.Builtin
+' ' Text
+'(' Punctuation
+'TEXT' Name.Variable
+' ' Text
+'"~S is not up-to-date with ~S for element type ~S"' Literal.String
+')' Punctuation
+'\n ' Text
+"'type-of-sequence" Literal.String.Symbol
+' ' Text
+"'array-element-type" Literal.String.Symbol
+' ' Text
+'eltype' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'sequence-type-union' Name.Variable
+' ' Text
+'(' Punctuation
+'t1' Name.Variable
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'; Simple general rules.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+' ' Text
+'t1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'t1' Name.Variable
+')' Punctuation
+'\n ' Text
+'; Now the union of two different types.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'; union of LIST and a vector type' Comment.Single
+'\n ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'t1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'; union of STRING and an integer-vector type' Comment.Single
+'\n ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'max' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'sequence-type-intersection' Name.Variable
+' ' Text
+'(' Punctuation
+'t1' Name.Variable
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'; Simple general rules.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+' ' Text
+'t1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+' ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'; Now the intersection of two different types.' Comment.Single
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'SEQUENCE" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'t1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'LIST" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'; intersection of LIST and a vector type' Comment.Single
+'\n ' Text
+"'NIL" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'VECTOR" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'t1' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eql' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+'0' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+' ' Text
+"'0" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'eq' Name.Builtin
+' ' Text
+'t2' Name.Variable
+' ' Text
+"'STRING" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'; intersection of STRING and an integer-vector type' Comment.Single
+'\n ' Text
+"'0" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'min' Name.Builtin
+' ' Text
+'t1' Name.Variable
+' ' Text
+'t2' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+';; ============================================================================' Comment.Single
+'\n\n' Text
+
+'(' Punctuation
+'defun' Name.Builtin
+' ' Text
+'type-expand' Name.Variable
+' ' Text
+'(' Punctuation
+'typespec' Name.Variable
+' ' Text
+'&optional' Keyword
+' ' Text
+'once-p' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'multiple-value-bind' Name.Builtin
+' ' Text
+'(' Punctuation
+'expanded' Name.Variable
+' ' Text
+'user-defined-p' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'expand-deftype' Name.Variable
+' ' Text
+'typespec' Name.Variable
+' ' Text
+'once-p' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'if' Keyword
+' ' Text
+'user-defined-p' Name.Variable
+' ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'expanded' Name.Variable
+' ' Text
+'user-defined-p' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+"'TYPE-SYMBOL" Literal.String.Symbol
+')' Punctuation
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'or' Name.Builtin
+' ' Text
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+"'DEFSTRUCT-DESCRIPTION" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'clos-class' Name.Variable
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'type-expand" Literal.String.Symbol
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'and' Name.Builtin
+' ' Text
+'(' Punctuation
+'consp' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'symbolp' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'case' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'SATISFIES' Name.Variable
+' ' Text
+'MEMBER' Name.Variable
+' ' Text
+'EQL' Name.Variable
+' ' Text
+'NOT' Name.Variable
+' ' Text
+'AND' Name.Variable
+' ' Text
+'OR' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'cond' Name.Builtin
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'get' Name.Builtin
+' ' Text
+'(' Punctuation
+'first' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+' ' Text
+"'TYPE-LIST" Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'type-expand" Literal.String.Symbol
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'(' Punctuation
+'clos::defined-class-p' Name.Variable
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+' ' Text
+'(' Punctuation
+'values' Name.Builtin
+' ' Text
+'typespec' Name.Variable
+' ' Text
+'nil' Name.Constant
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'t' Name.Constant
+' ' Text
+'(' Punctuation
+'typespec-error' Name.Variable
+' ' Text
+"'type-expand" Literal.String.Symbol
+' ' Text
+'typespec' Name.Variable
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+';; ============================================================================' Comment.Single
+'\n\n' Text
+
+'(' Punctuation
+'unless' Name.Builtin
+' ' Text
+'(' Punctuation
+'clos::funcallable-instance-p' Name.Variable
+' ' Text
+"#'" Name.Function
+'clos::class-name' Name.Variable
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'fmakunbound' Name.Builtin
+' ' Text
+"'clos::class-name" Literal.String.Symbol
+')' Punctuation
+')' Punctuation
+'\n\n\n' Text
+
+'(' Punctuation
+'keywordp' Name.Builtin
+' ' Text
+':junk' Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'T' Name.Constant
+'\n\n' Text
+
+'(' Punctuation
+'keywordp' Name.Builtin
+' ' Text
+'::junk' Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'T' Name.Constant
+'\n\n' Text
+
+'(' Punctuation
+'symbol-name' Name.Builtin
+' ' Text
+'::junk' Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'"JUNK"' Literal.String
+'\n\n' Text
+
+'(' Punctuation
+'symbol-name' Name.Builtin
+' ' Text
+':#junk' Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'"#JUNK"' Literal.String
+'\n\n' Text
+
+'(' Punctuation
+'symbol-name' Name.Builtin
+' ' Text
+':#.junk' Literal.String.Symbol
+')' Punctuation
+'\n ' Text
+'"#.JUNK"' Literal.String
+'\n' Text