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.


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.