20 releases (13 breaking)
Uses old Rust 2015
| 0.15.1 | Sep 4, 2023 |
|---|---|
| 0.15.0 | Jan 18, 2023 |
| 0.14.0 | Oct 4, 2022 |
| 0.13.0 | Jun 21, 2022 |
| 0.1.0 | Oct 22, 2017 |
#934 in Parser implementations
1,992 downloads per month
Used in 2 crates
1MB
21K
SLoC
Lang-C
Ligtweight parser of C language for Rust users. Almost full support for C11 revision of the language. Several GCC and Clang extensions are also supported as an option.
extern crate lang_c;
use lang_c::driver::{Config, parse};
fn main() {
let config = Config::default();
println!("{:?}", parse(&config, "example.c"));
}
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
- 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:
makeupdate parser, build the library and run the tests;make tracerebuilds parser usingrust-peg-trace, which is expected to be a version ofrust-pegcommand withtracefeature enabledmake checkcan be used as pre-commit git hook to make sure parser is up to date