Five predefined types are available to the user : boolean, integer, float, pid and clock. In addition, the user could define its own data types using classical type definition mechanisms such as enumeration, range (domains), record (structures) and array. It could also define even complex types using the abstract type definition mechanism - only the signature of the abstract type is defined, and in order to use it, an external implementation must be provided.
xxxxxxxxxxxxxxxxxxtype-decl ::=
type type-id = type ;
type ::=
enum const-id { , const-id }endenum
![]()
range const .. const![]()
array [ const .. const ] of type-id![]()
record { field-decl }endrecord
![]()
string [ const ] of type-id![]()
abstract { function-decl }endabstract
![]()
type-id
field-decl ::=
field-id type-id ;
function-decl ::=
type-id function-id (type-id { , type-id }
![]()
) ;