Skip to content

Checking Semantics

github-actions[bot] edited this page Oct 16, 2026 · 26 revisions

For implementation, see CheckSemantics.scala.

Input

  1. An analysis data structure a and a list tul of translation units.

Output

  1. If the semantic check passes, a pair (a, tul), where a represents the results of the analysis, and tul represents the results of syntax expansion.

  2. Otherwise an error and no output.

Procedure

  1. Expand syntax and enter symbols for a and tul.

  2. Construct the implied use map 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. Check framework definitions for a and tul.

  8. Evaluate implied enum constants for a and tul.

  9. Evaluate constant expressions for a and tul.

  10. Finalize type definitions for a and tul.

  11. Finalize constant expressions for a and tul.

  12. Check framework constant values for a.

  13. Check port definitions for a and tul.

  14. Check interface definitions for a and tul.

  15. Check component definitions for a and tul.

  16. Check component instance definitions for a and tul.

  17. Check state machine definitions for a and tul.

  18. Check topology instances for a and tul.

  19. Check topology definitions for a and tul.

  20. Check template interface arguments for a.

  21. Check location specifiers for a and tul.

  22. Check dictionary definitions for a and tul.

  23. Construct the dictionary map for a and tul.

  24. Check system definitions for a and tul.

Clone this wiki locally