# Make case expressions unambiguous

Given the following context free grammar:

expr → . . .
| case expr of match
match → mrule
| mrule "|" match
mrule → pat "=>" expr
pat → . . .


it's ambiguous because case expr of pat "=>" case expr of pat "=>" expr "|" pat "=>" expr has 2 derivation trees.

How would I make this grammar unambiguous? In general, I don't know how to make cyclic grammars (we can go from expr to mrule and then back to expr, essentially nested case statements) unambiguous. I've tried searching for it online but haven't found much information on it.