-
Notifications
You must be signed in to change notification settings - Fork 67
Resolving Templates
For implementation, see
ResolveTemplates.scala.
This algorithm enters the symbols of a source model and expands its template expansion specifiers. Each tool runs it on the translation units produced by resolving include specifiers, and then runs semantic checking on the result.
-
An analysis data structure a.
-
A list tul of translation units.
-
An updated analysis data structure a with symbols entered, the use-def map filled in for template names, and the template expansion map filled in.
-
A list tul' of translation units with state enums added and templates expanded.
-
Otherwise an error and no output.
-
Add state enums for tul, yielding a new list of translation units tul in which each state machine definition that has a body has a state enum definition.
-
Enter symbols for a and tul.
-
Check template uses for a and tul.
-
Expand templates for a and tul, yielding a new list of translation units tul in which each template expansion specifier carries the members that it expands.
-
Enter template symbols for a and tul.