-
Notifications
You must be signed in to change notification settings - Fork 40
Analysis Data Structure
The Analysis Data Structure represents the results of FPP source analysis. It contains the following members.
-
Component map: A map from component symbols to the corresponding components.
-
Component instance map: A map from component instance symbols to the corresponding component instances.
-
Dependency file set: The set of files on which the analysis transitively depends. Used to calculate the inputs to FPP analysis tools. Included files do not appear in this set.
-
Direct dependency file set The set of files on which the analysis directly depends. Used to calculate the inputs to external build environments. Included files do appear in this set.
-
Included file set: The set of files included when parsing input.
-
Init specifier map: A map from component instance symbols to numeric phases to init specifiers. Each entry in the outer map represents all the init specifiers for the component instance. The inner map maps phases to specifiers for one component instance.
-
Input file set: The set of files presented to the analyzer.
-
Level: A nonnegative integer representing the level of recursive analysis.
-
Location specifier map: A map from pairs (symbol kind, qualified name) to location specifiers. Each entry in the map represents the specified location of a symbol.
-
Missing dependency file set: The subset of the dependency file set consisting of files that could not be opened.
-
Nested scope: A nested scope object that represents the current position in a scope traversal.
-
Parent symbol map: A map from symbols to their parent symbols. For example, the symbol for a constant definition appearing inside a module M is mapped to the symbol form M.
-
Scope name list: A list of unqualified names representing the enclosing scopes, with the innermost name at the head of the list. For example, inside module
B
whereB
is insideA
andA
is at the top level, the scope name list is[ B, A ]
. -
Topology map: A map from topology symbols to the corresponding topologies.
-
Type map: A map from type and constant symbols, expressions, and type names to their types.
-
Use-def map: A map from uses (expressions and qualified identifiers that refer to definitions) to the symbols representing their definitions.
-
Use-def matching list: The list of use-def matchings on the current use-def path. Used during cycle analysis.
-
Use-def symbol set: The set of symbols on the current use-def path. Used during cycle analysis.
-
Used symbol set: The set of symbols used. Used during code generation.
-
Value map: A map from constant symbols and expressions to their values.
-
Visited symbol set: The set of symbols visited so far.
An empty analysis data structure has the following configuration:
-
The sets, lists, and maps are empty.
-
The nested scope contains a single empty scope representing the global scope.