grammar optionalruletest; a ::= b [c] d b ::= "foo" c ::= "midfoo" d ::= "bar"