process ::=decl+
decl ::=event_decl∣protocol_decl∣variable_decl∣property_decl∣rule_decl
event_decl ::=event(event_name(,event_name)∗;)+
protocol_decl ::=protocol(protocol;;)+
protocol ::=any∣event_name∣protocol;protocol
 ⁢∣protocol⁢+⁢protocol∣⁢protocol⁢*⁢∣protocol⁢?∣⁢(⁢protocol⁢)
variable_decl ::=variable(var_name(,var_name)∗(:type)?;)+
type ::=prop∣nat(nat_num)
property_decl ::=property(ldl_formula;)+
rule_decl ::=rulerule+
rule ::=except?onevent_name(,event_name)∗({code})?
  ⁢(when⁢context⁢({⁢code⁢})?)?
  ⁢action+
context ::=proposition∣<ldl_path>context
action ::=ensureldl_formula({code})?
 ∣raiseevent_name(+event_name)∗({code})?
 ∣do{code}
 ∣preserveproposition