The process of transforming high-level source code to its equivalent intermediate representation is called lowering.

Lowering is takes place over multiple translation phases, each of which resulting in IR code at a different stage:

  1. High-level source code is translated to raw IR.

  2. Raw IR is translated to legal IR.

  3. Legal IR is translated to canonical IR.

A program in raw IR may contain incomplete deinitialization and flow-sensitive type errors. A program in legal or canonical IR shall not violate any of the static semantic rules of the Hylo programming language.

Last updated