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