Numeric literals denote constant non-negative integers or reals. The types of
these literals are INTEGER
, LONGINT
, REAL
,
LONGREAL
, and EXTENDED
.
A literal INTEGER
has the form base_digits
, where base
is
one of ``2
'', ``3
'', ..., ``16
'', and digits
is a
non-empty sequence of the decimal digits 0
through 9
plus the
hexadecimal digits A
through F
. The ``base_
'' can be
omitted, in which case base
defaults to 10
. The digits are
interpreted in the given base. Each digit must be less than base
. For
example, 16_FF
and 255
are equivalent integer literals.
If no explicit base is present, the value of the literal must be at most
LAST(INTEGER)
. If an explicit base is present, the value of the
literal must be less than 2^Word.Size
, and its interpretation uses the
convention of the Word
interface. For example, on a 32-bit two's
complement machine, 16_FFFFFFFF
and -1
represent the same value.
A literal LONGINT
has the form integer L
, where integer
has the same form as a literal INTEGER
. If no explicit base is
present, the value of the literal must be at most LAST(LONGINT)
. If an
explicit base is present, the value of the literal must be less than
2^Long.Size
, and its interpretation uses the convention of the
Long
interface. For example, the LONGINT
having the value zero
would be written 0L
.
A literal REAL
has the form decimal E exponent
, where
decimal
is a non-empty sequence of decimal digits followed by a decimal
point followed by a non-empty sequence of decimal digits, and exponent
is a non-empty sequence of decimal digits optionally beginning with a +
or -
. The literal denotes decimal
times 10^exponent
. If
``E exponent
'' is omitted, exponent
defaults to 0
.
LONGREAL
and EXTENDED
literals are like REAL
literals,
but instead of E
they use D
and X
respectively.
Case is not significant in any letter in a numeric literal. Embedded spaces are not allowed in a numeric literal.
For example, 1.0
and 0.5
are valid, 1.
and .5
are
not; 6.624E-27
is a REAL
, and 3.1415926535d0
a
LONGREAL
.
m3-support@elego.de