*Task* How to define pretty-print tables for use with GPP. *Description* The utility AsFixToAbox is a language-independent front-end for the pretty-print system GPP. Instantiated with a set of language specific _formatting rules_ it becomes a formatter for a specific language. These formatting rules (or pretty-print rules) define mappings from language constructs (specified as SDF productions) to BOX expressions. BOX is a language independent markup language to describe the intended layout of text. See [[http://www.cs.uu.nl/wiki/pub/Merijn/PaperPrettyPrinterForEveryOccasion/APrettyPrinterForEveryOccasion.pdf][this paper]] for more information about pretty-print tables and the BOX markup language. Pretty-print entries are defined in an ordered sequence of pretty-print tables. This ordering allows overruling of pretty-print entries by defining overruling entries in tables with higher precedence. *Examples* A pretty-print entry for a language construct S1 S2 ... Sn -> S looks like: S1 S2 ... Sn -> S -- H [ _1 _2 ... _n] This entry defines a horizontal formatting (because of the H operator). The BOX expressions corresponding to the formatted non-terminal symbols S1 S2 ... Sn are refered to using the numbered place holders _1 _2 ... _n A more advanced example which defines a formatting for an `if-then-else' construct is depicted below: [ "if" Cond "then" StatSeq "else" StatSeq "fi" -> Stat -- V [ V is=3 [ H[ KW["if"] _1 KW["then"] _2 ] V is=3 [ KW["else]" _3 ] KW["fi"] ] ] The following BOX operators are used in this example: `KW' to format keywords, `H' to layout boxes horizontally, and `V' to format sub-boxes vertically. Furthermore, the space option `is' is used to specify that the boxes in a vertical context should be indented to the right. This example defines that if-then-else constructs should be formatted as: if Cond then StatSeq else StatSeq fi *See also* GPP, HowToPrettyPrintAGrammar