pxp-parser

Crates.iopxp-parser
lib.rspxp-parser
version0.0.0-b4
sourcesrc
created_at2023-05-11 16:21:10.17611
updated_at2023-05-11 16:21:10.17611
descriptionA handwritten, recursive-descent parser for the PXP superset.
homepage
repositoryhttps://github.com/php-rust-tools/pxp-parser
max_upload_size
id862246
size4,380,185
Ryan Chandler (ryangjchandler)

documentation

README

PHP-Parser

A handwritten fault-tolerant, recursive-descent parser for PXP (the PHP superset) written in Rust.

Warning - this is still alpha software and the public API is still subject to change. Please use at your own risk.


Usage

Add pxp-parser in your Cargo.toml's dependencies section

[dependencies]
pxp-parser = { git = "https://github.com/php-rust-tools/pxp-parser" }

or use cargo add

cargo add pxp-parser --git https://github.com/php-rust-tools/pxp-parser

Extensions

To learn more about the extended syntax that the PXP parser supports, please visit the official website.

Example

use std::io::Result;

use pxp_parser::parser;

const CODE: &str = r#"<?php

final class User {
    public function __construct(
        public readonly string $name,
        public readonly string $email,
        public readonly string $password,
    ) {
    }
}
"#;

fn main() -> Result<()> {
    match parser::parse(CODE) {
        Ok(ast) => {
            println!("{:#?}", ast);
        }
        Err(err) => {
            println!("{}", err.report(CODE, None, true, false)?);

            println!("parsed so far: {:#?}", err.partial);
        }
    }

    Ok(())
}

License

Licensed under either of

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.

Credits

Commit count: 0

cargo fmt