-
Notifications
You must be signed in to change notification settings - Fork 704
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rewrite the cabal file parser using parsec #2865
Comments
This ticket should be either closed or updated to reflect the current state of affairs. |
... and then upgrade to Megaparsec? :) (Sorry, couldn't resist.) |
@BardurArantsson that's a fair point :-) the main reason to stick with parsec right now is IMO that its dependency footprint is lighter, and given it's going to become a GHC bundled library, it's a good thing that |
The existing parser has no formal grammar, has terrible error messages and is sometimes very slow and memory hungry. In large part this is because
ReadP
is a terrible parser. Now that the ghc library no longer depends on theCabal
library,Cabal
is now allowed to depend onparsec
.The Cabal parser is two-stage, outline then individual fields. This approach will remain. There is a prototype new parser (with a grammar!) using parsec for the outline phase which has had some significant testing (the new grammar only rejects a very small number of old quirky
.cabal
files). This new parser needs to be integrated and tested further. Additionally the infrastructure for parsing the individual fields needs to be rewritten to use parsec.The text was updated successfully, but these errors were encountered: