Il s'agit de la grammaire de la constante hexadécimale à virgule flottante, telle que définie dans le document C99 draft écrit comme une expression régulière :
0[xX]([a-fA-F0-9]*[.][a-fA-F0-9]+|[a-fA-F0-9]+[.]?)[pP][+-]?[0-9]+[flFL]?
Qui se compose de 4 parties :
-
0[xX]
: Préfixe hexadécimal, l'un ou l'autre 2 :
0x
0X
-
([a-fA-F0-9]*[.][a-fA-F0-9]+|[a-fA-F0-9]+[.]?)
: Constante fractionnaire hexadécimale, par exemple :
34.2f
.de
b3.
ou une séquence de chiffres hexadécimaux (nombre entier en hexadécimal), par exemple :
2f4
10
La deuxième partie décrit essentiellement la mantisse.
-
[pP][+-]?[0-9]+
: Partie binaire de l'exposant (spécifiée en décimal), par exemple :
p-4
p20
Nous spécifions une constante hexadécimale à virgule flottante en spécifiant la mantisse en hexadécimal, et l'exposant b (pour la base 2) en décimal.
-
[flFL]?
: Suffixe flottant facultatif, pour indiquer le type ( float
, double
o long double
).