#parser #incremental #parse-tree #sourcepawn

tree-sitter-sourcepawn

tree-sitter解析库的SourcePawn语法

14个版本

0.7.5 2024年5月18日
0.7.1 2024年2月20日
0.6.0 2023年7月23日
0.5.0 2022年8月11日
0.4.0 2022年7月15日

#194文本编辑器


用于 sourcepawn_lsp

MIT 许可证

3.5MB
119K SLoC

C 118K SLoC // 0.0% comments JavaScript 1K SLoC // 0.0% comments Rust 34 SLoC // 0.1% comments

tree-sitter-javascript

这个crate提供了一个用于[tree-sitter][]解析库的SourcePawn语法。要使用这个crate,将其添加到你的[dependencies]部分的Cargo.toml文件中。(注意,你可能还需要依赖于[tree-sitter][tree-sitter crate] crate,以便以任何有用的方式使用解析结果。)

[dependencies]
tree-sitter = "0.20"
tree-sitter-sourcepawn = "0.3.0"

通常,你会使用[language][language func]函数将此语法添加到tree-sitter [Parser][]中,然后使用解析器解析一些代码。

以下示例演示了一个简单的程序,该程序解析JavaScript函数并将结果打印到终端。

use tree_sitter::Parser;

fn main() {
    let code = "int foo";
    let mut parser = Parser::new();
    parser
        .set_language(tree_sitter_sourcepawn::language())
        .expect("Error loading SourcePawn grammar");
    let parsed = parser.parse(code, None);
    println!("{:#?}", parsed);
}

依赖关系

~2.8–4MB
~72K SLoC