On parsing Haskell and CPP