Analysis Data Structure - nasa/fpp GitHub Wiki
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. 
- 
Dictionary map: A map from topology symbols to the corresponding dictionaries. 
- 
Dictionary generation flag: A Boolean flag indicating whether dictionary generation is required. This flag is set when computing dependencies and when generating dictionary output. 
- 
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. 
- 
Implied use map: A map from AST nodes to implied use info. The implied use info is a map from implied use kinds to sets of implied uses. 
- 
Included file set: The set of files included when parsing input. 
- 
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 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 BwhereBis insideAandAis at the top level, the scope name list is[ B, A ].
- 
State machine map: A map from state machine symbols to the corresponding state machines. 
- 
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.