This section introduces cost-driven rule selection. This is of particular use for unparsing systems that do not define a unique translation. The compiler writer does not have to specify how to combine pieces to form the best translation but simply lists possible alternatives for the parts.