$use Box StdIO; Main = ' =N @ :: e1,N () e1 $iter {N ex : RN e2 = (e3 QSnQ) e2;N ex : R@ e2 = (e3 QSQQ e1 QSQQ) e2;N ex : RQ e2 = (e3 QSQQ) e2;N ex : RR ss e2 = (e3 QSQQ ss QSQQ) e2;N ex : RS e2 = (e3 QSSQ) e2;N ex : ss e2 = (e3 ss) e2;N } :: (e3) ex,N ex : /*empty*/ =N e3;N' :: e1, () e1 $iter { ex : 'N' e2 = (e3 '\n') e2; ex : '@' e2 = (e3 '\'' e1 '\'') e2; ex : 'Q' e2 = (e3 '\'') e2; ex : 'R' ss e2 = (e3 '\'' ss '\'') e2; ex : 'S' e2 = (e3 '\\') e2; ex : ss e2 = (e3 ss) e2; } :: (e3) ex, ex : /*empty*/ = ;