This package provides utilities for manipulating C programs.
The easiest way to get started using the C metaprogramming utilities is with the main module:
This module provides everything in the entire package. Subsequent sections of this manual describe the functionality of the individual libraries included, which can also be required individually.
[inttm_min][inttm_hour][inttm_mday][inttm_mon][inttm_year][inttm_wday][inttm_yday][inttm_isdst]))))20
Binary layout information is especially useful for interacting with the foreign library—see The Racket Foreign Interface. For example, the procedures ptr-ref and ptr-set! can be used to read and write from arbitrary addresses, which can be computed using layout information.
This package includes:
A library of abstract syntax for the C99 language–see The C Language
A library for parsing C99 programs–see Parsing and Reading C
A (preliminary) library providing S-expression syntax for C–see Parenthetical C
A library for compiling and running C programs with an external compiler–see Evaluation
A library for compiling C header information–see Header Compilation
The parser does not recognize the C preprocessor. I may attempt to implement the preprocessor in the future, but there’s no guarantee at this point.
The grammar does not support any extensions for GCC, MSVC, or any other specific C implementations. I intend to add support for these extensions on a by-need basis. Specific requests (as well as patches) are welcome.
External compilation is currently limited to GCC. I intend to add support for additional compilers on a by-need basis; patches are welcome.
Before sending feedback or bug reports, please consult the current set of registered issues. If you cannot find your issue there, feel free to file a new bug report in the online issue database.
Any other feedback may be emailed to me, Dave Herman, at dherman@ccs.neu.edu.
Version 0.1 (2009εΉ΄02ζ01ζ₯) - Initial release. Reasonably usable for header extraction.
Version 0.2 (2009εΉ΄03ζ09ζ₯) - Full C99 parser implemented.
Version 0.3 (2009εΉ΄03ζ31ζ₯) - Some cleanup of the AST API.
Version 0.4 (2009εΉ΄09ζ16ζ₯) - Fixed parser bug 202: the grammar should be complete now.
Version 0.5 (2012εΉ΄02ζ26ζ₯) - Updated for Racket.