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

Signed integers are supported by using the `integer`

declaration:

%typedef: Id_t int

Given that declaration, Fields of type `Id_t`

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

prefix, and octal values use 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. That can be achieved by using a range type declaration:

%typedef: Percentage_t range 0 100

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

%typedef: Percentage_t range 100

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 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. 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