diff options
Diffstat (limited to 'top-refs.txi')
-rw-r--r-- | top-refs.txi | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/top-refs.txi b/top-refs.txi new file mode 100644 index 0000000..11944bb --- /dev/null +++ b/top-refs.txi @@ -0,0 +1,65 @@ +@code{(require 'top-refs)} +@ftindex top-refs +@cindex top-level variable references +@cindex variable references + +@noindent +These procedures complement those in @ref{Module Manifests} by +finding the top-level variable references in Scheme source code. +They work by traversing expressions and definitions, keeping track +of bindings encountered. It is certainly possible to foil these +functions, but they return useful information about SLIB source +code. + + +@defun top-refs obj + +Returns a list of the top-level variables referenced by the Scheme +expression @var{obj}. +@end defun + +@defun top-refs<-file filename + +@var{filename} should be a string naming an existing file containing Scheme +source code. @code{top-refs<-file} returns a list of the top-level variable references +made by expressions in the file named by @var{filename}. + +Code in modules which @var{filename} @code{require}s is not traversed. Code in +files loaded from top-level @emph{is} traversed if the expression +argument to @code{load}, @code{slib:load}, @code{slib:load-source}, +@code{macro:load}, @code{defmacro:load}, @code{synclo:load}, +@code{syncase:load}, or @code{macwork:load} is a literal string +constant or composed of combinations of vicinity functions and +string literal constants; and the resulting file exists (possibly +with ".scm" appended). +@end defun +@noindent +The following function parses an @dfn{Info} Index. +@cindex Info +@footnote{Although it will +work on large info files, feeding it an excerpt is much faster; and +has less chance of being confused by unusual text in the info file. +This command excerpts the SLIB index into @file{slib-index.info}: + +@example +info -f slib2d6.info -n "Index" -o slib-index.info +@end example +} + + +@defun exports<-info-index file n @dots{} + +@var{n} @dots{} must be an increasing series of positive integers. +@code{exports<-info-index} returns a list of all the identifiers appearing in the @var{n}th +@dots{} (info) indexes of @var{file}. The identifiers have the case that +the implementation's @code{read} uses for symbols. Identifiers +containing spaces (eg. @code{close-base on base-table}) are +@emph{not} included. + +Each info index is headed by a @samp{* Menu:} line. To list the +symbols in the first and third info indexes do: + +@example +(exports<-info-index "slib.info" 1 3) +@end example +@end defun |