Go-On Symbol

Meaning

The go-on symbol separates the phrases (declarations and units) in serial clauses. The concrete syntax for the go-on symbol is almost always the semicolon character ;.

Consider for example the following closed clause, that consists on a serial clause with a declaration, a statement (voided assignation) and a final expression that determines the value of the serial clause:

(int t := x; x := y; t)

In Algol 68 the go-on symbol always implies serial elaboration. In the example above, the declaration is elaborated first, then the assignation and finally the final expression.

Strictly speaking, it is not legal to put extra go-on symbols after the sequence of phrases: unlike in ALGOL 60, Algol 68 doesn’t support the notion of “empty statement” (skip is used for that purpose instead) so the following code is invalid:

begin foo;
      bar;
      baz;
end

However, some implementations are lenient and just emit a warning about the superfluous go-on symbol. That is the case of both GNU Algol 68 and Algol68 Genie.

Syntax

Simplified [RR 3.2.1.b]:

b) SOID series:
     strong void unit, go on token, SOID series;
     declaration of DECS, go on token, SOID series LABSETY;
     label definition of LAB, series with LABSETY;
     completion token, label definition of LAB, series with LABSETY;
     SOID unit.

See Also