MonoBURG

Since EPITA-2023, MonoBURG is no longer used by TC. It was part of the instruction scheduling and was used to translate LIR to ASSEM.

MonoBURG is a code generator generator, a tool that produces a function from a tree-pattern description of an instruction set. If you think of Bison being a program generating an AST generator from concrete syntax, you can see MonoBURG as a program generating an Assem generator from LIR trees.

MonoBURG is named after BURG, a program that generates a fast tree parser using BURS (Bottom-Up Rewrite System). MonoBURG is part of the Mono Project and has been extended by Michaël Cadilhac for the needs of the Tiger Project.

Resources:

Some papers on code generator generators are available in the bibliography. See BURG - Fast Optimal Instruction Selection and Tree Parsing, and Engineering a Simple, Efficient Code-Generator Generator.