Expressions are built on top of constants and variables using a rich set of operators, including standard boolean operators, arithmetic operators, and comparison operators. Also, standard `.' and `[]' operators are used to access respectively fields in structured variables, or elements in arrays. In addition, we define a cast-operator allowing to convert, for instance, pid or enum values to integers (and back) and the active operator to test the activity of clocks. Finally, conditional expressions are allowed too.
xxxxxxxxxxxxxxxxxxexpression ::=
const
variable-id fpar-id
expression . field-id expression [ expression ]
function-id ( expression { , expression } )
un-op expression
expression bin-op expression
cast-op expression
expression expression expression
( expression )
un-op ::=
not
active
bin-op ::=
or and
cast-op ::=
{ type-id process-id signalroute-id }