[package]
name = "bnf"
version = "0.6.0"
edition = "2024"
authors = ["@shnewto", "@CrockAgile"]
description = "A library for parsing Backus–Naur form context-free grammars"
readme = "README.md"
keywords = ["bnf", "earley", "parser"]
categories = ["parser-implementations", "parsing", "development-tools"]
exclude = [".github", "tests", "*.snap", "*.bnf"]
homepage = "https://github.com/shnewto/bnf"
repository = "https://github.com/shnewto/bnf"
documentation = "https://docs.rs/bnf"
license = "MIT"
[package.metadata.docs.rs]
all-features = true
[lints.clippy]
all = "deny"
clone_on_ref_ptr = "deny"
complexity = "deny"
dbg_macro = "deny"
doc_markdown = "deny"
exhaustive_structs = "deny"
indexing_slicing = "deny"
let_underscore_must_use = "deny"
map_err_ignore = "deny"
missing_const_for_fn = "deny"
must_use_candidate = "deny"
perf = "deny"
print_stderr = "deny"
print_stdout = "deny"
rc_buffer = "deny"
rc_mutex = "deny"
redundant_type_annotations = "deny"
implicit_clone = "deny"
style = "deny"
suspicious = "deny"
tests_outside_test_module = "deny"
todo = "deny"
try_err = "deny"
undocumented_unsafe_blocks = "deny"
use_debug = "deny"
[dependencies]
tracing = { version = "0.1.44", optional = true }
tracing-subscriber = { version = "0.3.22", optional = true, features = ["env-filter"] }
tracing-flame = { version = "0.2.0", optional = true }
hashbrown = "0.16.1"
[dependencies.rand]
version = "0.9.2"
[dependencies.nom]
version = "^8.0.0"
[dependencies.serde]
version = "1.0.228"
features = ["derive"]
optional = true
[dependencies.serde_json]
version = "1.0.149"
optional = true
[dev-dependencies]
divan = "0.1.21"
insta = { version = "1.46.1", default-features = false }
mutants = "0.0.4"
[dev-dependencies.quickcheck]
version = "1.0.3"
[features]
default = ["ABNF", "serde"]
ABNF = []
serde = ["dep:serde", "dep:serde_json"]
unstable = []
tracing = ["dep:tracing", "dep:tracing-subscriber", "dep:tracing-flame"]
[[bench]]
name = "divan"
harness = false
[[example]]
name = "create_grammar"
path = "examples/create_grammar.rs"
[[example]]
name = "parse_tree"
path = "examples/parse_tree.rs"
[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.3.4", features = ["wasm_js"] }