Skip to content

Checking Semantics

Robert L. Bocchino Jr. edited this page Apr 18, 2024 · 8 revisions

For implementation, see CheckSemantics.scala.

Input

  1. A list tul of translation units

Output

  1. If the semantic check passes, an analysis data structure a representing the results of the analysis.

  2. Otherwise an error and no output.

Procedure

  1. Create an empty analysis data structure a.

  2. Enter symbols for a and tul.

  3. Check uses for a and tul.

  4. Check use def cycles for a and tul.

  5. Check type uses for a and tul.

  6. Check expression types for a and tul.

  7. Evaluate implied enum constants for a and tul.

  8. Evaluate constant expressions for a and tul.

  9. Finalize type definitions for a and tul.

  10. Check port definitions for a and tul.

  11. Check component definitions for a and tul.

  12. Check component instance definitions for a and tul.

  13. Check topology definitions for a and tul.

  14. Check location specifiers for a and tul.