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 manuallyAdd to your Cargo.toml
file::
nom-derive = "0.2"
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 } )
)
}
}
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.