#php #parser #php-parser #php-ast #php-parser-rs

bin+lib pxp-parser

为PXP超集编写的手写递归下降解析器

1个不稳定版本

0.0.0-b42023年5月11日

#24 in #php

MIT/Apache

540KB
14K SLoC

PHP-Parser

使用Rust编写的针对PXP(PHP超集)的手写容错递归下降解析器。

警告 - 这仍然是alpha软件,公共API仍然可能更改。请自行承担风险。


用法

在您的Cargo.tomldependencies部分添加pxp-parser

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

或使用cargo add

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

扩展

要了解更多关于PXP解析器支持的扩展语法,请访问官方网站

示例

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

许可证

根据您的选择,许可协议为

贡献

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

鸣谢

依赖

~1.9–2.7MB
~54K SLoC