4.4 Stropping regimes

The Algol 68 reference language establishes that certain source constructs, namely mode indications and operator indications, consist in a sequence of bold letters and bold digits, known as a bold word. In contrast, other constructs like identifiers, field selectors and labels, collectively known as tags, are composed of regular, non-bold letters and digits.

What is precisely a bold letter or digit, and how they differ from non-bold letters and digits, is not specified by the Report. This is no negligence, but a conscious effort at abstracting the definition of the so-called strict language from its representation. This allows different representations of the same language.

Some representations of Algol 68 are intended to be published in books, be it paper or electronic devices, and be consumed by persons. These are called publication languages. In publication languages bold letters and digits are typically represented by actual bold alphanumeric typographic marks. An Algol 68 program hand written on a napkin or a sheet of paper would typically represent bold letters and digits underlined, or stroked using a different color ink.

Other representations of Algol 68 are intended to be automatically processed by a computer. These representations are called hardware languages. Sometimes the hardware languages are also intended to be written and read by programmers; these are called programming languages.

Unfortunately, computer systems today usually do not yet provide readily usable and ergonomic bold or underline alphanumeric marks, despite the existence of Unicode and modern and sophisticated editing environments. The lack of appropriate input methods surely plays a role to explain this. Thus, the programming representation languages of Algol 68 should resort to a technique known as stropping in order to differentiate bold letters and digits from non-bold letters and digits. The set of rules specifying the representation of these characters is called a stropping regime.

There are three classical stropping regimes for Algol 68, which are standardized and specified in the Standard Hardware Representation normative document. These are POINT stropping, RES stropping and UPPER stropping. The following sections do a cursory tour over them; for more details the reader is referred to the Standard Hardware Representation.

This compiler implements UPPER stropping and SUPPER stropping.