bnf 0.6.0

A library for parsing Backus–Naur form context-free grammars
Documentation
[package]
name = "bnf"
# don't manually edit this version unless you're sure you want to circumvent the process documented in RELEASE.md
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"] } # needed for rand