(defpackage :pxref
(:use :common-lisp)
(:export #:list-callers
#:list-users
#:list-readers
#:list-setters
#:what-files-call
#:who-calls
#:list-callees
#:source-file
#:clear-tables
#:define-pattern-substitution
#:define-caller-pattern
#:define-variable-pattern
#:define-caller-pattern-synonyms
#:clear-patterns
#:*last-form*
#:*xref-verbose*
#:*handle-package-forms*
#:*handle-function-forms*
#:*handle-macro-forms*
#:*types-to-ignore*
#:*last-caller-tree*
#:*default-graphing-mode*
#:*indent-amount*
#:xref-file
#:xref-files
#:write-callers-database-to-file
#:display-database
#:print-caller-trees
#:make-caller-tree
#:print-indented-tree
#:determine-file-dependencies
#:print-file-dependencies
#:psgraph-xref
))
(in-package "PXREF")
(eval-when (eval)
(warn "This file should be compiled before loading for best results."))
(defun lookup (symbol environment)
(dolist (frame environment)
(when (member symbol frame)
(return symbol))))
(defun car-eq (list item)
(and (consp list)
(eq (car list) item)))
(defvar *file-callers-database* (make-hash-table :test #'equal)
"Contains name and list of file callers (files which call) for that name.")
(defvar *callers-database* (make-hash-table :test #'equal)
"Contains name and list of callers (function invocation) for that name.")
(defvar *readers-database* (make-hash-table :test #'equal)
"Contains name and list of readers (variable use) for that name.")
(defvar *setters-database* (make-hash-table :test #'equal)
"Contains name and list of setters (variable mutation) for that name.")
(defvar *callees-database* (make-hash-table :test #'equal)
"Contains name and list of functions and variables it calls.")
(defun callers-list (name &optional (database :callers))
(case database
(:file (gethash name *file-callers-database*))
(:callees (gethash name *callees-database*))
(:callers (gethash name *callers-database*))
(:readers (gethash name *readers-database*))
(:setters (gethash name *setters-database*))))
(defsetf callers-list (name &optional (database :callers)) (caller)
`(setf (gethash ,name (case ,database
(:file *file-callers-database*)
(:callees *callees-database*)
(:callers *callers-database*)
(:readers *readers-database*)
(:setters *setters-database*)))
,caller))
(defun list-callers (symbol)
"Lists all functions which call SYMBOL as a function (function invocation)."
(callers-list symbol :callers))
(defun list-readers (symbol)
"Lists all functions which refer to SYMBOL as a variable
(variable reference)."
(callers-list symbol :readers))
(defun list-setters (symbol)
"Lists all functions which bind/set SYMBOL as a variable
(variable mutation)."
(callers-list symbol :setters))
(defun list-users (symbol)
"Lists all functions which use SYMBOL as a variable or function."
(values (list-callers symbol)
(list-readers symbol)
(list-setters symbol)))
(defun who-calls (symbol &optional how)
"Lists callers of symbol. HOW may be :function, :reader, :setter,
or :variable."
(case how
(:function (list-callers symbol))
(:reader (list-readers symbol))
(:setter (list-setters symbol))
(:variable (append (list-readers symbol)
(list-setters symbol)))
(otherwise (append (list-callers symbol)
(list-readers symbol)
(list-setters symbol)))))
(defun what-files-call (symbol)
"Lists names of files that contain uses of SYMBOL
as a function, variable, or constant."
(callers-list symbol :file))
(defun list-callees (symbol)
"Lists names of functions and variables called by SYMBOL."
(callers-list symbol :callees))
(defvar *source-file* (make-hash-table :test #'equal)
"Contains function name and source file for that name.")
(defun source-file (symbol)
"Lists the names of files in which SYMBOL is defined/used."
(gethash symbol *source-file*))
(defsetf source-file (name) (value)
`(setf (gethash ,name *source-file*) ,value))
(defun clear-tables ()
(clrhash *file-callers-database*)
(clrhash *callers-database*)
(clrhash *callees-database*)
(clrhash *readers-database*)
(clrhash *setters-database*)
(clrhash *source-file*))
(defvar *pattern-caller-type* (make-hash-table :test #'equal))
(defun pattern-caller-type (name)
(gethash name *pattern-caller-type*))
(defsetf pattern-caller-type (name) (value)
`(setf (gethash ,name *pattern-caller-type*) ,value))
(defvar *pattern-substitution-table* (make-hash-table :test #'equal)
"Stores general patterns for function destructuring.")
(defun lookup-pattern-substitution (name)
(gethash name *pattern-substitution-table*))
(defmacro define-pattern-substitution (name pattern)
"Defines NAME to be equivalent to the specified pattern. Useful for
making patterns more readable. For example, the LAMBDA-LIST is
defined as a pattern substitution, making the definition of the
DEFUN caller-pattern simpler."
`(setf (gethash ',name *pattern-substitution-table*)
',pattern))
(defvar *caller-pattern-table* (make-hash-table :test #'equal)
"Stores patterns for function destructuring.")
(defun lookup-caller-pattern (name)
(gethash name *caller-pattern-table*))
(defmacro define-caller-pattern (name pattern &optional caller-type)
"Defines NAME as a function/macro call with argument structure
described by PATTERN. CALLER-TYPE, if specified, assigns a type to
the pattern, which may be used to exclude references to NAME while
viewing the database. For example, all the Common Lisp definitions
have a caller-type of :lisp or :lisp2, so that you can exclude
references to common lisp functions from the calling tree."
`(progn
(when ',caller-type
(setf (pattern-caller-type ',name) ',caller-type))
(when ',pattern
(setf (gethash ',name *caller-pattern-table*)
',pattern))))
(defmacro define-variable-pattern (name &optional caller-type)
"Defines NAME as a variable reference of type CALLER-TYPE. This is
mainly used to establish the caller-type of the variable."
`(progn
(when ',caller-type
(setf (pattern-caller-type ',name) ',caller-type))))
(defmacro define-caller-pattern-synonyms (source destinations)
"For defining function caller pattern syntax synonyms. For each name
in DESTINATIONS, defines its pattern as a copy of the definition of SOURCE.
Allows a large number of identical patterns to be defined simultaneously.
Must occur after the SOURCE has been defined."
`(let ((source-type (pattern-caller-type ',source))
(source-pattern (gethash ',source *caller-pattern-table*)))
(when source-type
(dolist (dest ',destinations)
(setf (pattern-caller-type dest) source-type)))
(when source-pattern
(dolist (dest ',destinations)
(setf (gethash dest *caller-pattern-table*)
source-pattern)))))
(defun clear-patterns ()
(clrhash *pattern-substitution-table*)
(clrhash *caller-pattern-table*)
(clrhash *pattern-caller-type*))
(defvar *last-form* ()
"The last form read from the file. Useful for figuring out what went wrong
when xref-file drops into the debugger.")
(defvar *xref-verbose* t
"When T, xref-file(s) prints out the names of the files it looks at,
progress dots, and the number of forms read.")
(defun xref-files (&rest files)
"Grovels over the lisp code located in source file FILES, using xref-file."
(when (listp (car files)) (setq files (car files)))
(dolist (file files)
(xref-file file nil))
(values))
(defvar *handle-package-forms* nil "When non-NIL, and XREF-FILE sees a package-setting form like IN-PACKAGE,
sets the current package to the specified package by evaluating the
form. When done with the file, xref-file resets the package to its
original value. In some of the displaying functions, when this variable
is non-NIL one may specify that all symbols from a particular set of
packages be ignored. This is only useful if the files use different
packages with conflicting names.")
(defvar *normal-readtable* (copy-readtable nil)
"Normal, unadulterated CL readtable.")
(defun xref-file (filename &optional (clear-tables t) (verbose *xref-verbose*))
"Cross references the function and variable calls in FILENAME by
walking over the source code located in the file. Defaults type of
filename to \".lisp\". Chomps on the code using record-callers and
record-callers*. If CLEAR-TABLES is T (the default), it clears the callers
database before processing the file. Specify CLEAR-TABLES as nil to
append to the database. If VERBOSE is T (the default), prints out the
name of the file, one progress dot for each form processed, and the
total number of forms."
(when (and (null (pathname-type filename))
(not (probe-file filename)))
(cond ((stringp filename)
(setf filename (concatenate 'string filename ".lisp")))
((pathnamep filename)
(setf filename (merge-pathnames filename
(make-pathname :type "lisp"))))))
(when clear-tables (clear-tables))
(let ((count 0)
(old-package *package*)
(*readtable* *normal-readtable*))
(when verbose
(format t "~&Cross-referencing file ~A.~&" filename))
(with-open-file (stream filename :direction :input)
(do ((form (read stream nil :eof) (read stream nil :eof)))
((eq form :eof))
(incf count)
(when verbose
(format *standard-output* ".")
(force-output *standard-output*))
(setq *last-form* form)
(record-callers filename form)
(when (and *handle-package-forms*
(consp form)
(member (car form) *handle-package-forms*))
(eval form))))
(when verbose
(format t "~&~D forms processed." count))
(setq *package* old-package)
(values)))
(defvar *handle-function-forms* t
"When T, XREF-FILE tries to be smart about forms which occur in
a function position, such as lambdas and arbitrary Lisp forms.
If so, it recursively calls record-callers with pattern 'FORM.
If the form is a lambda, makes the caller a caller of :unnamed-lambda.")
(defvar *handle-macro-forms* t
"When T, if the file was loaded before being processed by XREF, and the
car of a form is a macro, it notes that the parent calls the macro,
and then calls macroexpand-1 on the form.")
(defvar *callees-database-includes-variables* nil)
(defun record-callers (filename form
&optional pattern parent (environment nil)
funcall)
"RECORD-CALLERS is the main routine used to walk down the code. It matches
the PATTERN against the FORM, possibly adding statements to the database.
PARENT is the name defined by the current outermost definition; it is
the caller of the forms in the body (e.g., FORM). ENVIRONMENT is used
to keep track of the scoping of variables. FUNCALL deals with the type
of variable assignment and hence how the environment should be modified.
RECORD-CALLERS handles atomic patterns and simple list-structure patterns.
For complex list-structure pattern destructuring, it calls RECORD-CALLERS*."
(unless pattern (setq pattern 'FORM))
(cond ((symbolp pattern)
(case pattern
(:IGNORE
(values t parent environment))
(NAME
(push filename (source-file form))
(values t form environment))
((FUNCTION MACRO)
(cond ((and *handle-function-forms* (consp form))
(when (eq (car form) 'lambda)
(pushnew filename (callers-list :unnamed-lambda :file))
(when parent
(pushnew parent (callers-list :unnamed-lambda
:callers))
(pushnew :unnamed-lambda (callers-list parent
:callees))))
(record-callers filename form 'form parent environment))
(t
(pushnew filename (callers-list form :file))
(when parent
(pushnew parent (callers-list form :callers))
(pushnew form (callers-list parent :callees)))
(values t parent environment))))
(VAR
(when (and (symbolp form) (not (keywordp form))
(not (member form lambda-list-keywords)))
(pushnew form (car environment))
(pushnew filename (callers-list form :file))
(when parent
(pushnew parent (callers-list form :setters)))
(values t parent environment)))
(VARIABLE
(pushnew filename (callers-list form :file))
(when (and parent (not (lookup form environment)))
(pushnew parent (callers-list form :readers))
(when *callees-database-includes-variables*
(pushnew form (callers-list parent :callees))))
(values t parent environment))
(FORM
(cond ((consp form)
(let ((new-pattern (lookup-caller-pattern (car form))))
(pushnew filename (callers-list (car form) :file))
(when parent
(pushnew parent (callers-list (car form) :callers))
(pushnew (car form) (callers-list parent :callees)))
(cond ((and new-pattern (cdr form))
(record-callers filename (cdr form) new-pattern
parent environment :funcall))
((and *handle-macro-forms*
(symbolp (car form)) (macro-function (car form)))
(record-callers filename
(macroexpand-1 form)
'form parent environment
:funcall))
((null (cdr form))
(values t parent environment))
(t
(record-callers filename (cdr form)
'((:star FORM))
parent environment :funcall)))))
(t
(when (and (not (lookup form environment))
(not (numberp form))
(not (keywordp form))
(not (stringp form))
(not (eq form t))
(not (eq form nil)))
(pushnew filename (callers-list form :file))
(when parent
(pushnew parent (callers-list form :readers))
(when *callees-database-includes-variables*
(pushnew form (callers-list parent :callees)))))
(values t parent environment))))
(otherwise
(let ((new-pattern (lookup-pattern-substitution pattern)))
(if new-pattern
(record-callers filename form new-pattern
parent environment)
(when (eq pattern form)
(values t parent environment)))))))
((consp pattern)
(case (car pattern)
(:eq (when (eq (second pattern) form)
(values t parent environment)))
(:test (when (funcall (eval (second pattern)) form)
(values t parent environment)))
(:typep (when (typep form (second pattern))
(values t parent environment)))
(:or (dolist (subpat (rest pattern))
(multiple-value-bind (processed parent environment)
(record-callers filename form subpat
parent environment)
(when processed
(return (values processed parent environment))))))
(:rest (record-callers filename form (second pattern)
parent environment))
(otherwise
(multiple-value-bind (d p env)
(record-callers* filename form pattern
parent (cons nil environment))
(values d p (if funcall environment env))))))))
(defun record-callers* (filename form pattern parent environment
&optional continuation
in-optionals in-keywords)
"RECORD-CALLERS* handles complex list-structure patterns, such as
ordered lists of subpatterns, patterns involving :star, :plus,
&optional, &key, &rest, and so on. CONTINUATION is a stack of
unprocessed patterns, IN-OPTIONALS and IN-KEYWORDS are corresponding
stacks which determine whether &rest or &key has been seen yet in
the current pattern."
(if (null pattern)
(if (null continuation)
(values t parent environment)
(record-callers* filename form (car continuation) parent environment
(cdr continuation)
(cdr in-optionals)
(cdr in-keywords)))
(let ((pattern-elt (car pattern)))
(cond ((car-eq pattern-elt :optional)
(if (null form)
(values t parent environment)
(multiple-value-bind (processed par env)
(record-callers* filename form (cdr pattern-elt)
parent environment
(cons (cdr pattern) continuation)
(cons (car in-optionals) in-optionals)
(cons (car in-keywords) in-keywords))
(if processed
(values processed par env)
(record-callers* filename form (cdr pattern)
parent environment continuation
in-optionals in-keywords)))))
((car-eq pattern-elt :star)
(if (null form)
(values t parent environment)
(multiple-value-bind (processed par env)
(record-callers* filename form (cdr pattern-elt)
parent environment
(cons pattern continuation)
(cons (car in-optionals) in-optionals)
(cons (car in-keywords) in-keywords))
(if processed
(values processed par env)
(record-callers* filename form (cdr pattern)
parent environment continuation
in-optionals in-keywords)))))
((car-eq pattern-elt :plus)
(record-callers* filename form (cdr pattern-elt)
parent environment
(cons (cons (cons :star (cdr pattern-elt))
(cdr pattern))
continuation)
(cons (car in-optionals) in-optionals)
(cons (car in-keywords) in-keywords)))
((car-eq pattern-elt :rest)
(record-callers filename form pattern-elt parent environment))
((eq pattern-elt '&optional)
(record-callers* filename form (cdr pattern)
parent environment continuation
(cons t in-optionals)
(cons (car in-keywords) in-keywords)))
((eq pattern-elt '&rest)
(record-callers filename form (second pattern)
parent environment))
((eq pattern-elt '&key)
(record-callers* filename form (cdr pattern)
parent environment continuation
(cons (car in-optionals) in-optionals)
(cons t in-keywords)))
((null form)
(when (or (car in-keywords) (car in-optionals))
(values t parent environment)))
((consp form)
(multiple-value-bind (processed parent environment)
(record-callers filename (if (car in-keywords)
(cadr form)
(car form))
pattern-elt
parent environment)
(cond (processed
(record-callers* filename (if (car in-keywords)
(cddr form)
(cdr form))
(cdr pattern)
parent environment
continuation
in-optionals in-keywords))
((or (car in-keywords)
(car in-optionals))
(values t parent environment)))))))))
(defvar *types-to-ignore*
'(:lisp :lisp2 )
"Default set of caller types (as specified in the patterns) to ignore
in the database handling functions. :lisp is CLtL 1st edition,
:lisp2 is additional patterns from CLtL 2nd edition.")
(defun display-database (&optional (database :callers)
(types-to-ignore *types-to-ignore*))
"Prints out the name of each symbol and all its callers. Specify database
:callers (the default) to get function call references, :fill to the get
files in which the symbol is called, :readers to get variable references,
and :setters to get variable binding and assignments. Ignores functions
of types listed in types-to-ignore."
(maphash #'(lambda (name callers)
(unless (or (member (pattern-caller-type name)
types-to-ignore)
(when *handle-package-forms*
(member (symbol-package name)
types-to-ignore
:key #'find-package)))
(format t "~&~S is referenced by~{ ~S~}."
name callers)))
(ecase database
(:file *file-callers-database*)
(:callers *callers-database*)
(:readers *readers-database*)
(:setters *setters-database*))))
(defun write-callers-database-to-file (filename)
"Saves the contents of the current callers database to a file. This
file can be loaded to restore the previous contents of the
database. (For large systems it can take a long time to crunch
through the code, so this can save some time.)"
(with-open-file (stream filename :direction :output)
(format stream "~&(clear-tables)")
(maphash #'(lambda (x y)
(format stream "~&(setf (source-file '~S) '~S)"
x y))
*source-file*)
(maphash #'(lambda (x y)
(format stream "~&(setf (callers-list '~S :file) '~S)"
x y))
*file-callers-database*)
(maphash #'(lambda (x y)
(format stream "~&(setf (callers-list '~S :callers) '~S)"
x y))
*callers-database*)
(maphash #'(lambda (x y)
(format stream "~&(setf (callers-list '~S :callees) '~S)"
x y))
*callees-database*)
(maphash #'(lambda (x y)
(format stream "~&(setf (callers-list '~S :readers) '~S)"
x y))
*readers-database*)
(maphash #'(lambda (x y)
(format stream "~&(setf (callers-list '~S :setters) '~S)"
x y))
*setters-database*)))
(defun invert-hash-table (table &optional (types-to-ignore *types-to-ignore*))
"Makes a copy of the hash table in which (name value*) pairs
are inverted to (value name*) pairs."
(let ((target (make-hash-table :test #'equal)))
(maphash #'(lambda (key values)
(dolist (value values)
(unless (member (pattern-caller-type key)
types-to-ignore)
(pushnew key (gethash value target)))))
table)
target))
(defun determine-file-dependencies (&optional (database *callers-database*))
"Makes a hash table of file dependencies for the references listed in
DATABASE. This function may be useful for automatically resolving
file references for automatic creation of a system definition (defsystem)."
(let ((file-ref-ht (make-hash-table :test #'equal)))
(maphash #'(lambda (key values)
(let ((key-file (source-file key)))
(when key
(dolist (value values)
(let ((value-file (source-file value)))
(when value-file
(dolist (s key-file)
(dolist (d value-file)
(pushnew d (gethash s file-ref-ht))))))))))
database)
file-ref-ht))
(defun print-file-dependencies (&optional (database *callers-database*))
"Prints a list of file dependencies for the references listed in DATABASE.
This function may be useful for automatically computing file loading
constraints for a system definition tool."
(maphash #'(lambda (key value) (format t "~&~S --> ~S" key value))
(determine-file-dependencies database)))
(defvar *last-caller-tree* nil)
(defvar *default-graphing-mode* :call-graph
"Specifies whether we graph up or down. If :call-graph, the children
of a node are the functions it calls. If :caller-graph, the children
of a node are the functions that call it.")
(defun gather-tree (parents &optional already-seen
(mode *default-graphing-mode*)
(types-to-ignore *types-to-ignore*) compact)
"Extends the tree, copying it into list structure, until it repeats
a reference (hits a cycle)."
(let ((*already-seen* nil)
(database (case mode
(:call-graph *callees-database*)
(:caller-graph *callers-database*))))
(declare (special *already-seen*))
(labels
((amass-tree
(parents &optional already-seen)
(let (result this-item)
(dolist (parent parents)
(unless (member (pattern-caller-type parent)
types-to-ignore)
(pushnew parent *already-seen*)
(if (member parent already-seen)
(setq this-item nil) (if compact
(multiple-value-setq (this-item already-seen)
(amass-tree (gethash parent database)
(cons parent already-seen)))
(setq this-item
(amass-tree (gethash parent database)
(cons parent already-seen)))))
(setq parent (format nil "~S" parent))
(when (consp parent) (setq parent (cons :xref-list parent)))
(unless (eq this-item :ignore)
(push (if this-item
(list parent this-item)
parent)
result))))
(values result already-seen))))
(values (amass-tree parents already-seen)
*already-seen*))))
(defun find-roots-and-cycles (&optional (mode *default-graphing-mode*)
(types-to-ignore *types-to-ignore*))
"Returns a list of uncalled callers (roots) and called callers (potential
cycles)."
(let ((uncalled-callers nil)
(called-callers nil)
(database (ecase mode
(:call-graph *callers-database*)
(:caller-graph *callees-database*)))
(other-database (ecase mode
(:call-graph *callees-database*)
(:caller-graph *callers-database*))))
(maphash #'(lambda (name value)
(declare (ignore value))
(unless (member (pattern-caller-type name)
types-to-ignore)
(if (gethash name database)
(push name called-callers)
(push name uncalled-callers))))
other-database)
(values uncalled-callers called-callers)))
(defun make-caller-tree (&optional (mode *default-graphing-mode*)
(types-to-ignore *types-to-ignore*) compact)
"Outputs list structure of a tree which roughly represents the possibly
cyclical structure of the caller database.
If mode is :call-graph, the children of a node are the functions it calls.
If mode is :caller-graph, the children of a node are the functions that
call it.
If compact is T, tries to eliminate the already-seen nodes, so that
the graph for a node is printed at most once. Otherwise it will duplicate
the node's tree (except for cycles). This is usefull because the call tree
is actually a directed graph, so we can either duplicate references or
display only the first one."
(multiple-value-bind (uncalled-callers called-callers)
(find-roots-and-cycles mode types-to-ignore)
(multiple-value-bind (trees already-seen)
(gather-tree uncalled-callers nil mode types-to-ignore compact)
(setq *last-caller-tree* trees)
(let ((more-trees (gather-tree (set-difference called-callers
already-seen)
already-seen
mode types-to-ignore compact)))
(values trees more-trees)))))
(defvar *indent-amount* 3
"Number of spaces to indent successive levels in PRINT-INDENTED-TREE.")
(defun print-indented-tree (trees &optional (indent 0))
"Simple code to print out a list-structure tree (such as those created
by make-caller-tree) as indented text."
(when trees
(dolist (tree trees)
(cond ((and (listp tree) (eq (car tree) :xref-list))
(format t "~&~VT~A" indent (cdr tree)))
((listp tree)
(format t "~&~VT~A" indent (car tree))
(print-indented-tree (cadr tree) (+ indent *indent-amount*)))
(t
(format t "~&~VT~A" indent tree))))))
(defun print-caller-trees (&key (mode *default-graphing-mode*)
(types-to-ignore *types-to-ignore*)
compact
root-nodes)
"Prints the calling trees (which may actually be a full graph and not
necessarily a DAG) as indented text trees using PRINT-INDENTED-TREE.
MODE is :call-graph for trees where the children of a node are the
functions called by the node, or :caller-graph for trees where the
children of a node are the functions the node calls. TYPES-TO-IGNORE
is a list of funcall types (as specified in the patterns) to ignore
in printing out the database. For example, '(:lisp) would ignore all
calls to common lisp functions. COMPACT is a flag to tell the program
to try to compact the trees a bit by not printing trees if they have
already been seen. ROOT-NODES is a list of root nodes of trees to
display. If ROOT-NODES is nil, tries to find all root nodes in the
database."
(multiple-value-bind (rooted cycles)
(if root-nodes
(values (gather-tree root-nodes nil mode types-to-ignore compact))
(make-caller-tree mode types-to-ignore compact))
(when rooted
(format t "~&Rooted calling trees:")
(print-indented-tree rooted 2))
(when cycles
(when rooted
(format t "~2%"))
(format t "~&Cyclic calling trees:")
(print-indented-tree cycles 2))))
(clear-patterns)
(define-pattern-substitution integer (:test #'integerp))
(define-pattern-substitution rational (:test #'rationalp))
(define-pattern-substitution symbol (:test #'symbolp))
(define-pattern-substitution string (:test #'stringp))
(define-pattern-substitution number (:test #'numberp))
(define-pattern-substitution lambda-list
((:star var)
(:optional (:eq &optional)
(:star (:or var
(var (:optional form (:optional var))))))
(:optional (:eq &rest) var)
(:optional (:eq &key) (:star (:or var
((:or var
(keyword var))
(:optional form (:optional var)))))
(:optional &allow-other-keys))
(:optional (:eq &aux)
(:star (:or var
(var (:optional form)))))))
(define-pattern-substitution test form)
(define-pattern-substitution body
((:star (:or declaration documentation-string))
(:star form)))
(define-pattern-substitution documentation-string string)
(define-pattern-substitution initial-value form)
(define-pattern-substitution tag symbol)
(define-pattern-substitution declaration ((:eq declare)(:rest :ignore)))
(define-pattern-substitution destination form)
(define-pattern-substitution control-string string)
(define-pattern-substitution format-arguments
((:star form)))
(define-pattern-substitution fn
(:or ((:eq quote) function)
((:eq function) function)
function))
(define-caller-pattern coerce (form :ignore) :lisp)
(define-caller-pattern type-of (form) :lisp)
(define-caller-pattern upgraded-array-element-type (:ignore) :lisp2)
(define-caller-pattern upgraded-complex-part-type (:ignore) :lisp2)
(define-variable-pattern lambda-list-keywords :lisp)
(define-variable-pattern lambda-parameters-limit :lisp)
(define-caller-pattern lambda (lambda-list (:rest body)) :lisp)
(define-caller-pattern defun
(name lambda-list
(:star (:or documentation-string declaration))
(:star form))
:lisp)
(define-caller-pattern defvar
(var (:optional initial-value (:optional documentation-string)))
:lisp)
(define-caller-pattern defparameter
(var initial-value (:optional documentation-string))
:lisp)
(define-caller-pattern defconstant
(var initial-value (:optional documentation-string))
:lisp)
(define-caller-pattern eval-when
(:ignore (:star form))
:lisp)
(define-variable-pattern nil :lisp)
(define-variable-pattern t :lisp)
(define-caller-pattern typep (form form) :lisp)
(define-caller-pattern subtypep (form form) :lisp)
(define-caller-pattern null (form) :lisp)
(define-caller-pattern symbolp (form) :lisp)
(define-caller-pattern atom (form) :lisp)
(define-caller-pattern consp (form) :lisp)
(define-caller-pattern listp (form) :lisp)
(define-caller-pattern numberp (form) :lisp)
(define-caller-pattern integerp (form) :lisp)
(define-caller-pattern rationalp (form) :lisp)
(define-caller-pattern floatp (form) :lisp)
(define-caller-pattern realp (form) :lisp2)
(define-caller-pattern complexp (form) :lisp)
(define-caller-pattern characterp (form) :lisp)
(define-caller-pattern stringp (form) :lisp)
(define-caller-pattern bit-vector-p (form) :lisp)
(define-caller-pattern vectorp (form) :lisp)
(define-caller-pattern simple-vector-p (form) :lisp)
(define-caller-pattern simple-string-p (form) :lisp)
(define-caller-pattern simple-bit-vector-p (form) :lisp)
(define-caller-pattern arrayp (form) :lisp)
(define-caller-pattern packagep (form) :lisp)
(define-caller-pattern functionp (form) :lisp)
(define-caller-pattern compiled-function-p (form) :lisp)
(define-caller-pattern commonp (form) :lisp)
(define-caller-pattern eq (form form) :lisp)
(define-caller-pattern eql (form form) :lisp)
(define-caller-pattern equal (form form) :lisp)
(define-caller-pattern equalp (form form) :lisp)
(define-caller-pattern not (form) :lisp)
(define-caller-pattern or ((:star form)) :lisp)
(define-caller-pattern and ((:star form)) :lisp)
(define-caller-pattern quote (:ignore) :lisp)
(define-caller-pattern function ((:or fn form)) :lisp)
(define-caller-pattern symbol-value (form) :lisp)
(define-caller-pattern symbol-function (form) :lisp)
(define-caller-pattern fdefinition (form) :lisp2)
(define-caller-pattern boundp (form) :lisp)
(define-caller-pattern fboundp (form) :lisp)
(define-caller-pattern special-form-p (form) :lisp)
(define-caller-pattern setq ((:star var form)) :lisp)
(define-caller-pattern psetq ((:star var form)) :lisp)
(define-caller-pattern set (form form) :lisp)
(define-caller-pattern makunbound (form) :lisp)
(define-caller-pattern fmakunbound (form) :lisp)
(define-caller-pattern setf ((:star form form)) :lisp)
(define-caller-pattern psetf ((:star form form)) :lisp)
(define-caller-pattern shiftf ((:plus form) form) :lisp)
(define-caller-pattern rotatef ((:star form)) :lisp)
(define-caller-pattern define-modify-macro
(name
lambda-list
fn
(:optional documentation-string))
:lisp)
(define-caller-pattern defsetf
(:or (name name (:optional documentation-string))
(name lambda-list (var)
(:star (:or declaration documentation-string))
(:star form)))
:lisp)
(define-caller-pattern define-setf-method
(name lambda-list
(:star (:or declaration documentation-string))
(:star form))
:lisp)
(define-caller-pattern get-setf-method (form) :lisp)
(define-caller-pattern get-setf-method-multiple-value (form) :lisp)
(define-caller-pattern apply (fn form (:star form)) :lisp)
(define-caller-pattern funcall (fn (:star form)) :lisp)
(define-caller-pattern progn ((:star form)) :lisp)
(define-caller-pattern prog1 (form (:star form)) :lisp)
(define-caller-pattern prog2 (form form (:star form)) :lisp)
(define-caller-pattern let
(((:star (:or var (var &optional form))))
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern let*
(((:star (:or var (var &optional form))))
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern compiler-let
(((:star (:or var (var form))))
(:star form))
:lisp)
(define-caller-pattern progv
(form form (:star form)) :lisp)
(define-caller-pattern flet
(((:star (name lambda-list
(:star (:or declaration
documentation-string))
(:star form))))
(:star form))
:lisp)
(define-caller-pattern labels
(((:star (name lambda-list
(:star (:or declaration
documentation-string))
(:star form))))
(:star form))
:lisp)
(define-caller-pattern macrolet
(((:star (name lambda-list
(:star (:or declaration
documentation-string))
(:star form))))
(:star form))
:lisp)
(define-caller-pattern symbol-macrolet
(((:star (var form))) (:star declaration) (:star form))
:lisp2)
(define-caller-pattern if (test form (:optional form)) :lisp)
(define-caller-pattern when (test (:star form)) :lisp)
(define-caller-pattern unless (test (:star form)) :lisp)
(define-caller-pattern cond ((:star (test (:star form)))) :lisp)
(define-caller-pattern case
(form
(:star ((:or symbol
((:star symbol)))
(:star form))))
:lisp)
(define-caller-pattern typecase (form (:star (symbol (:star form))))
:lisp)
(define-caller-pattern block (name (:star form)) :lisp)
(define-caller-pattern return-from (function (:optional form)) :lisp)
(define-caller-pattern return ((:optional form)) :lisp)
(define-caller-pattern loop ((:star form)) :lisp)
(define-caller-pattern do
(((:star (:or var
(var (:optional form (:optional form)))))) (form (:star form)) (:star declaration)
(:star (:or tag form))) :lisp)
(define-caller-pattern do*
(((:star (:or var
(var (:optional form (:optional form))))))
(form (:star form))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern dolist
((var form (:optional form))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern dotimes
((var form (:optional form))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern mapcar (fn form (:star form)) :lisp)
(define-caller-pattern maplist (fn form (:star form)) :lisp)
(define-caller-pattern mapc (fn form (:star form)) :lisp)
(define-caller-pattern mapl (fn form (:star form)) :lisp)
(define-caller-pattern mapcan (fn form (:star form)) :lisp)
(define-caller-pattern mapcon (fn form (:star form)) :lisp)
(define-caller-pattern tagbody ((:star (:or tag form))) :lisp)
(define-caller-pattern prog
(((:star (:or var (var (:optional form)))))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern prog*
(((:star (:or var (var (:optional form)))))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern go (tag) :lisp)
(define-caller-pattern values ((:star form)) :lisp)
(define-variable-pattern multiple-values-limit :lisp)
(define-caller-pattern values-list (form) :lisp)
(define-caller-pattern multiple-value-list (form) :lisp)
(define-caller-pattern multiple-value-call (fn (:star form)) :lisp)
(define-caller-pattern multiple-value-prog1 (form (:star form)) :lisp)
(define-caller-pattern multiple-value-bind
(((:star var)) form
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern multiple-value-setq (((:star var)) form) :lisp)
(define-caller-pattern nth-value (form form) :lisp2)
(define-caller-pattern catch (tag (:star form)) :lisp)
(define-caller-pattern throw (tag form) :lisp)
(define-caller-pattern unwind-protect (form (:star form)) :lisp)
(define-caller-pattern macro-function (form) :lisp)
(define-caller-pattern defmacro
(name
lambda-list
(:star (:or declaration documentation-string))
(:star form))
:lisp)
(define-caller-pattern macroexpand (form (:optional :ignore)) :lisp)
(define-caller-pattern macroexpand-1 (form (:optional :ignore)) :lisp)
(define-variable-pattern *macroexpand-hook* :lisp)
(define-caller-pattern destructuring-bind
(lambda-list form
(:star declaration)
(:star form))
:lisp2)
(define-caller-pattern define-compiler-macro
(name lambda-list
(:star (:or declaration documentation-string))
(:star form))
:lisp2)
(define-caller-pattern compiler-macro-function (form) :lisp2)
(define-caller-pattern compiler-macroexpand (form (:optional :ignore)) :lisp2)
(define-caller-pattern compiler-macroexpand-1 (form (:optional :ignore))
:lisp2)
(define-caller-pattern variable-information (form &optional :ignore)
:lisp2)
(define-caller-pattern function-information (fn &optional :ignore) :lisp2)
(define-caller-pattern declaration-information (form &optional :ignore) :lisp2)
(define-caller-pattern augment-environment (form &key (:star :ignore)) :lisp2)
(define-caller-pattern define-declaration
(name
lambda-list
(:star form))
:lisp2)
(define-caller-pattern parse-macro (name lambda-list form) :lisp2)
(define-caller-pattern enclose (form &optional :ignore) :lisp2)
(define-caller-pattern declare ((:rest :ignore)) :lisp)
(define-caller-pattern proclaim ((:rest :ignore)) :lisp)
(define-caller-pattern locally ((:star declaration) (:star form)) :lisp)
(define-caller-pattern declaim ((:rest :ignore)) :lisp2)
(define-caller-pattern the (form form) :lisp)
(define-caller-pattern get (form form (:optional form)) :lisp)
(define-caller-pattern remprop (form form) :lisp)
(define-caller-pattern symbol-plist (form) :lisp)
(define-caller-pattern getf (form form (:optional form)) :lisp)
(define-caller-pattern remf (form form) :lisp)
(define-caller-pattern get-properties (form form) :lisp)
(define-caller-pattern symbol-name (form) :lisp)
(define-caller-pattern make-symbol (form) :lisp)
(define-caller-pattern copy-symbol (form (:optional :ignore)) :lisp)
(define-caller-pattern gensym ((:optional :ignore)) :lisp)
(define-variable-pattern *gensym-counter* :lisp2)
(define-caller-pattern gentemp ((:optional :ignore :ignore)) :lisp)
(define-caller-pattern symbol-package (form) :lisp)
(define-caller-pattern keywordp (form) :lisp)
(define-variable-pattern *package* :lisp)
(define-caller-pattern make-package ((:rest :ignore)) :lisp)
(define-caller-pattern in-package ((:rest :ignore)) :lisp)
(define-caller-pattern find-package ((:rest :ignore)) :lisp)
(define-caller-pattern package-name ((:rest :ignore)) :lisp)
(define-caller-pattern package-nicknames ((:rest :ignore)) :lisp)
(define-caller-pattern rename-package ((:rest :ignore)) :lisp)
(define-caller-pattern package-use-list ((:rest :ignore)) :lisp)
(define-caller-pattern package-used-by-list ((:rest :ignore)) :lisp)
(define-caller-pattern package-shadowing-symbols ((:rest :ignore)) :lisp)
(define-caller-pattern list-all-packages () :lisp)
(define-caller-pattern delete-package ((:rest :ignore)) :lisp2)
(define-caller-pattern intern (form &optional :ignore) :lisp)
(define-caller-pattern find-symbol (form &optional :ignore) :lisp)
(define-caller-pattern unintern (form &optional :ignore) :lisp)
(define-caller-pattern export ((:or symbol ((:star symbol)))
&optional :ignore) :lisp)
(define-caller-pattern unexport ((:or symbol ((:star symbol)))
&optional :ignore) :lisp)
(define-caller-pattern import ((:or symbol ((:star symbol)))
&optional :ignore) :lisp)
(define-caller-pattern shadowing-import ((:or symbol ((:star symbol)))
&optional :ignore) :lisp)
(define-caller-pattern shadow ((:or symbol ((:star symbol)))
&optional :ignore) :lisp)
(define-caller-pattern use-package ((:rest :ignore)) :lisp)
(define-caller-pattern unuse-package ((:rest :ignore)) :lisp)
(define-caller-pattern defpackage (name (:rest :ignore)) :lisp2)
(define-caller-pattern find-all-symbols (form) :lisp)
(define-caller-pattern do-symbols
((var (:optional form (:optional form)))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern do-external-symbols
((var (:optional form (:optional form)))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern do-all-symbols
((var (:optional form))
(:star declaration)
(:star (:or tag form)))
:lisp)
(define-caller-pattern with-package-iterator
((name form (:plus :ignore))
(:star form))
:lisp2)
(define-variable-pattern *modules* :lisp)
(define-caller-pattern provide (form) :lisp)
(define-caller-pattern require (form &optional :ignore) :lisp)
(define-caller-pattern zerop (form) :lisp)
(define-caller-pattern plusp (form) :lisp)
(define-caller-pattern minusp (form) :lisp)
(define-caller-pattern oddp (form) :lisp)
(define-caller-pattern evenp (form) :lisp)
(define-caller-pattern = (form (:star form)) :lisp)
(define-caller-pattern /= (form (:star form)) :lisp)
(define-caller-pattern > (form (:star form)) :lisp)
(define-caller-pattern < (form (:star form)) :lisp)
(define-caller-pattern <= (form (:star form)) :lisp)
(define-caller-pattern >= (form (:star form)) :lisp)
(define-caller-pattern max (form (:star form)) :lisp)
(define-caller-pattern min (form (:star form)) :lisp)
(define-caller-pattern - (form (:star form)) :lisp)
(define-caller-pattern + (form (:star form)) :lisp)
(define-caller-pattern * (form (:star form)) :lisp)
(define-caller-pattern / (form (:star form)) :lisp)
(define-caller-pattern 1+ (form) :lisp)
(define-caller-pattern 1- (form) :lisp)
(define-caller-pattern incf (form form) :lisp)
(define-caller-pattern decf (form form) :lisp)
(define-caller-pattern conjugate (form) :lisp)
(define-caller-pattern gcd ((:star form)) :lisp)
(define-caller-pattern lcm ((:star form)) :lisp)
(define-caller-pattern exp (form) :lisp)
(define-caller-pattern expt (form form) :lisp)
(define-caller-pattern log (form (:optional form)) :lisp)
(define-caller-pattern sqrt (form) :lisp)
(define-caller-pattern isqrt (form) :lisp)
(define-caller-pattern abs (form) :lisp)
(define-caller-pattern phase (form) :lisp)
(define-caller-pattern signum (form) :lisp)
(define-caller-pattern sin (form) :lisp)
(define-caller-pattern cos (form) :lisp)
(define-caller-pattern tan (form) :lisp)
(define-caller-pattern cis (form) :lisp)
(define-caller-pattern asin (form) :lisp)
(define-caller-pattern acos (form) :lisp)
(define-caller-pattern atan (form &optional form) :lisp)
(define-variable-pattern pi :lisp)
(define-caller-pattern sinh (form) :lisp)
(define-caller-pattern cosh (form) :lisp)
(define-caller-pattern tanh (form) :lisp)
(define-caller-pattern asinh (form) :lisp)
(define-caller-pattern acosh (form) :lisp)
(define-caller-pattern atanh (form) :lisp)
(define-caller-pattern float (form (:optional form)) :lisp)
(define-caller-pattern rational (form) :lisp)
(define-caller-pattern rationalize (form) :lisp)
(define-caller-pattern numerator (form) :lisp)
(define-caller-pattern denominator (form) :lisp)
(define-caller-pattern floor (form (:optional form)) :lisp)
(define-caller-pattern ceiling (form (:optional form)) :lisp)
(define-caller-pattern truncate (form (:optional form)) :lisp)
(define-caller-pattern round (form (:optional form)) :lisp)
(define-caller-pattern mod (form form) :lisp)
(define-caller-pattern rem (form form) :lisp)
(define-caller-pattern ffloor (form (:optional form)) :lisp)
(define-caller-pattern fceiling (form (:optional form)) :lisp)
(define-caller-pattern ftruncate (form (:optional form)) :lisp)
(define-caller-pattern fround (form (:optional form)) :lisp)
(define-caller-pattern decode-float (form) :lisp)
(define-caller-pattern scale-float (form form) :lisp)
(define-caller-pattern float-radix (form) :lisp)
(define-caller-pattern float-sign (form (:optional form)) :lisp)
(define-caller-pattern float-digits (form) :lisp)
(define-caller-pattern float-precision (form) :lisp)
(define-caller-pattern integer-decode-float (form) :lisp)
(define-caller-pattern complex (form (:optional form)) :lisp)
(define-caller-pattern realpart (form) :lisp)
(define-caller-pattern imagpart (form) :lisp)
(define-caller-pattern logior ((:star form)) :lisp)
(define-caller-pattern logxor ((:star form)) :lisp)
(define-caller-pattern logand ((:star form)) :lisp)
(define-caller-pattern logeqv ((:star form)) :lisp)
(define-caller-pattern lognand (form form) :lisp)
(define-caller-pattern lognor (form form) :lisp)
(define-caller-pattern logandc1 (form form) :lisp)
(define-caller-pattern logandc2 (form form) :lisp)
(define-caller-pattern logorc1 (form form) :lisp)
(define-caller-pattern logorc2 (form form) :lisp)
(define-caller-pattern boole (form form form) :lisp)
(define-variable-pattern boole-clr :lisp)
(define-variable-pattern boole-set :lisp)
(define-variable-pattern boole-1 :lisp)
(define-variable-pattern boole-2 :lisp)
(define-variable-pattern boole-c1 :lisp)
(define-variable-pattern boole-c2 :lisp)
(define-variable-pattern boole-and :lisp)
(define-variable-pattern boole-ior :lisp)
(define-variable-pattern boole-xor :lisp)
(define-variable-pattern boole-eqv :lisp)
(define-variable-pattern boole-nand :lisp)
(define-variable-pattern boole-nor :lisp)
(define-variable-pattern boole-andc1 :lisp)
(define-variable-pattern boole-andc2 :lisp)
(define-variable-pattern boole-orc1 :lisp)
(define-variable-pattern boole-orc2 :lisp)
(define-caller-pattern lognot (form) :lisp)
(define-caller-pattern logtest (form form) :lisp)
(define-caller-pattern logbitp (form form) :lisp)
(define-caller-pattern ash (form form) :lisp)
(define-caller-pattern logcount (form) :lisp)
(define-caller-pattern integer-length (form) :lisp)
(define-caller-pattern byte (form form) :lisp)
(define-caller-pattern byte-size (form) :lisp)
(define-caller-pattern byte-position (form) :lisp)
(define-caller-pattern ldb (form form) :lisp)
(define-caller-pattern ldb-test (form form) :lisp)
(define-caller-pattern mask-field (form form) :lisp)
(define-caller-pattern dpb (form form form) :lisp)
(define-caller-pattern deposit-field (form form form) :lisp)
(define-caller-pattern random (form (:optional form)) :lisp)
(define-variable-pattern *random-state* :lisp)
(define-caller-pattern make-random-state ((:optional form)) :lisp)
(define-caller-pattern random-state-p (form) :lisp)
(define-variable-pattern most-positive-fixnum :lisp)
(define-variable-pattern most-negative-fixnum :lisp)
(define-variable-pattern most-positive-short-float :lisp)
(define-variable-pattern least-positive-short-float :lisp)
(define-variable-pattern least-negative-short-float :lisp)
(define-variable-pattern most-negative-short-float :lisp)
(define-variable-pattern most-positive-single-float :lisp)
(define-variable-pattern least-positive-single-float :lisp)
(define-variable-pattern least-negative-single-float :lisp)
(define-variable-pattern most-negative-single-float :lisp)
(define-variable-pattern most-positive-double-float :lisp)
(define-variable-pattern least-positive-double-float :lisp)
(define-variable-pattern least-negative-double-float :lisp)
(define-variable-pattern most-negative-double-float :lisp)
(define-variable-pattern most-positive-long-float :lisp)
(define-variable-pattern least-positive-long-float :lisp)
(define-variable-pattern least-negative-long-float :lisp)
(define-variable-pattern most-negative-long-float :lisp)
(define-variable-pattern least-positive-normalized-short-float :lisp2)
(define-variable-pattern least-negative-normalized-short-float :lisp2)
(define-variable-pattern least-positive-normalized-single-float :lisp2)
(define-variable-pattern least-negative-normalized-single-float :lisp2)
(define-variable-pattern least-positive-normalized-double-float :lisp2)
(define-variable-pattern least-negative-normalized-double-float :lisp2)
(define-variable-pattern least-positive-normalized-long-float :lisp2)
(define-variable-pattern least-negative-normalized-long-float :lisp2)
(define-variable-pattern short-float-epsilon :lisp)
(define-variable-pattern single-float-epsilon :lisp)
(define-variable-pattern double-float-epsilon :lisp)
(define-variable-pattern long-float-epsilon :lisp)
(define-variable-pattern short-float-negative-epsilon :lisp)
(define-variable-pattern single-float-negative-epsilon :lisp)
(define-variable-pattern double-float-negative-epsilon :lisp)
(define-variable-pattern long-float-negative-epsilon :lisp)
(define-variable-pattern char-code-limit :lisp)
(define-variable-pattern char-font-limit :lisp)
(define-variable-pattern char-bits-limit :lisp)
(define-caller-pattern standard-char-p (form) :lisp)
(define-caller-pattern graphic-char-p (form) :lisp)
(define-caller-pattern string-char-p (form) :lisp)
(define-caller-pattern alpha-char-p (form) :lisp)
(define-caller-pattern upper-case-p (form) :lisp)
(define-caller-pattern lower-case-p (form) :lisp)
(define-caller-pattern both-case-p (form) :lisp)
(define-caller-pattern digit-char-p (form (:optional form)) :lisp)
(define-caller-pattern alphanumericp (form) :lisp)
(define-caller-pattern char= ((:star form)) :lisp)
(define-caller-pattern char/= ((:star form)) :lisp)
(define-caller-pattern char< ((:star form)) :lisp)
(define-caller-pattern char> ((:star form)) :lisp)
(define-caller-pattern char<= ((:star form)) :lisp)
(define-caller-pattern char>= ((:star form)) :lisp)
(define-caller-pattern char-equal ((:star form)) :lisp)
(define-caller-pattern char-not-equal ((:star form)) :lisp)
(define-caller-pattern char-lessp ((:star form)) :lisp)
(define-caller-pattern char-greaterp ((:star form)) :lisp)
(define-caller-pattern char-not-greaterp ((:star form)) :lisp)
(define-caller-pattern char-not-lessp ((:star form)) :lisp)
(define-caller-pattern char-code (form) :lisp)
(define-caller-pattern char-bits (form) :lisp)
(define-caller-pattern char-font (form) :lisp)
(define-caller-pattern code-char (form (:optional form form)) :lisp)
(define-caller-pattern make-char (form (:optional form form)) :lisp)
(define-caller-pattern characterp (form) :lisp)
(define-caller-pattern char-upcase (form) :lisp)
(define-caller-pattern char-downcase (form) :lisp)
(define-caller-pattern digit-char (form (:optional form form)) :lisp)
(define-caller-pattern char-int (form) :lisp)
(define-caller-pattern int-char (form) :lisp)
(define-caller-pattern char-name (form) :lisp)
(define-caller-pattern name-char (form) :lisp)
(define-variable-pattern char-control-bit :lisp)
(define-variable-pattern char-meta-bit :lisp)
(define-variable-pattern char-super-bit :lisp)
(define-variable-pattern char-hyper-bit :lisp)
(define-caller-pattern char-bit (form form) :lisp)
(define-caller-pattern set-char-bit (form form form) :lisp)
(define-caller-pattern complement (fn) :lisp2)
(define-caller-pattern elt (form form) :lisp)
(define-caller-pattern subseq (form form &optional form) :lisp)
(define-caller-pattern copy-seq (form) :lisp)
(define-caller-pattern length (form) :lisp)
(define-caller-pattern reverse (form) :lisp)
(define-caller-pattern nreverse (form) :lisp)
(define-caller-pattern make-sequence (form form &key form) :lisp)
(define-caller-pattern concatenate (form (:star form)) :lisp)
(define-caller-pattern map (form fn form (:star form)) :lisp)
(define-caller-pattern map-into (form fn (:star form)) :lisp2)
(define-caller-pattern some (fn form (:star form)) :lisp)
(define-caller-pattern every (fn form (:star form)) :lisp)
(define-caller-pattern notany (fn form (:star form)) :lisp)
(define-caller-pattern notevery (fn form (:star form)) :lisp)
(define-caller-pattern reduce (fn form &key (:star form)) :lisp)
(define-caller-pattern fill (form form &key (:star form)) :lisp)
(define-caller-pattern replace (form form &key (:star form)) :lisp)
(define-caller-pattern remove (form form &key (:star form)) :lisp)
(define-caller-pattern remove-if (fn form &key (:star form)) :lisp)
(define-caller-pattern remove-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern delete (form form &key (:star form)) :lisp)
(define-caller-pattern delete-if (fn form &key (:star form)) :lisp)
(define-caller-pattern delete-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern remove-duplicates (form &key (:star form)) :lisp)
(define-caller-pattern delete-duplicates (form &key (:star form)) :lisp)
(define-caller-pattern substitute (form form form &key (:star form)) :lisp)
(define-caller-pattern substitute-if (form fn form &key (:star form)) :lisp)
(define-caller-pattern substitute-if-not (form fn form &key (:star form))
:lisp)
(define-caller-pattern nsubstitute (form form form &key (:star form)) :lisp)
(define-caller-pattern nsubstitute-if (form fn form &key (:star form)) :lisp)
(define-caller-pattern nsubstitute-if-not (form fn form &key (:star form))
:lisp)
(define-caller-pattern find (form form &key (:star form)) :lisp)
(define-caller-pattern find-if (fn form &key (:star form)) :lisp)
(define-caller-pattern find-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern position (form form &key (:star form)) :lisp)
(define-caller-pattern position-if (fn form &key (:star form)) :lisp)
(define-caller-pattern position-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern count (form form &key (:star form)) :lisp)
(define-caller-pattern count-if (fn form &key (:star form)) :lisp)
(define-caller-pattern count-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern mismatch (form form &key (:star form)) :lisp)
(define-caller-pattern search (form form &key (:star form)) :lisp)
(define-caller-pattern sort (form fn &key (:star form)) :lisp)
(define-caller-pattern stable-sort (form fn &key (:star form)) :lisp)
(define-caller-pattern merge (form form form fn &key (:star form)) :lisp)
(define-caller-pattern car (form) :lisp)
(define-caller-pattern cdr (form) :lisp)
(define-caller-pattern caar (form) :lisp)
(define-caller-pattern cadr (form) :lisp)
(define-caller-pattern cdar (form) :lisp)
(define-caller-pattern cddr (form) :lisp)
(define-caller-pattern caaar (form) :lisp)
(define-caller-pattern caadr (form) :lisp)
(define-caller-pattern cadar (form) :lisp)
(define-caller-pattern caddr (form) :lisp)
(define-caller-pattern cdaar (form) :lisp)
(define-caller-pattern cdadr (form) :lisp)
(define-caller-pattern cddar (form) :lisp)
(define-caller-pattern cdddr (form) :lisp)
(define-caller-pattern caaaar (form) :lisp)
(define-caller-pattern caaadr (form) :lisp)
(define-caller-pattern caadar (form) :lisp)
(define-caller-pattern caaddr (form) :lisp)
(define-caller-pattern cadaar (form) :lisp)
(define-caller-pattern cadadr (form) :lisp)
(define-caller-pattern caddar (form) :lisp)
(define-caller-pattern cadddr (form) :lisp)
(define-caller-pattern cdaaar (form) :lisp)
(define-caller-pattern cdaadr (form) :lisp)
(define-caller-pattern cdadar (form) :lisp)
(define-caller-pattern cdaddr (form) :lisp)
(define-caller-pattern cddaar (form) :lisp)
(define-caller-pattern cddadr (form) :lisp)
(define-caller-pattern cdddar (form) :lisp)
(define-caller-pattern cddddr (form) :lisp)
(define-caller-pattern cons (form form) :lisp)
(define-caller-pattern tree-equal (form form &key (:star fn)) :lisp)
(define-caller-pattern endp (form) :lisp)
(define-caller-pattern list-length (form) :lisp)
(define-caller-pattern nth (form form) :lisp)
(define-caller-pattern first (form) :lisp)
(define-caller-pattern second (form) :lisp)
(define-caller-pattern third (form) :lisp)
(define-caller-pattern fourth (form) :lisp)
(define-caller-pattern fifth (form) :lisp)
(define-caller-pattern sixth (form) :lisp)
(define-caller-pattern seventh (form) :lisp)
(define-caller-pattern eighth (form) :lisp)
(define-caller-pattern ninth (form) :lisp)
(define-caller-pattern tenth (form) :lisp)
(define-caller-pattern rest (form) :lisp)
(define-caller-pattern nthcdr (form form) :lisp)
(define-caller-pattern last (form (:optional form)) :lisp)
(define-caller-pattern list ((:star form)) :lisp)
(define-caller-pattern list* ((:star form)) :lisp)
(define-caller-pattern make-list (form &key (:star form)) :lisp)
(define-caller-pattern append ((:star form)) :lisp)
(define-caller-pattern copy-list (form) :lisp)
(define-caller-pattern copy-alist (form) :lisp)
(define-caller-pattern copy-tree (form) :lisp)
(define-caller-pattern revappend (form form) :lisp)
(define-caller-pattern nconc ((:star form)) :lisp)
(define-caller-pattern nreconc (form form) :lisp)
(define-caller-pattern push (form form) :lisp)
(define-caller-pattern pushnew (form form &key (:star form)) :lisp)
(define-caller-pattern pop (form) :lisp)
(define-caller-pattern butlast (form (:optional form)) :lisp)
(define-caller-pattern nbutlast (form (:optional form)) :lisp)
(define-caller-pattern ldiff (form form) :lisp)
(define-caller-pattern rplaca (form form) :lisp)
(define-caller-pattern rplacd (form form) :lisp)
(define-caller-pattern subst (form form form &key (:star form)) :lisp)
(define-caller-pattern subst-if (form fn form &key (:star form)) :lisp)
(define-caller-pattern subst-if-not (form fn form &key (:star form)) :lisp)
(define-caller-pattern nsubst (form form form &key (:star form)) :lisp)
(define-caller-pattern nsubst-if (form fn form &key (:star form)) :lisp)
(define-caller-pattern nsubst-if-not (form fn form &key (:star form)) :lisp)
(define-caller-pattern sublis (form form &key (:star form)) :lisp)
(define-caller-pattern nsublis (form form &key (:star form)) :lisp)
(define-caller-pattern member (form form &key (:star form)) :lisp)
(define-caller-pattern member-if (fn form &key (:star form)) :lisp)
(define-caller-pattern member-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern tailp (form form) :lisp)
(define-caller-pattern adjoin (form form &key (:star form)) :lisp)
(define-caller-pattern union (form form &key (:star form)) :lisp)
(define-caller-pattern nunion (form form &key (:star form)) :lisp)
(define-caller-pattern intersection (form form &key (:star form)) :lisp)
(define-caller-pattern nintersection (form form &key (:star form)) :lisp)
(define-caller-pattern set-difference (form form &key (:star form)) :lisp)
(define-caller-pattern nset-difference (form form &key (:star form)) :lisp)
(define-caller-pattern set-exclusive-or (form form &key (:star form)) :lisp)
(define-caller-pattern nset-exclusive-or (form form &key (:star form)) :lisp)
(define-caller-pattern subsetp (form form &key (:star form)) :lisp)
(define-caller-pattern acons (form form form) :lisp)
(define-caller-pattern pairlis (form form (:optional form)) :lisp)
(define-caller-pattern assoc (form form &key (:star form)) :lisp)
(define-caller-pattern assoc-if (fn form) :lisp)
(define-caller-pattern assoc-if-not (fn form) :lisp)
(define-caller-pattern rassoc (form form &key (:star form)) :lisp)
(define-caller-pattern rassoc-if (fn form &key (:star form)) :lisp)
(define-caller-pattern rassoc-if-not (fn form &key (:star form)) :lisp)
(define-caller-pattern make-hash-table (&key (:star form)) :lisp)
(define-caller-pattern hash-table-p (form) :lisp)
(define-caller-pattern gethash (form form (:optional form)) :lisp)
(define-caller-pattern remhash (form form) :lisp)
(define-caller-pattern maphash (fn form) :lisp)
(define-caller-pattern clrhash (form) :lisp)
(define-caller-pattern hash-table-count (form) :lisp)
(define-caller-pattern with-hash-table-iterator
((name form) (:star form)) :lisp2)
(define-caller-pattern hash-table-rehash-size (form) :lisp2)
(define-caller-pattern hash-table-rehash-threshold (form) :lisp2)
(define-caller-pattern hash-table-size (form) :lisp2)
(define-caller-pattern hash-table-test (form) :lisp2)
(define-caller-pattern sxhash (form) :lisp)
(define-caller-pattern make-array (form &key (:star form)) :lisp)
(define-variable-pattern array-rank-limit :lisp)
(define-variable-pattern array-dimension-limit :lisp)
(define-variable-pattern array-total-size-limit :lisp)
(define-caller-pattern vector ((:star form)) :lisp)
(define-caller-pattern aref (form (:star form)) :lisp)
(define-caller-pattern svref (form form) :lisp)
(define-caller-pattern array-element-type (form) :lisp)
(define-caller-pattern array-rank (form) :lisp)
(define-caller-pattern array-dimension (form form) :lisp)
(define-caller-pattern array-dimensions (form) :lisp)
(define-caller-pattern array-total-size (form) :lisp)
(define-caller-pattern array-in-bounds-p (form (:star form)) :lisp)
(define-caller-pattern array-row-major-index (form (:star form)) :lisp)
(define-caller-pattern row-major-aref (form form) :lisp2)
(define-caller-pattern adjustable-array-p (form) :lisp)
(define-caller-pattern bit (form (:star form)) :lisp)
(define-caller-pattern sbit (form (:star form)) :lisp)
(define-caller-pattern bit-and (form form (:optional form)) :lisp)
(define-caller-pattern bit-ior (form form (:optional form)) :lisp)
(define-caller-pattern bit-xor (form form (:optional form)) :lisp)
(define-caller-pattern bit-eqv (form form (:optional form)) :lisp)
(define-caller-pattern bit-nand (form form (:optional form)) :lisp)
(define-caller-pattern bit-nor (form form (:optional form)) :lisp)
(define-caller-pattern bit-andc1 (form form (:optional form)) :lisp)
(define-caller-pattern bit-andc2 (form form (:optional form)) :lisp)
(define-caller-pattern bit-orc1 (form form (:optional form)) :lisp)
(define-caller-pattern bit-orc2 (form form (:optional form)) :lisp)
(define-caller-pattern bit-not (form (:optional form)) :lisp)
(define-caller-pattern array-has-fill-pointer-p (form) :lisp)
(define-caller-pattern fill-pointer (form) :lisp)
(define-caller-pattern vector-push (form form) :lisp)
(define-caller-pattern vector-push-extend (form form (:optional form)) :lisp)
(define-caller-pattern vector-pop (form) :lisp)
(define-caller-pattern adjust-array (form form &key (:star form)) :lisp)
(define-caller-pattern char (form form) :lisp)
(define-caller-pattern schar (form form) :lisp)
(define-caller-pattern string= (form form &key (:star form)) :lisp)
(define-caller-pattern string-equal (form form &key (:star form)) :lisp)
(define-caller-pattern string< (form form &key (:star form)) :lisp)
(define-caller-pattern string> (form form &key (:star form)) :lisp)
(define-caller-pattern string<= (form form &key (:star form)) :lisp)
(define-caller-pattern string>= (form form &key (:star form)) :lisp)
(define-caller-pattern string/= (form form &key (:star form)) :lisp)
(define-caller-pattern string-lessp (form form &key (:star form)) :lisp)
(define-caller-pattern string-greaterp (form form &key (:star form)) :lisp)
(define-caller-pattern string-not-greaterp (form form &key (:star form)) :lisp)
(define-caller-pattern string-not-lessp (form form &key (:star form)) :lisp)
(define-caller-pattern string-not-equal (form form &key (:star form)) :lisp)
(define-caller-pattern make-string (form &key (:star form)) :lisp)
(define-caller-pattern string-trim (form form) :lisp)
(define-caller-pattern string-left-trim (form form) :lisp)
(define-caller-pattern string-right-trim (form form) :lisp)
(define-caller-pattern string-upcase (form &key (:star form)) :lisp)
(define-caller-pattern string-downcase (form &key (:star form)) :lisp)
(define-caller-pattern string-capitalize (form &key (:star form)) :lisp)
(define-caller-pattern nstring-upcase (form &key (:star form)) :lisp)
(define-caller-pattern nstring-downcase (form &key (:star form)) :lisp)
(define-caller-pattern nstring-capitalize (form &key (:star form)) :lisp)
(define-caller-pattern string (form) :lisp)
(define-caller-pattern defstruct
((:or name (name (:rest :ignore)))
(:optional documentation-string)
(:plus :ignore))
:lisp)
(define-caller-pattern eval (form) :lisp)
(define-variable-pattern *evalhook* :lisp)
(define-variable-pattern *applyhook* :lisp)
(define-caller-pattern evalhook (form fn fn &optional :ignore) :lisp)
(define-caller-pattern applyhook (fn form fn fn &optional :ignore) :lisp)
(define-caller-pattern constantp (form) :lisp)
(define-variable-pattern *standard-input* :lisp)
(define-variable-pattern *standard-output* :lisp)
(define-variable-pattern *error-output* :lisp)
(define-variable-pattern *query-io* :lisp)
(define-variable-pattern *debug-io* :lisp)
(define-variable-pattern *terminal-io* :lisp)
(define-variable-pattern *trace-output* :lisp)
(define-caller-pattern make-synonym-stream (symbol) :lisp)
(define-caller-pattern make-broadcast-stream ((:star form)) :lisp)
(define-caller-pattern make-concatenated-stream ((:star form)) :lisp)
(define-caller-pattern make-two-way-stream (form form) :lisp)
(define-caller-pattern make-echo-stream (form form) :lisp)
(define-caller-pattern make-string-input-stream (form &optional form form)
:lisp)
(define-caller-pattern make-string-output-stream (&key (:star form)) :lisp)
(define-caller-pattern get-output-stream-string (form) :lisp)
(define-caller-pattern with-open-stream
((var form)
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern with-input-from-string
((var form &key (:star form))
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern with-output-to-string
((var (:optional form))
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern streamp (form) :lisp)
(define-caller-pattern open-stream-p (form) :lisp2)
(define-caller-pattern input-stream-p (form) :lisp)
(define-caller-pattern output-stream-p (form) :lisp)
(define-caller-pattern stream-element-type (form) :lisp)
(define-caller-pattern close (form (:rest :ignore)) :lisp)
(define-caller-pattern broadcast-stream-streams (form) :lisp2)
(define-caller-pattern concatenated-stream-streams (form) :lisp2)
(define-caller-pattern echo-stream-input-stream (form) :lisp2)
(define-caller-pattern echo-stream-output-stream (form) :lisp2)
(define-caller-pattern synonym-stream-symbol (form) :lisp2)
(define-caller-pattern two-way-stream-input-stream (form) :lisp2)
(define-caller-pattern two-way-stream-output-stream (form) :lisp2)
(define-caller-pattern interactive-stream-p (form) :lisp2)
(define-caller-pattern stream-external-format (form) :lisp2)
(define-variable-pattern *read-base* :lisp)
(define-variable-pattern *read-suppress* :lisp)
(define-variable-pattern *read-eval* :lisp2)
(define-variable-pattern *readtable* :lisp)
(define-caller-pattern copy-readtable (&optional form form) :lisp)
(define-caller-pattern readtablep (form) :lisp)
(define-caller-pattern set-syntax-from-char (form form &optional form form)
:lisp)
(define-caller-pattern set-macro-character (form fn &optional form) :lisp)
(define-caller-pattern get-macro-character (form (:optional form)) :lisp)
(define-caller-pattern make-dispatch-macro-character (form &optional form form)
:lisp)
(define-caller-pattern set-dispatch-macro-character
(form form fn (:optional form)) :lisp)
(define-caller-pattern get-dispatch-macro-character
(form form (:optional form)) :lisp)
(define-caller-pattern readtable-case (form) :lisp2)
(define-variable-pattern *print-readably* :lisp2)
(define-variable-pattern *print-escape* :lisp)
(define-variable-pattern *print-pretty* :lisp)
(define-variable-pattern *print-circle* :lisp)
(define-variable-pattern *print-base* :lisp)
(define-variable-pattern *print-radix* :lisp)
(define-variable-pattern *print-case* :lisp)
(define-variable-pattern *print-gensym* :lisp)
(define-variable-pattern *print-level* :lisp)
(define-variable-pattern *print-length* :lisp)
(define-variable-pattern *print-array* :lisp)
(define-caller-pattern with-standard-io-syntax
((:star declaration)
(:star form))
:lisp2)
(define-caller-pattern read (&optional form form form form) :lisp)
(define-variable-pattern *read-default-float-format* :lisp)
(define-caller-pattern read-preserving-whitespace
(&optional form form form form) :lisp)
(define-caller-pattern read-delimited-list (form &optional form form) :lisp)
(define-caller-pattern read-line (&optional form form form form) :lisp)
(define-caller-pattern read-char (&optional form form form form) :lisp)
(define-caller-pattern unread-char (form (:optional form)) :lisp)
(define-caller-pattern peek-char (&optional form form form form) :lisp)
(define-caller-pattern listen ((:optional form)) :lisp)
(define-caller-pattern read-char-no-hang ((:star form)) :lisp)
(define-caller-pattern clear-input ((:optional form)) :lisp)
(define-caller-pattern read-from-string (form (:star form)) :lisp)
(define-caller-pattern parse-integer (form &rest :ignore) :lisp)
(define-caller-pattern read-byte ((:star form)) :lisp)
(define-caller-pattern write (form &key (:star form)) :lisp)
(define-caller-pattern prin1 (form (:optional form)) :lisp)
(define-caller-pattern print (form (:optional form)) :lisp)
(define-caller-pattern pprint (form (:optional form)) :lisp)
(define-caller-pattern princ (form (:optional form)) :lisp)
(define-caller-pattern write-to-string (form &key (:star form)) :lisp)
(define-caller-pattern prin1-to-string (form) :lisp)
(define-caller-pattern princ-to-string (form) :lisp)
(define-caller-pattern write-char (form (:optional form)) :lisp)
(define-caller-pattern write-string (form &optional form &key (:star form))
:lisp)
(define-caller-pattern write-line (form &optional form &key (:star form))
:lisp)
(define-caller-pattern terpri ((:optional form)) :lisp)
(define-caller-pattern fresh-line ((:optional form)) :lisp)
(define-caller-pattern finish-output ((:optional form)) :lisp)
(define-caller-pattern force-output ((:optional form)) :lisp)
(define-caller-pattern clear-output ((:optional form)) :lisp)
(define-caller-pattern print-unreadable-object
((form form &key (:star form))
(:star declaration)
(:star form))
:lisp2)
(define-caller-pattern write-byte (form form) :lisp)
(define-caller-pattern format
(destination
control-string
(:rest format-arguments))
:lisp)
(define-caller-pattern y-or-n-p (control-string (:star form)) :lisp)
(define-caller-pattern yes-or-no-p (control-string (:star form)) :lisp)
(define-caller-pattern wild-pathname-p (form &optional form) :lisp2)
(define-caller-pattern pathname-match-p (form form) :lisp2)
(define-caller-pattern translate-pathname (form form form &key (:star form))
:lisp2)
(define-caller-pattern logical-pathname (form) :lisp2)
(define-caller-pattern translate-logical-pathname (form &key (:star form))
:lisp2)
(define-caller-pattern logical-pathname-translations (form) :lisp2)
(define-caller-pattern load-logical-pathname-translations (form) :lisp2)
(define-caller-pattern compile-file-pathname (form &key form) :lisp2)
(define-caller-pattern pathname (form) :lisp)
(define-caller-pattern truename (form) :lisp)
(define-caller-pattern parse-namestring ((:star form)) :lisp)
(define-caller-pattern merge-pathnames ((:star form)) :lisp)
(define-variable-pattern *default-pathname-defaults* :lisp)
(define-caller-pattern make-pathname ((:star form)) :lisp)
(define-caller-pattern pathnamep (form) :lisp)
(define-caller-pattern pathname-host (form) :lisp)
(define-caller-pattern pathname-device (form) :lisp)
(define-caller-pattern pathname-directory (form) :lisp)
(define-caller-pattern pathname-name (form) :lisp)
(define-caller-pattern pathname-type (form) :lisp)
(define-caller-pattern pathname-version (form) :lisp)
(define-caller-pattern namestring (form) :lisp)
(define-caller-pattern file-namestring (form) :lisp)
(define-caller-pattern directory-namestring (form) :lisp)
(define-caller-pattern host-namestring (form) :lisp)
(define-caller-pattern enough-namestring (form (:optional form)) :lisp)
(define-caller-pattern user-homedir-pathname (&optional form) :lisp)
(define-caller-pattern open (form &key (:star form)) :lisp)
(define-caller-pattern with-open-file
((var form (:rest :ignore))
(:star declaration)
(:star form))
:lisp)
(define-caller-pattern rename-file (form form) :lisp)
(define-caller-pattern delete-file (form) :lisp)
(define-caller-pattern probe-file (form) :lisp)
(define-caller-pattern file-write-date (form) :lisp)
(define-caller-pattern file-author (form) :lisp)
(define-caller-pattern file-position (form (:optional form)) :lisp)
(define-caller-pattern file-length (form) :lisp)
(define-caller-pattern file-string-length (form form) :lisp2)
(define-caller-pattern load (form &key (:star form)) :lisp)
(define-variable-pattern *load-verbose* :lisp)
(define-variable-pattern *load-print* :lisp2)
(define-variable-pattern *load-pathname* :lisp2)
(define-variable-pattern *load-truename* :lisp2)
(define-caller-pattern make-load-form (form) :lisp2)
(define-caller-pattern make-load-form-saving-slots (form &optional form)
:lisp2)
(define-caller-pattern directory (form &key (:star form)) :lisp)
(define-caller-pattern error (form (:star form)) :lisp)
(define-caller-pattern cerror (form form (:star form)) :lisp)
(define-caller-pattern warn (form (:star form)) :lisp)
(define-variable-pattern *break-on-warnings* :lisp)
(define-caller-pattern break (&optional form (:star form)) :lisp)
(define-caller-pattern check-type (form form (:optional form)) :lisp)
(define-caller-pattern assert
(form
(:optional ((:star var))
(:optional form (:star form))))
:lisp)
(define-caller-pattern etypecase (form (:star (symbol (:star form)))) :lisp)
(define-caller-pattern ctypecase (form (:star (symbol (:star form)))) :lisp)
(define-caller-pattern ecase
(form
(:star ((:or symbol ((:star symbol)))
(:star form))))
:lisp)
(define-caller-pattern ccase
(form
(:star ((:or symbol ((:star symbol)))
(:star form))))
:lisp)
(define-caller-pattern compile (form (:optional form)) :lisp)
(define-caller-pattern compile-file (form &key (:star form)) :lisp)
(define-variable-pattern *compile-verbose* :lisp2)
(define-variable-pattern *compile-print* :lisp2)
(define-variable-pattern *compile-file-pathname* :lisp2)
(define-variable-pattern *compile-file-truename* :lisp2)
(define-caller-pattern load-time-value (form (:optional form)) :lisp2)
(define-caller-pattern disassemble (form) :lisp)
(define-caller-pattern function-lambda-expression (fn) :lisp2)
(define-caller-pattern with-compilation-unit (((:star :ignore)) (:star form))
:lisp2)
(define-caller-pattern documentation (form form) :lisp)
(define-caller-pattern trace ((:star form)) :lisp)
(define-caller-pattern untrace ((:star form)) :lisp)
(define-caller-pattern step (form) :lisp)
(define-caller-pattern time (form) :lisp)
(define-caller-pattern describe (form &optional form) :lisp)
(define-caller-pattern describe-object (form &optional form) :lisp2)
(define-caller-pattern inspect (form) :lisp)
(define-caller-pattern room ((:optional form)) :lisp)
(define-caller-pattern ed ((:optional form)) :lisp)
(define-caller-pattern dribble ((:optional form)) :lisp)
(define-caller-pattern apropos (form (:optional form)) :lisp)
(define-caller-pattern apropos-list (form (:optional form)) :lisp)
(define-caller-pattern get-decoded-time () :lisp)
(define-caller-pattern get-universal-time () :lisp)
(define-caller-pattern decode-universal-time (form &optional form) :lisp)
(define-caller-pattern encode-universal-time
(form form form form form form &optional form) :lisp)
(define-caller-pattern get-internal-run-time () :lisp)
(define-caller-pattern get-internal-real-time () :lisp)
(define-caller-pattern sleep (form) :lisp)
(define-caller-pattern lisp-implementation-type () :lisp)
(define-caller-pattern lisp-implementation-version () :lisp)
(define-caller-pattern machine-type () :lisp)
(define-caller-pattern machine-version () :lisp)
(define-caller-pattern machine-instance () :lisp)
(define-caller-pattern software-type () :lisp)
(define-caller-pattern software-version () :lisp)
(define-caller-pattern short-site-name () :lisp)
(define-caller-pattern long-site-name () :lisp)
(define-variable-pattern *features* :lisp)
(define-caller-pattern identity (form) :lisp)
(define-variable-pattern *print-pprint-dispatch* :lisp2)
(define-variable-pattern *print-right-margin* :lisp2)
(define-variable-pattern *print-miser-width* :lisp2)
(define-variable-pattern *print-lines* :lisp2)
(define-caller-pattern pprint-newline (form &optional form) :lisp2)
(define-caller-pattern pprint-logical-block
((var form &key (:star form))
(:star form))
:lisp2)
(define-caller-pattern pprint-exit-if-list-exhausted () :lisp2)
(define-caller-pattern pprint-pop () :lisp2)
(define-caller-pattern pprint-indent (form form &optional form) :lisp2)
(define-caller-pattern pprint-tab (form form form &optional form) :lisp2)
(define-caller-pattern pprint-fill (form form &optional form form) :lisp2)
(define-caller-pattern pprint-linear (form form &optional form form) :lisp2)
(define-caller-pattern pprint-tabular (form form &optional form form form)
:lisp2)
(define-caller-pattern formatter (control-string) :lisp2)
(define-caller-pattern copy-pprint-dispatch (&optional form) :lisp2)
(define-caller-pattern pprint-dispatch (form &optional form) :lisp2)
(define-caller-pattern set-pprint-dispatch (form form &optional form form)
:lisp2)
(define-caller-pattern add-method (fn form) :lisp2)
(define-caller-pattern call-method (form form) :lisp2)
(define-caller-pattern call-next-method ((:star form)) :lisp2)
(define-caller-pattern change-class (form form) :lisp2)
(define-caller-pattern class-name (form) :lisp2)
(define-caller-pattern class-of (form) :lisp2)
(define-caller-pattern compute-applicable-methods (fn (:star form)) :lisp2)
(define-caller-pattern defclass (name &rest :ignore) :lisp2)
(define-caller-pattern defgeneric (name lambda-list &rest :ignore) :lisp2)
(define-caller-pattern define-method-combination
(name lambda-list ((:star :ignore))
(:optional ((:eq :arguments) :ignore))
(:optional ((:eq :generic-function) :ignore))
(:star (:or declaration documentation-string))
(:star form))
:lisp2)
(define-caller-pattern defmethod
(name (:star symbol) lambda-list
(:star (:or declaration documentation-string))
(:star form))
:lisp2)
(define-caller-pattern ensure-generic-function (name &key (:star form)) :lisp2)
(define-caller-pattern find-class (form &optional form form) :lisp2)
(define-caller-pattern find-method (fn &rest :ignore) :lisp2)
(define-caller-pattern function-keywords (&rest :ignore) :lisp2)
(define-caller-pattern generic-flet (((:star (name lambda-list))) (:star form))
:lisp2)
(define-caller-pattern generic-labels
(((:star (name lambda-list))) (:star form))
:lisp2)
(define-caller-pattern generic-function (lambda-list) :lisp2)
(define-caller-pattern initialize-instance (form &key (:star form)) :lisp2)
(define-caller-pattern invalid-method-error (fn form (:star form)) :lisp2)
(define-caller-pattern make-instance (fn (:star form)) :lisp2)
(define-caller-pattern make-instances-obsolete (fn) :lisp2)
(define-caller-pattern method-combination-error (form (:star form)) :lisp2)
(define-caller-pattern method-qualifiers (fn) :lisp2)
(define-caller-pattern next-method-p () :lisp2)
(define-caller-pattern no-applicable-method (fn (:star form)) :lisp2)
(define-caller-pattern no-next-method (fn (:star form)) :lisp2)
(define-caller-pattern print-object (form form) :lisp2)
(define-caller-pattern reinitialize-instance (form (:star form)) :lisp2)
(define-caller-pattern remove-method (fn form) :lisp2)
(define-caller-pattern shared-initialize (form form (:star form)) :lisp2)
(define-caller-pattern slot-boundp (form form) :lisp2)
(define-caller-pattern slot-exists-p (form form) :lisp2)
(define-caller-pattern slot-makeunbound (form form) :lisp2)
(define-caller-pattern slot-missing (fn form form form &optional form) :lisp2)
(define-caller-pattern slot-unbound (fn form form) :lisp2)
(define-caller-pattern slot-value (form form) :lisp2)
(define-caller-pattern update-instance-for-different-class
(form form (:star form)) :lisp2)
(define-caller-pattern update-instance-for-redefined-class
(form form (:star form)) :lisp2)
(define-caller-pattern with-accessors
(((:star :ignore)) form
(:star declaration)
(:star form))
:lisp2)
(define-caller-pattern with-added-methods
((name lambda-list) form
(:star form))
:lisp2)
(define-caller-pattern with-slots
(((:star :ignore)) form
(:star declaration)
(:star form))
:lisp2)
(define-caller-pattern signal (form (:star form)) :lisp2)
(define-variable-pattern *break-on-signals* :lisp2)
(define-caller-pattern handler-case (form (:star (form ((:optional var))
(:star form))))
:lisp2)
(define-caller-pattern ignore-errors ((:star form)) :lisp2)
(define-caller-pattern handler-bind (((:star (form form)))
(:star form))
:lisp2)
(define-caller-pattern define-condition (name &rest :ignore) :lisp2)
(define-caller-pattern make-condition (form &rest :ignore) :lisp2)
(define-caller-pattern with-simple-restart
((name form (:star form)) (:star form)) :lisp2)
(define-caller-pattern restart-case
(form
(:star (form form (:star form))))
:lisp2)
(define-caller-pattern restart-bind
(((:star (name fn &key (:star form))))
(:star form))
:lisp2)
(define-caller-pattern with-condition-restarts
(form form
(:star declaration)
(:star form))
:lisp2)
(define-caller-pattern compute-restarts (&optional form) :lisp2)
(define-caller-pattern restart-name (form) :lisp2)
(define-caller-pattern find-restart (form &optional form) :lisp2)
(define-caller-pattern invoke-restart (form (:star form)) :lisp2)
(define-caller-pattern invoke-restart-interactively (form) :lisp2)
(define-caller-pattern abort (&optional form) :lisp2)
(define-caller-pattern continue (&optional form) :lisp2)
(define-caller-pattern muffle-warning (&optional form) :lisp2)
(define-caller-pattern store-value (form &optional form) :lisp2)
(define-caller-pattern use-value (form &optional form) :lisp2)
(define-caller-pattern invoke-debugger (form) :lisp2)
(define-variable-pattern *debugger-hook* :lisp2)
(define-caller-pattern simple-condition-format-string (form) :lisp2)
(define-caller-pattern simple-condition-format-arguments (form) :lisp2)
(define-caller-pattern type-error-datum (form) :lisp2)
(define-caller-pattern type-error-expected-type (form) :lisp2)
(define-caller-pattern package-error-package (form) :lisp2)
(define-caller-pattern stream-error-stream (form) :lisp2)
(define-caller-pattern file-error-pathname (form) :lisp2)
(define-caller-pattern cell-error-name (form) :lisp2)
(define-caller-pattern arithmetic-error-operation (form) :lisp2)
(define-caller-pattern arithmetic-error-operands (form) :lisp2)
(define-caller-pattern send (form fn (:star form)) :flavors)