Language p == d --- program d == f(vr+ vc*) = b --- definition b == case t of {pat -> b}+ --- body | e e == v --- expression | a | c[e*] | f(e+) t == vr --- term | ope(t+) | a pat == c[pat*] --- pattern | v | a