The rec format supports the declaration of fields of the following scalar types: integer numbers, ranges and real numbers.

Signed integers are supported by using the `int`

declaration:

%typedef: Id_t int

Given the declaration above, fields of type `Id_t`

must
contain integers, and they may be negative. Hexadecimal values can be written
using the `0x`

prefix, and octal values using an extra
`0`

. Valid examples are:

%type: Id Id_t Id: 100 Id: -23 Id: -0xFF Id: 020

Sometimes it is desirable to reduce the range of integers allowed in a field. This can be achieved by using a range type declaration:

%typedef: Interrupt_t range 0 15

Note that it is possible to omit the minimum index in ranges. In that case it is implicitly zero:

%typedef: Interrupt_t range 15

It is possible to use the keywords `MIN`

and `MAX`

instead
of a numeral literal in one or both of the points conforming the
range. They mean the minimum and the maximum integer value supported
by the implementation respectively. See the following examples:

%typedef: Negative range MIN -1 %typedef: Positive range 0 MAX %typedef: AnyInt range MIN MAX %typedef: Impossible range MAX MIN

Hexadecimal and octal numbers can be used to specify the limits in a range. This helps to define scalar types whose natural base is not ten, like for example:

%typedef: Address_t range 0x0000 0xFFFF %typedef: Perms_t range 755

Real number fields can be declared with the `real`

type
specifier.
A wide range of real numbers can be represented this way, only limited
by the underlying floating point representation.
The decimal separator is always the dot (`.`

) character regardless
of the locale setting.
For example:

%typedef: Longitude_t real

Examples of fields of type real:

%rec: Rectangle %typedef: Longitude_t real %type: Width Longitude_t %type: Height Longitude_t Width: 25.01 Height: 10