4.4.1 POINT stropping

POINT stropping is in a way the most fundamental of the three standard regimes. It was designed to work in installations with limited character sets that provide only one alphabet, one set of digits, and a very restricted set of other symbols.

In POINT stropping a bold word is represented by its constituent letters and digits preceded by a point character. For example, the symbol bold begin symbol in the strict language, which is represented as begin in bold face in the reference language, would be represented as .BEGIN in POINT stropping.

More examples are summarized in the following table.

Strict languageReference languagePOINT stropping
true symboltrue.TRUE
false symbolfalse.FALSE
integral symbolint.INT
completion symbolexit.EXIT
bold-letter-c-...crc32.CRC32

In POINT stropping a tag is represented by writing its constituent non-bold letters and digits in order. But they are organized in several taggles.

Each taggle is a sequence of one or more letters and digits, optionally followed by an underscore character. For example, the tag PRINT is composed of a single taggle, but the tag PRINT_TABLE is composed of a first taggle PRINT_ followed by a second taggle TABLE.

To improve readability it is possible to insert zero or more white space characters between the taggles in a tag. Therefore, the tag PRINT_TABLE could have been written PRINT TABLE, or even PRINT_ TABLE. This is the reason why Algol 68 identifiers, labels and field selectors can and do usually feature white spaces in them.

It is important to note that both the trailing underscore characters in taggles and the white spaces in a tag do not contribute anything to the denoted tag: these are just stropping artifacts aimed to improve readability. Therefore FOOBAR FOO BAR, FOO_BAR and FOO_BAR_ are all representations of the same tag, that represents the letter-f-letter-o-letter-o-letter-b-letter-a-letter-r language construct.

Below is the text of an example Algol 68 procedure encoded in POINT stropping.

.PROC RECSEL OUTPUT RECORDS = .VOID:
.BEGIN .BITS FLAGS
         := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE);
       .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE,
                                    RECUTL QUICK, FLAGS);
       .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT);

       SKIP COMMENTS .OF WRITER := .TRUE;
       .IF RECUTL PRINT SEXPS
       .THEN MODE .OF WRITER := REC WRITER SEXP .FI;
       REC WRITE (WRITER, RES)
.END