Bold taggles (The GNU Algol 68 Compiler)

### 9.2 Bold taggles ¶

This compiler supports the stropping regimes known as UPPER and SUPPER. In both regimes bold words are written by writing their constituent bold letters and digits, in order. In UPPER regime all the letters of a bold word are to be written using upper-case. In SUPPER regime, only the first bold letter is required to be written using upper-case, and this only when the bold word is not a reserved word.

When a bold word comprises several natural words, it may be a little difficult to distinguish them at first sight. Consider for example the following code, written fist in UPPER stropping:

    MODE TREENODE = STRUCT (TREENODEPAYLOAD data, REF TREENODE next),
         TREENODEPAYLOAD = STRUCT (INT code, REAL average, mean);

Then written in SUPPER stropping:

    mode TreeNode = struct (TreeNodePayload data, REF TreeNode next),
         TreeNodePayload = struct (int code, real average, mean);

Particularly in UPPER stropping, it may be difficult to distinguish the constituent natural words at first sight.

In order to improve this, this compiler implements a GNU extension called bold taggles that allows to use underscore characters (`_`) within mode and operator indications as a visual aid to improve readability. When this extension is enabled, mode indications and operator indications consist in a sequence of the so-called bold taggles, which are themselves sequences of one or more bold letters or digits optionally terminated by an underscore character.

With bold taggles enabled the program above could have been written using UPPER stropping as:

    MODE TREE_NODE = STRUCT (TREE_NODE_PAYLOAD data, REF TREE_NODE next),
         TREE_NODE_PAYLOAD = STRUCT (INT code, REAL average, mean);

And using SUPPER stropping as:

    mode Tree_Node = struct (Tree_Node_Payload data, ref Tree_Node next),
         Tree_Node_Payload = struct (int code, real average, mean);

Which is perhaps more readable for most people. Note that the underscore characters are not really part of the mode or operator indication. Both `TREE_NODE` and `TREENODE` denote the same mode indication. Note also that, following the definition, constructs like `Foo__bar` and `_Baz` are not valid indications.

Bold taggles are available when the gnu68 dialect of the language is selected. See Dialect options.