Language.C - A C99 library for haskell
The Language.C project aims to be a stable and compliant C99 language processing library for haskell.
As for now, it features a complete, reasonably well tested parser and pretty printer for all of C99 and a large set of GNU extensions (C language support).
Eventually, we also want to provide a complete analysis framework for C.
Bug Tracker / Wiki / Mailing List
This trac site hosts both the Wiki and the Bug Tracker for language.c. In order to edit wiki sites and create or modify tickets, you need to login. Either -register- (disabled due to spam), or use 'guest' as a user name and 'g0st+2010' as password.
There is also a mailing list for language-c, thanks to the haskell community server: http://projects.haskell.org/cgi-bin/mailman/listinfo/language-c (language-c at projects.haskell.org).
If you have questions, suggestions or comments, please CC the mailing list !
Good news, everybody
- 2016/03/02: Release 0.5.0 (__int128 support for c2hs)
- 2011/08/17: Released 0.4.1
- 2009/01/26: Released 0.3.1.1 (Bugfix release)
- 2008/08/26: Released 0.3.1
- 2008/08/12: Released 0.3
Download
- available via hackage / cabal-install
- alternatively: darcs get http://code.haskell.org/language-c
Documentation
Press
- In this blog post keigoi shows how to move declarations to the top of statement blocks using Language.C and Data.Generics (japanese). The follow up shows how to convert C99 flexible array members to arrays of size 0.
- Aaron Tomb at Galois wrote about his experiments parsing the linux kernel using Language.C, which seemed to work well.
Feedback
- Please submit bug reports and feature request using the bug tracker
- You may also contact the me at benedikt <dot> huber <at> gmail <dot> com
License
Language.C is released under the BSD-3 license.
Acknowledgments
Google's Summer Of Code funded Benedikt Huber to work on this project (updated detailed proposal?). Iavor Diatchki and Don Steward have been the great supervisors and Duncan Coutts provided a lot of valuable suggestions.