Для простого языка, типа:
AExp:
a ::= n | x | a0 + a1 | a0 - a1 | a0 * a1
BExp:
b ::= true | false | a0 = a1 | a0  a1 | b0 | b0  b1 | b0  b1
Com:
c ::= skip | x := a | c0 ; c1 | if b then c0 else c1 fi | while b do c0 od
Хаскель совсем не знаю, пробовал гуглить на тему - ничего не нашёл. Не там гуглил?
Форум —
Development

