twoIota ::= Decl {";" Decl} ".". Decl ::= Pragma | Alphabet | Event. Pragma ::= "pragma" <<>>. Alphabet ::= "alphabet" AlphabetName {"," SymbolName}. Event ::= "event" EventDeclName {"," Property}. Property ::= "causes" EventApplName ["after" TimeSpec] {WhenTerm}. TimeSpec ::= RationalNumber TimeUnit. TimeUnit ::= "ms" | "s" | "m" | "h" | "d". WhenTerm ::= "when" EventName ">" EventName. EventDeclName ::= EventDeclComp {EventDeclComp}. EventDeclComp ::= SymbolName | "(" ParamName "=" MatchExpr ")". MatchExpr ::= AlphabetName ["+"]. EventApplName ::= EventApplComp {EventApplComp}. EventApplComp ::= SymbolName | "(" AlphabetExpr ")". AlphabetExpr ::= AlphabetTerm {"|" AlphabetTerm}. AlphabetTerm ::= "succ" ParamName | "pred" ParamName | "next" ParamName | "prev" ParamName | "first" AlphabetName | "last" AlphabetName | SymbolName .