15个不稳定版本 (5 个重大变化)

0.22.6 2024年5月5日
0.22.2 2024年3月17日
0.20.2 2022年3月2日
0.20.1 2021年11月21日
0.2.0 2020年5月12日

#1535解析器实现

Download history 4729/week @ 2024-04-26 6835/week @ 2024-05-03 5593/week @ 2024-05-10 5157/week @ 2024-05-17 5957/week @ 2024-05-24 6089/week @ 2024-05-31 5342/week @ 2024-06-07 6153/week @ 2024-06-14 6106/week @ 2024-06-21 5403/week @ 2024-06-28 6158/week @ 2024-07-05 4801/week @ 2024-07-12 5173/week @ 2024-07-19 5560/week @ 2024-07-26 5137/week @ 2024-08-02 4997/week @ 2024-08-09

每月21,675 次下载
14 链接中使用 (2 个直接使用)

MIT 许可证

640KB
16K SLoC

C 11K SLoC // 0.0% comments Rust 4.5K SLoC // 0.0% comments

Tree-sitter Tags

crates.io badge

用法

将此crate以及您要解析的任何语言的特定crate添加到您的 Cargo.toml

[dependencies]
tree-sitter-tags = "0.19"
tree-sitter-javascript = "0.19"
tree-sitter-python = "0.19"

创建一个标签上下文。您需要为每个用于标签计算的线程创建一个

use tree_sitter_tags::TagsContext;

let context = TagsContext::new();

从某些语言仓库的 queries 目录加载一些标记查询

use tree_sitter_tags::TagsConfiguration;

let python_config = TagsConfiguration::new(
    tree_sitter_python::language(),
    tree_sitter_python::TAGGING_QUERY,
    "",
).unwrap();

let javascript_config = TagsConfiguration::new(
    tree_sitter_javascript::language(),
    tree_sitter_javascript::TAGGING_QUERY,
    tree_sitter_javascript::LOCALS_QUERY,
).unwrap();

为一些源代码计算代码导航标签

let tags = context.generate_tags(
    &javascript_config,
    b"class A { getB() { return c(); } }",
    None,
);

for tag in tags {
    println!("kind: {:?}", tag.kind);
    println!("range: {:?}", tag.range);
    println!("name_range: {:?}", tag.name_range);
    println!("docs: {:?}", tag.docs);
}

依赖项

~2.6–4.5MB
~78K SLoC