According to Section 13.0 of the FreePascal Language Reference (version 3.2.0)

        "A label can be an identifier or an integer digit."

What may be meant is that a label can be an identifier or an integer digit-sequence (and that's what the compiler accepts)

        label := digit-sequence | identifier .

ISO-7185 and ISO-10206 Pascal both define

        label = digit-sequence .

UCSD-Pascal defines

        label = unsigned-integer ":" .

Turbo Pascal (5.5) defines

        label = digit-sequence .

in the range 0..9999

MetroWerks Pascal (unfortunately) defined a label as

        label = identifier .

The reason for restricting labels to digit-sequences (excluding identifiers) is 
a parsing problem:

        a :=3;

can also be read as

        a : ......

which is the optional <[ label ":" ]> in the rule for <statement>.

        statement = [ label ":" ] [ simple-statement | structured-statement | 
asm-statement ] .

This can be solved, of course, but misses the elegance of the ISO-7185/ISO-10206/UCSD/Turbo Pascal label definition.

Regards,

Adriaan van Os
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to