Declarations are either global or local (to a process) and can contain declarations of clocks, bounded integers, constants, channels (although local channels are useless), and types. The syntax is described by the grammar for Declarations:
Declarations ::= (VariableDecls | TypeDecls | Function)*
VariableDecls ::= Type VariableDecl (',' VariableDecl)* ';'
VariableDecl ::= ID ArrayDecl* [ '=' Initialiser ]
Initialiser ::= Expression
| '{' Initialiser (',' Initialiser)* '}'
TypeDecls, Type, and ArrayDecl are further described in the section on types, Expression in the section on expressions, and Function in the section on functions.
struct { int a; bool b; } s1 = { 2, true };
an instantiation of the structure from above where the members
a and b are set to 2 and true.