The definition table is a data base in which the compiler stores
information about defined entities like types, variables and procedures.
Each entity is represented by a unique definition table key.
Information about that entity is stored as an arbitrary number of
properties associated with its definition table key.
The value of a particular property can be set via an update operation
and examined via a query operation.
The definition table module exports
an operation that yields a new definition table key
and a distinguished key to represent an undefined entity that has no
A user obtains a definition table module for a particular application by
specifying the set of properties to be stored by that module.
Different information may be associated with various kinds of entities,
and specific items of information are determined at different times
by various parts of the compiler.
These characteristics determine the best ways of grouping individual items
of information into properties, and it is possible to state general
definition table design criteria based upon them.
The definition table module provides standard query and update operations.
Additional operations are available from a library, and the user is allowed
to define still others for particular applications.
All of these operations use the same interface for accessing the definition