expr ::= x, y, z
| α, β, γ (or \alpha, \beta, ...)
| *, □ , △ (or [], /\)
| ∀(x: expr). expr (or Π,\Pi,\P,\forall)
| expr → expr (or ->)
| λ(x: expr). expr (or \,\l,\lambda)
| expr expr
| let x(: expr)? = expr in expr