Common Lisp Package: BIBTEX-COMPILER

README:

FUNCTION

Public

BIBTEX (FILE-STEM &KEY STYLE)

The BibTeX program. Read citation commands, a list of bibliographic databases and the name of the bibliography style from TeX commands in the file `FILE-STEM.aux'. Find the named bibliography style via `find-bibtex-style'; it can be overridden programmatically using the :STYLE argument (a string or a function designator). Print the formatted bibliography to the file `FILE-STEM.bbl'. Return two values, the values of *history* and *err-count*.

COMPILE-BST-FILE (BST-FILE LISP-FILE &KEY (MAKE-VARIABLES-LEXICAL T) (MAKE-VARIABLES-CONSTANT T))

Compile the BibTeX style file BST-FILE to a Common Lisp BibTeX style file LISP-FILE. If :MAKE-VARIABLES-LEXICAL or :MAKE-VARIABLES-CONSTANT is true (the default), make a second compiler pass, where some variables are turned into lexical variables or constant variables.

FIND-BIBTEX-STYLE (STYLE)

Find the named BibTeX STYLE. * First try the styles registered using REGISTER-BIBTEX-STYLE. * Then, if *ALLOW-LOAD-LISP-BIBTEX-STYLE* is true, try to find and load a Lisp BibTeX style file named "STYLE.lbst". * Finally try to find a BibTeX style file named "STYLE.bst". Return a thunk that implements the BibTeX style. Signal an error if no style of the requested name has been found.

INTERPRETED-BIBTEX-STYLE (BST-FILE)

Return a thunk that implements the BibTeX style of the BST-FILE by running the BST interpreter.

LISP-BIBTEX-STYLE (LBST-FILE)

Return a thunk that implements the Lisp BibTeX style of LBST-FILE.

REGISTER-BIBTEX-STYLE (NAME THUNK)

Register a BibTeX style, implemented as THUNK (a function designator), under NAME.

Private

ASSIGN-LOOP-VARIABLES

For every borrowed variable, pop a form off the stack. Push a PSETQ form that assigns the values of the popped forms to the borrowed variables. If there are not as many values on the stack as borrowed variables, return :NOT-BALANCED; in this case the current computation is left corrupted. Otherwise return the number of assignments (this can be lower than the number of borrowed variables).

BINDING-MVFORM (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BINDING-VARIABLES (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-COMMAND-ARGS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-COMMAND-FUNCTION (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-COMPILE-DEFUN (NAME FUNCTION-DEFINITION)

Compile a BST wizard-defined function of given NAME and FUNCTION-DEFINITION. If NAME is nil, build a lambda expression, rather than a defun form. Return four values: DEFUN-OR-LAMBDA-FORM, ARGUMENT-TYPES, RESULT-TYPES, SIDE-EFFECTS.

BST-COMPILE-LITERAL (LITERAL STACK &REST ARGS &KEY (BORROWING-ALLOWED T) &ALLOW-OTHER-KEYS)

Compile a BST function LITERAL, which is a symbol, designating a BST function, or a list (a function body). Return five values: a Lisp FORM, ARGUMENT-TYPES, RESULT-TYPES, SIDE-EFFECTS-P, and FREE-VARIABLES.

BST-COMPILE-LITERAL-AS-WHILE-BODY (LITERAL LOOP-VARS LOOP-VAR-TYPES)

Compile a BST function LITERAL, which is a symbol, designating a BST function, or a list (a function body). Return five values: a Lisp BODY, LOOP-VARS, LOOP-VAR-TYPES, INIT-TYPES and SIDE-EFFECTS.

BST-COMPILE-THUNKCALL (BST-NAME)

Build a Lisp form for calling the BST function named BST-NAME.

BST-FUNCTION-ARGUMENT-TYPES (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-ASSIGNED-VALUE-FORM (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-BODY (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-CONSTANT-P (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-DEFUN-FORM (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-IGNORE-REDEFINITION-P (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-LEXICAL-P (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-LISP-FORM-MAKER (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-LISP-NAME (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-NAME (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-NUM-ASSIGNMENTS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-POP-FORM-ARGS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-RESULT-TYPES (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-SETTER (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-SETTER-FORM-MAKER (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-SIDE-EFFECTS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-TYPE (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-FUNCTION-VALUE (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

BST-INTERN (NAME)

Intern NAME into *BST-PACKAGE*, shadowing imported symbols.

BUILD-ASSOCIATIVE-FORM (OPERATORS FORM1 FORM2)

Build the form `(,@OPERATORS FORM1 FORM2) but if FORM1 and FORM2 are of this form, use the associativity of the operation to build `(,@OPERATORS FORMS...) instead.

BUILD-IF-FORM (VAL-FORM THEN-FORM ELSE-FORM)

Build a Lisp form equivalent to `(IF ,VAL-FORM ,THEN-FORM ,ELSE-FORM) but try to beautify the result by using COND, UNLESS, and WHEN, rather than IF in certain cases.

BUILD-NOT-FORM (FORM)

Build the form `(not ,@FORM) but simplify that if possible.

BUILD-PROGN-FORM (BODY)

Build a Lisp form equivalent to `(progn ,@BODY). For the special case of an empty body, use `(values).

BUILD-VALUES-BODY (RESULT-LIST)

Build a Lisp body containing one form, `(values ,@RESULT-LIST). For zero or one values, make simpler constructions.

COERCE-FORM (LISP-FORM AVAILABLE-TYPE REQUESTED-TYPE)

Return a Lisp form that computes the coercion of LISP-FORM from AVAILABLE-TYPE to REQUESTED-TYPE. As a secondary value, return the effective type.

COMPILE-BST-FUN (DEFINITION &KEY INT-VARS STR-VARS)

A debugging aid.

COMPILE-LITERAL (LITERAL)

Compile a BST function LITERAL, which is a symbol, designating a BST function, or a list (a function body). Record the computation in the usual special variables.

CURRENT-STACK-AS-VALUES-LIST

Pop all value forms off the stack, collect them in a list suitable for VALUES and push them again onto the stack. Return two values: a list of forms and a list of their types.

GET-BST-FUNCTION-OF-TYPE (NAME &OPTIONAL (TYPE-LIST T))

Check whether NAME is the name of a BST function, whose type is one contained in TYPE-LIST. If so, return that function. Otherwise, signal an error and don't return.

MAKE-BINDING-AND-PUSH-VARIABLES (MVFORM)

Make a binding for all values delivered by MVFORM and push the bound variables onto *FORM-STACK*.

MAP2 (PROCEDURE &REST LISTS)

Return two lists that are collecting the two values of PROCEDURE, applied to the parallel elements in LISTS.

MAX-SIDE-EFFECTS (&REST EFFECTSS)

Compute the maximum of the side-effects EFFECTSS.

MVFORM-FORM (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

MVFORM-LITERAL (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

MVFORM-LITERAL-P (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

MVFORM-SIDE-EFFECTS (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

MVFORM-TYPES (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

PACKAGE-AS-BODY (&KEY (EXPECTED-RESULT-TYPES NIL EXPECTED-RESULT-TYPES-P))

Build a Lisp body corresponding to the computation captured in *FORM-BINDINGS* and *FORM-STACK*. The Lisp body contains free variables corresponding to *BORROWED-VARIABLES*. Return five values: BODY, ARGUMENT-TYPES, RESULT-TYPES, SIDE-EFFECTS, and FREE-VARIABLES.

PACKAGE-AS-FORM (&REST ARGS)

Build a Lisp form corresponding to the computation captured in *FORM-BINDINGS* and *FORM-STACK*. The Lisp form contains free variables corresponding to *BORROWED-VARIABLES*. Return five values: LISP-FORM, ARGUMENT-TYPES, RESULT-TYPES, SIDE-EFFECTS, and FREE-VARIABLES.

PACKAGE-AS-PROCEDURE (NAME &REST ARGS)

Build a DEFUN NAME form from *FORM-BINDINGS*, *BORROWED-VARIABLES* and *FORM-STACK*. If NAME is nil, build a LAMBDA form instead. Return four values: DEFUN-OR-LAMBDA-FORM, ARGUMENT-TYPES, RESULT-TYPES, SIDE-EFFECTS.

POP-FORM (TYPE &KEY (NEED-VARIABLE NIL) (WHEN-EMPTY BORROW) (ASSIGNED-VARIABLES NIL))

Pop a Lisp form delivering a single value of given TYPE from *FORM-STACK*. If the stack is empty, borrow a variable instead if :WHEN-EMPTY is :BORROW, or return nil,nil,nil,t if :WHEN-EMPTY is nil. If :NEED-VARIABLE is nil, POP-FORM may return a side-effecting single-value form (which should only be called once, in order). If :NEED-VARIABLE is :IF-SIDE-EFFECTS, POP-FORM will introduce a variable for side-effecting forms. Otherwise, POP-FORM will introduce a variable for all non-atom forms. A variable will also be introduced if the form uses one of the variables in the list :ASSIGNED-VARIABLES. Return four values: the Lisp form, the actual type of the delivered value, SIDE-EFFECTS, and EMPTY-P.

POP-LITERAL

Pop a literal from *FORM-STACK*.

POP-SINGLE-VALUE-FORM (&REST ARGS)

Like pop-form, but package the return values in a MVFORM object.

PUSH-FORM (MVFORM)

Push MVFORM onto *FORM-STACK*.

REMOVE-VARIABLES-FROM-SIDE-EFFECTS (VARIABLES SIDE-EFFECTS)

VARIABLES is a list of strings or symbols to be removed from any mention in SIDE-EFFECTS. Return the resulting side effects.

SINGLETON-LIST-P (ARG)

Non-nil if ARG is a list consisting of one symbol.

STORE-COMMENT

Copy top-level comments; replace N leading % signs with N+1 semicola

VARIABLE-NAME (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

VARIABLE-TYPE (INSTANCE)

@arg[extid]{A @class{extid}} @return[sytemid]{puri:uri or nil} Returns the System ID part of this External ID.

Undocumented

ANY-SIDE-EFFECTS-P (SIDE-EFFECTS)

SETFBINDING-MVFORM (NEW-VALUE INSTANCE)

BINDING-P (OBJECT)

SETFBINDING-VARIABLES (NEW-VALUE INSTANCE)

BST-COERCE/PUSH (VALUE TYPE)

SETFBST-COMMAND-ARGS (NEW-VALUE INSTANCE)

SETFBST-COMMAND-FUNCTION (NEW-VALUE INSTANCE)

BST-COMMAND-P (OBJECT)

BST-COMPILE-ERROR (FORMAT-STRING &REST ARGS)

BST-COMPILE-LITERAL-AS-WHILE-PREDICATE (PRED-LITERAL)

BST-COMPILE-WARNING (FORMAT-STRING &REST ARGS)

BST-EXECUTE (BST-FUNCTION)

BST-EXECUTE-BODY (BODY)

BST-EXECUTE-STACK-LITERAL (LITERAL)

BST-EXECUTE-STACK-LITERAL/POP (LITERAL TYPE)

SETFBST-FUNCTION-ARGUMENT-TYPES (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-ASSIGNED-VALUE-FORM (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-BODY (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-CONSTANT-P (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-DEFUN-FORM (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-IGNORE-REDEFINITION-P (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-LEXICAL-P (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-LISP-FORM-MAKER (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-LISP-NAME (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-NAME (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-NUM-ASSIGNMENTS (NEW-VALUE INSTANCE)

BST-FUNCTION-P (OBJECT)

SETFBST-FUNCTION-POP-FORM-ARGS (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-RESULT-TYPES (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-SETTER (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-SETTER-FORM-MAKER (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-SIDE-EFFECTS (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-TYPE (NEW-VALUE INSTANCE)

SETFBST-FUNCTION-VALUE (NEW-VALUE INSTANCE)

BST-GENTEMP (PREFIX)

BST-NAME-TO-LISP-NAME (BST-NAME &OPTIONAL (TYPE FUNCTION))

BST-POP/COERCE (TYPE)

BST-READ (&KEY (EOF-OK NIL))

BUILTIN-BST-FUNCTIONS

CHECK-FOR-ALREADY-DEFINED-FUNCTION (NAME)

COMPILE-BODY (BODY)

COMPILE-BST-FUNCTION (BST-FUNCTION)

COMPILE-FUNCALL (FUNCTION-NAME)

CONSTANT-BST-VARIABLE-P (VARIABLE)

COPY-BINDING (INSTANCE)

COPY-BST-COMMAND (INSTANCE)

COPY-BST-FUNCTION (INSTANCE)

COPY-COMMENT (FROM-STREAM TO-STREAM)

COPY-MVFORM (INSTANCE)

COPY-VARIABLE (INSTANCE)

CURRENTLY-COMPILED-BODY-WITH-MARKUP

GET-BST-COMMANDS-AND-PROCESS (STREAM)

GET-BST-FUNCTION (NAME)

MAKE-BINDING (&KEY ((VARIABLES DUM101) NIL) ((MVFORM DUM102) NIL))

MAKE-BST-COMMAND (&KEY ((FUNCTION DUM53) NIL) ((ARGS DUM54) NIL))

MAKE-BST-FUNCTION (&KEY ((NAME DUM0) NIL) ((TYPE DUM1) NIL) ((IGNORE-REDEFINITION-P DUM2) NIL) ((LISP-NAME DUM3) NIL) ((ARGUMENT-TYPES DUM4) NIL) ((RESULT-TYPES DUM5) NIL) ((POP-FORM-ARGS DUM6) NIL) ((LISP-FORM-MAKER DUM7) NIL) ((SIDE-EFFECTS DUM8) NULL-SIDE-EFFECTS) ((SETTER-FORM-MAKER DUM9) NIL) ((DEFUN-FORM DUM10) NIL) ((LEXICAL-P DUM11) NIL) ((CONSTANT-P DUM12) NIL) ((NUM-ASSIGNMENTS DUM13) 0) ((ASSIGNED-VALUE-FORM DUM14) NIL) ((VALUE DUM15) NIL) ((BODY DUM16) NIL) ((SETTER DUM17) NIL))

MAKE-ENTRY-TYPE-FUNCTION-ALIST

MAKE-MACRO-SET-FORMS

MAKE-MVFORM (&KEY ((LITERAL-P DUM139) NIL) ((FORM DUM140) NIL) ((LITERAL DUM141) NIL) ((TYPES DUM142) NIL) ((SIDE-EFFECTS DUM143) NULL-SIDE-EFFECTS))

MAKE-SOME-VARIABLES-CONSTANT

MAKE-SOME-VARIABLES-LEXICAL

MAKE-VARIABLE (&KEY ((NAME DUM63) NIL) ((TYPE DUM64) NIL))

SETFMVFORM-FORM (NEW-VALUE INSTANCE)

SETFMVFORM-LITERAL (NEW-VALUE INSTANCE)

SETFMVFORM-LITERAL-P (NEW-VALUE INSTANCE)

MVFORM-P (OBJECT)

SETFMVFORM-SIDE-EFFECTS (NEW-VALUE INSTANCE)

SETFMVFORM-TYPES (NEW-VALUE INSTANCE)

NULL-TYPE (A)

PUSH-MVFORM (&REST ARGS)

REGISTER-BST-ENTRY (ENTRY FUNC-TYPE TYPE DEFAULT-VALUE HASH-TABLE)

REGISTER-BST-GLOBAL-VAR (VARIABLE LISP-NAME FUNC-TYPE TYPE INITIAL-VALUE HASH-TABLE &KEY (CONSTANT-P NIL))

REGISTER-BST-PRIMITIVE (BST-NAME ARGUMENT-TYPES RESULT-TYPES LISP-FUNCTION &KEY (IGNORE-REDEFINITION NIL) (SIDE-EFFECTS-P NIL))

SET-UNION (&REST LISTS)

SHOW-STATE

TYPE-INTERSECTION (A B)

TYPE-UNION (A B)

TYPE-UNION* (A B)

TYPE<= (A B)

TYPE= (A B)

SETFVARIABLE-NAME (NEW-VALUE INSTANCE)

VARIABLE-P (OBJECT)

SETFVARIABLE-TYPE (NEW-VALUE INSTANCE)

MACRO

Public

Undocumented

DEFINE-BIBTEX-STYLE (NAME &BODY BODY)

Private

Undocumented

DEFINE-BST-COMMAND (NAME ARGS &BODY BODY)

DEFINE-BST-PRIMITIVE (BST-NAME ARGLIST RESULT-TYPES &KEY INTERPRETED COMPILED (SIDE-EFFECTS-P NIL) (IGNORE-REDEFINITION-P NIL))

DEFINE-BST-SPECIAL-FORM (BST-NAME &BODY BODY)

GENERIC-FUNCTION

Private

Undocumented

BST-COMPILER-ERROR-MESSAGE (CONDITION)

SLOT-ACCESSOR

Private

Undocumented

SIDE-EFFECTS-ASSIGNED-VARIABLES (OBJECT)

SETFSIDE-EFFECTS-ASSIGNED-VARIABLES (NEW-VALUE OBJECT)

SIDE-EFFECTS-SIDE-EFFECTS-P (OBJECT)

SETFSIDE-EFFECTS-SIDE-EFFECTS-P (NEW-VALUE OBJECT)

SIDE-EFFECTS-UNCONDITIONALLY-ASSIGNED-VARIABLES (OBJECT)

SETFSIDE-EFFECTS-UNCONDITIONALLY-ASSIGNED-VARIABLES (NEW-VALUE OBJECT)

SIDE-EFFECTS-USED-VARIABLES (OBJECT)

SETFSIDE-EFFECTS-USED-VARIABLES (NEW-VALUE OBJECT)

SIDE-EFFECTS-VARIABLES-USED-BEFORE-ASSIGNED (OBJECT)

SETFSIDE-EFFECTS-VARIABLES-USED-BEFORE-ASSIGNED (NEW-VALUE OBJECT)

VARIABLE

Public

*ALLOW-LOAD-LISP-BIBTEX-STYLE*

Non-nil if a Lisp BibTeX style is allowed to be located via KPSEARCH and loaded into the Lisp image. (This might be seen as a security risk, because Lisp programs are much more powerful than BST scripts.)

*BIBTEX-STYLES*

An alist mapping BibTeX styles (strings) to thunk designators that implement the BibTeX style. Use REGISTER-BIBTEX-STYLE to put items here.

Private

*BIB-ENTRIES-SYMBOL*

The name of the lexical variable in *main-lisp-body* that stores the bib entries.

*BORROWED-VARIABLES*

The list of VARIABLEs borrowed from the stack.

*BST-COMPILING*

Non-nil if we are compiling a Common Lisp program from the BST program, rather than interpreting the BST program.

*BST-DEFINITION-SEQUENCE*

A list of strings (comments) and BST-FUNCTION structures. It records the definition order in the BST file.

*BST-FUNCTION-CALL-SEQUENCE*

A list of BST-FUNCTION structures. It records the call order in the BST file in reverse order.

*BST-PACKAGE*

A temporary package where the BST compiler puts the symbols generated for the BibTeX style file

*BST-SPECIAL-FORMS*

A hashtable, mapping BST function symbols to thunks that implement special forms by directly manipulating the current compiler data.

*COMPILING-WHILE-BODY*

True if compiling the body of a while$ function.

*CURRENTLY-COMPILED-BODY*

Only used for reporting errors.

*CURRENTLY-COMPILED-BODY-REST*

Only used for reporting errors.

*CURRENTLY-COMPILED-FUNCTION*

Only used for reporting errors.

*ENTRY-SEEN-P*

Non-nil if the BST ENTRY command has been seen.

*FORM-BINDINGS*

A list of BINDINGs that keeps track of all forms that cannot be collected functionally because they are side-effecting or their values are needed more than one time.

*FORM-STACK*

The list of MVFORMs delivering the values on the stack.

*LEXICAL-VARIABLES*

An alist mapping strings designating BST variables to Lisp VARIABLEs.

*LEXICALS*

A hack until detection of lexicals works.

*LITERAL-STACK*

The stack of BibTeX literals during interpretation of a BST program.

*MAIN-LISP-BODY*

A list collecting the forms corresponding to EXECUTE, ITERATE, READ, REVERSE, and SORT commands in reverse order.

*READ-SEEN-P*

Non-nil if the BST READ command has been seen.

*RELAXED-COMPILATION*

If non-nil, try to compile the BST program even if it is slightly broken. In an IF$ with bad stack use, fill up one of the branches and signal a runtime error from there.

*SILENT-COMPILATION*

If non-nil, don't issue compiler warnings.

Undocumented

*BIBTEX-PPRINT-DISPATCH*

*BST-COMMANDS*

*BST-FUNCTIONS*

*BST-GENTEMP-COUNTER*

*BST-READTABLE*

*BST-STREAM*

*BUILTIN-BST-FUNCTIONS*

*REGISTERED-BIBTEX-STYLE*

*SHOW-STACK*

+VERSION+

NULL-SIDE-EFFECTS

CLASS

Private

BINDING

A multiple-value binding frame

MVFORM

A multiple-values-delivering form on the stack

SIDE-EFFECTS

A description of the side-effects of a computation

VARIABLE

A typed Lisp variable

Undocumented

BST-COMMAND

BST-FUNCTION

CONDITION

Private

Undocumented

BST-COMPILER-ERROR

BST-COMPILER-WARNING