Skip to content

Checking Semantics

Rob Bocchino edited this page Jan 28, 2025 · 11 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 state machine definitions for a and tul.

  14. Check topology definitions for a and tul.

  15. Construct the dictionary map for a and tul.

  16. Check location specifiers for a and tul.

Clone this wiki locally