The Shackle Almanac
1.
The compilation process
❱
1.1.
Parsing
1.2.
Abstract syntax tree
❱
1.2.1.
Include resolution
1.3.
High-level intermediate representation
❱
1.3.1.
Scope collection
1.3.2.
Type checking
1.4.
Typed high-level intermediate representation
❱
1.4.1.
Model transformations
1.4.2.
Output item removal
1.4.3.
Generating constraints for domains
1.4.4.
Top-down typing
1.4.5.
Type specialisation
1.4.6.
Generation of function dispatch preambles
1.4.7.
Erasure of records
1.4.8.
Erasure of enums
1.4.9.
Desugaring of comprehensions
1.4.10.
Erasure of option types
1.4.11.
Removal of overloading
1.4.12.
Desugaring of capturing
1.5.
Mid-level intermediate representation
❱
1.5.1.
Totalisation
1.5.2.
Context analysis
1.6.
Bytecode generation
1.7.
Bytecode interpretation
2.
MicroZinc specification
❱
2.1.
Typing Rules
2.2.
Operational Semantics
3.
The MicroZinc Interpreter
4.
MiniZinc Syntax Changes
5.
Error handling
Light
Rust
Coal
Navy
Ayu
The Shackle Almanac
Model transformations
THIR seems to be a good fit for model level transformations.
The idea would be to perform some sort of rewriting of the THIR tree to produce a new tree