19次发布 (12次重大更新)

0.13.0 2022年10月21日
0.12.0 2021年7月16日
0.11.3 2021年4月14日
0.10.0 2021年2月22日
0.2.0 2019年7月1日

解析器实现 中排名第820

Download history • Rust 包仓库 6886/week @ 2024-04-21 • Rust 包仓库 5972/week @ 2024-04-28 • Rust 包仓库 7168/week @ 2024-05-05 • Rust 包仓库 8651/week @ 2024-05-12 • Rust 包仓库 7773/week @ 2024-05-19 • Rust 包仓库 7923/week @ 2024-05-26 • Rust 包仓库 8955/week @ 2024-06-02 • Rust 包仓库 7739/week @ 2024-06-09 • Rust 包仓库 7054/week @ 2024-06-16 • Rust 包仓库 8246/week @ 2024-06-23 • Rust 包仓库 6229/week @ 2024-06-30 • Rust 包仓库 7612/week @ 2024-07-07 • Rust 包仓库 9038/week @ 2024-07-14 • Rust 包仓库 7091/week @ 2024-07-21 • Rust 包仓库 8460/week @ 2024-07-28 • Rust 包仓库 8855/week @ 2024-08-04 • Rust 包仓库

每月下载33,898
84 包中使用(直接使用2个)

MIT/Apache

48KB
946

CI Scheduled docs

ABNF

基于nom 7的ABNF解析器

示例

以下代码

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),
}

输出

[
    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,
    },
]

您也可以使用提供的示例来解析并打印任何ABNF文件。

cargo run --example=example examples/assets/abnf.abnf

许可证

许可协议为以下之一:

任选其一。

贡献

除非您明确表示,否则根据Apache-2.0许可证定义的任何有意提交以包含在作品中的贡献,将按上述方式双重许可,不附加任何额外条款或条件。

依赖项

~1MB
~19K SLoC