2.4.2 Based Literals
1
[
{literal (based)}
{binary literal}
{base 2 literal}
{binary (literal)}
{octal literal}
{base 8 literal}
{octal (literal)}
{hexadecimal literal}
{base 16 literal}
{hexadecimal (literal)}
A
based_literal is a
numeric_literal
expressed in a form that specifies the base explicitly.]
Syntax
2
based_literal ::=
base #
based_numeral [.
based_numeral] # [
exponent]
3
4
based_numeral ::=
extended_digit {[
underline]
extended_digit}
5
extended_digit ::= digit | A | B | C | D | E | F
Legality Rules
6
{base}
The
base (the numeric value of the decimal
numeral preceding the first #) shall be at
least two and at most sixteen. The
extended_digits
A through F represent the digits ten through fifteen, respectively. The
value of each
extended_digit of a
based_literal
shall be less than the base.
Static Semantics
7
The conventional meaning of based notation is assumed.
An exponent indicates the power of the base
by which the value of the based_literal without
the exponent is to be multiplied to obtain
the value of the based_literal with the exponent.
The base and the exponent,
if any, are in decimal notation.
8
The extended_digits A
through F can be written either in lower case or in upper case, with
the same meaning.
Examples
9
Examples of based
literals:
10
2#1111_1111# 16#FF# 016#0ff# -- integer literals of value 255
16#E#E1 2#1110_0000# -- integer literals of value 224
16#F.FF#E+2 2#1.1111_1111_1110#E11 -- real literals of value 4095.0
Wording Changes from Ada 83
10.a
The rule about which letters are allowed is
now encoded in BNF, as suggested by Mike Woodger. This is clearly more
readable.