General Information
Tutorials
Reference Manuals
Libraries
Translation Tasks
Tools
Administration
|
Name Analysis Reference ManualThis library contains a module and a set of roles that can be used to implement the name analysis task for both simple languages with nested scopes and complex languages that may involve inheritance, context-dependent access rules, and arbitrary developer-defined relations.
The ScopeGraphs specification module is instantiated in a
$/Name/ScopeGraphs.gnrc+instance=NLO_:inst $/Name/ScopeGraphs.gnrc:inst
If the instantiation has an We begin by describing the model underlying the ScopeGraphs module (see Fundamentals of Name Analysis), and sketch properties of an abstract syntax tree that facilitate use of the module's computational roles (see Tree Grammar Preconditions). The module provides roles to support constructing a scope graph (see Establishing the Structure of a Scope Graph), creating bindings for defining occurrences (see Defining Occurrences), and searching for bindings given an applied occurrence (see Applied Occurrences). There is an efficient representation for a set of isomorphic scope graphs (see Isomorphic Scope Graphs), and a developer can provide analysis functions tailored to a specific language (see Implementing Language-Specific Behavior). Name analysis computations are interdependent, and depend on other computations such as type analysis. In an attribute grammar specification, it is often necessary to make this dependence explicit to ensure that computations will be correctly ordered (see Dependent Computations of LIDO -- Computations in Trees). Two modules related to the ScopeGraphs module can be used to create predefined identifiers (see Pre-defined Identifiers), and generate a test system (see Name Analysis Testing). Finally, we describe the functions that are used to support the computational roles and can be invoked directly by the developer to tailor the process to unusual languages (see Application Program Interface).
|