nom-derive is a custom derive attribute, to derive [nom] parsers automatically from the structure definition.
This is only test code for now. Feedback welcome !
#[derive(Nom)]
This crate exposes a single custom-derive macro Nom
which
implements parse
for the struct it is applied to.
The goal of this project is that:
derive(Nom)
should be enough for you to derive [nom] parsers for simple
structures easily, without having to write it manuallyCount
attributeAdd to your Cargo.toml
file::
nom-derive = "0.3"
nom = "4.2"
Add #[derive(Nom)]
to the structure(s) you want.
See the tests directory for examples.
This implementation:
```rust
extern crate nom_derive;
extern crate nom;
use nom::*;
struct SimpleStruct { pub a: u32, b: u64, } ```
Allows you to generate the [nom] parser for SimpleStruct
automatically. The function is called SimpleStruct::parse
.
The generated code is equivalent to::
rust
impl SimpleStruct {
fn parse(i: &[u8]) -> IResult<&[u8],SimpleStruct> {
do_parse!(
i,
a: be_u32 >>
b: be_u64 >>
( SimpleStruct{ a,b } )
)
}
}
See the API documentation for more examples.
Licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.