19 releases (12 breaking)
0.13.0 | Oct 21, 2022 |
---|---|
0.12.0 | Jul 16, 2021 |
0.11.3 | Apr 14, 2021 |
0.10.0 | Feb 22, 2021 |
0.2.0 | Jul 1, 2019 |
#719 in Parser implementations
42,185 downloads per month
Used in 94 crates
(2 directly)
48KB
946 lines
ABNF
A parser for ABNF based on nom 7.
Example
The following code
use abnf::rulelist;
// Note: mind the trailing newline!
match rulelist("a = b / c\nc = *(d e)\n") {
Ok(rules) => println!("{:#?}", rules),
Err(error) => eprintln!("{}", error),
}
outputs
[
Rule {
name: "a",
node: Alternatives(
[
Rulename(
"b",
),
Rulename(
"c",
),
],
),
kind: Basic,
},
Rule {
name: "c",
node: Repetition {
repeat: Variable {
min: None,
max: None,
},
node: Group(
Concatenation(
[
Rulename(
"d",
),
Rulename(
"e",
),
],
),
),
},
kind: Basic,
},
]
You can also use the provided example to parse and Debug
-print any ABNF file.
cargo run --example=example examples/assets/abnf.abnf
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
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.
Dependencies
~1MB
~19K SLoC