Lang-C
Ligtweight parser of C language for Rust users. Almost full support for C11 revision of the language. Several GNU extensions are supported as an option (and enabled by default).
This crate's raison d'ĂȘtre is to be used in tools supporting C development. Thus it does not aim to provide a complete C environment (which would include things like standard header files and libraries), instead focusing on integaration with the existing compilers.
extern crate lang_c;
use ;
Bugs
Just open an issue, bug reports and patches are most welcome.
License
Dual-licenced under Apache 2.0 or MIT licenses (see LICENSE-APACHE
and LICENSE-MIT
for legal terms).
Development
A number of external tools are used during development:
- GNU make
- rustfmt-nightly
- rust-peg 0.5.4
Parser (src/parser.rs
) is built from a PEG grammar in grammar.rustpeg
. It is updated manually and then
committed, not generated on every build, thus no rust-peg
in the list of dependencies.
For debugging purposes, it is handy to have a version rust-peg built with tracing enabled.
A makefile is used to script the development process:
make
update parser, build the library and run the tests;make trace
rebuilds parser usingrust-peg-trace
, which is expected to be a version ofrust-peg
command withtrace
feature enabledmake check
can be used as pre-commit git hook to make sure parser is up to date