Fixtype of decimal, octal, and hexadecimal constants [C:6.4.4.1] [C:A.1.5].
This is a tagged union type, introduced by fty::deftagsum.
This captures decimal-constant, octal-constant, and hexadecimal-constant in the grammar in [C]. The grammar does not have a nonterminal that directly corresponds to this fixtype: the three alternatives are given in the grammar rule for integer-constant, along with the optional integer suffixes. In these fixtypes, we factor this a little differently (see iconst).
A decimal constant is completely characterized by
its positive integer values.
Note that
An octal constant is completely characterized by
the number of (one or more) leading zeros
and by its non-negative integer value.
The non-negative integer value determines
the non-zero-starting list of digits that follow the leading zeros.
Note that the octal constant
A hexadecimal constant consists of a prefix and a list of digits (which should be non-empty). The fixtype hex-digit-char-list corresponds, in the grammar in [C], to hexadecimal-constant without hexadecimal-prefix. The non-decimal hexadecimal digits may be uppercase and lowercase, so in order to capture all the information from the abstract syntax we use lists of digits in this fixtype, which can be of course converted to integer values.