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

bin+lib php-parser-rs

Rust 编写的 PHP 手写递归下降解析器

8 个版本

0.1.3 2023年5月10日
0.1.2 2023年5月10日
0.1.0 2023年1月6日
0.0.0 2022年11月28日
0.0.0-b32022年12月20日

#659解析器实现


phanalist 中使用

MIT/Apache

530KB
14K SLoC

PHP-Parser

用 Rust 编写的手写容错递归下降解析器,用于 PHP。

justforfunnoreally.dev badge

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


用法

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

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

或使用 cargo add

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

示例

use std::io::Result;

use php_parser_rs::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