\begin{grammar}
<code-definition> ::=
- "code" <identifier> ":" <item-name> @[<constraints>@]
+ "code" <reason> ":" <item-name> @[<constraints>@]
"{" <c-fragment> "}"
+<reason> ::= <identifier>
+
<constraints> ::= "[" <list>$[\mbox{@<constraint>}]$ "]"
<constraint> ::= @<item-name>^+