php-rs-parser 0.26.0

Fast PHP parser producing a typed AST
Documentation
[package]
name = "php-rs-parser"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
license.workspace = true
authors.workspace = true
repository.workspace = true
homepage.workspace = true
description = "Fast PHP parser producing a typed AST"
keywords = ["php", "parser", "ast", "syntax"]
categories = ["parsing", "development-tools", "compilers"]
readme = "README.md"
exclude = ["benches/", "tests/", "examples/"]

[package.metadata.docs.rs]
features = ["serde"]

[dependencies]
php-ast = { workspace = true }
php-lexer = { workspace = true }
thiserror = { workspace = true }
bumpalo = { workspace = true }
memchr = { workspace = true }

[dev-dependencies]
# Path-only so `cargo publish` strips it: php-printer dev-depends on this crate.
php-printer = { path = "../php-printer" }
# Self dev-dependency so tests, benches and examples see the `serde` feature.
php-rs-parser = { path = ".", features = ["serde"] }
serde = { workspace = true }
phpdoc-parser = { workspace = true }
serde_json = { workspace = true }
criterion = { workspace = true }
walkdir = { workspace = true }
mimalloc = { workspace = true }
bumpalo = { workspace = true }
rayon = { workspace = true }

# pprof needs POSIX signals, so the profiling examples are unix-only.
[target.'cfg(unix)'.dev-dependencies]
pprof = { workspace = true }

[features]
default = []
# `Serialize` impls for the AST (forwards to `php-ast`).
serde = ["php-ast/serde"]
# Enable lightweight instrumentation for profiling array parsing and expression parsing
instrument = []

[[bench]]
name = "parse"
harness = false

[[example]]
name = "profile_array_parsing"
required-features = ["instrument"]

[[example]]
name = "profile_corpus"
required-features = ["instrument"]

[[example]]
name = "profile_statements"
required-features = ["instrument"]