A Comment-Preserving Cabal Parser
blog.haskell.org