Input . Input ::= [Data] ; D . Data ::= "{" [TokD] "}" ; T . TokD ::= "(" String "," [Pattern] ")" ; PC . Pattern ::= Ident [Pattern1] ; Id . Pattern1 ::= Ident ; coercions Pattern 1; separator Data "" ; separator TokD "" ; separator nonempty Pattern1 "" ; separator Pattern "|" ;