Meta-information about the kinds of scopes and the kinds of elements
they can contain.
These tables are used to generate most of the scopestack code. The
format for each entry is:
(scope-name feature-list element-list)
The feature-list is a list of keywords that are used in the templates.
The element-list contains information about the items. Its entries can
be as simple as field names, or can be lists of the form (name [keyword
options]), where the options account for various kinds of departures from
convention. Current keywords:
- :name foo denotes that the accessor for the name of the item is
vl-itemtype->foo, rather than the default vl-itemtype->name.
- :acc foo denotes that the accessor for the items within the scope is
vl-scopetype->foo, rather than the default vl-scopetype->items.
- :maybe-stringp t denotes that the name accessor might return nil,
rather than a string.
- :sum-type t denotes that the item actually encompasses two or more
- :transsum t denotes that the item is a transparent (tag-based) sum
- Information about the kinds of items in each scope.
- Information about which scopes can contain packages.
- Information about the kinds of definitions in each scope.
- Information about which scopes can contain classes.
- Information about the kinds of scopes that have port declarations.