#node #typed #tree-sitter #wrapper #generate #query #type-sitter

app type-sitter-cli

type-sitter的命令行界面(从node-types.json和查询生成树-sitter语法的类型化包装器)

7个不稳定版本 (3个重大变更)

0.4.0 2024年4月1日
0.3.1 2024年4月1日
0.3.0 2023年7月18日
0.2.1 2023年5月16日
0.1.2 2023年5月8日

#38编程语言

Download history 17/week @ 2024-04-14 60/week @ 2024-07-28

每月60次下载

MIT/Apache

2MB
39K SLoC

type-sitter-cli:用于生成带有type-sitter包装器的源文件的命令行工具

Crates.io

有关更多信息,请参阅type-sitter。这是一个生成树-sitter节点的类型安全包装器的命令行工具。

如果项目依赖于此(并且与type-sitter-proc一样),则它必须也依赖于type-sitter-libtree-sitter

用法

请注意,这将生成

# If not already installed
cargo install type-sitter-cli
# In your cargo project root directory
type-sitter-cli path/to/tree-sitter-foobar-lang
# The default output directory is `src/type_sitter`. You'll need to create the root module of this directory yourself
echo "pub mod foobar_lang;\n" > src/type_sitter.rs
# To add type-sitter-lib as a dependency (also in cargo root)
cargo add type-sitter-lib

高级用法

# Add type-sitter-lib with the yak-sitter feature (see above section)
cargo add type-sitter-lib --features yak-sitter
# Specify a custom output directory and use yak-sitter
type-sitter-cli vendor/tree-sitter-foobar-lang -o generated_src --use-yak-sitter
echo "pub mod foobar_lang;\n" > generated_src.rs
# Specify a custom tree-sitter facade
type-sitter-cli vendor/tree-sitter-foobar-lang -o generated_src --use-yak-sitter --facade "crate::my_tree_sitter"
# You can generate bindings for multiple grammars in the same directory
type-sitter-cli vendor/tree-sitter-typescript -o generated_src --use-yak-sitter
echo "pub mod typescript;\n" >> generated_src.rs
# Generate only node types or queries
type-sitter-cli vendor/tree-sitter-rust/src/node-types.json -o generated_src --use-yak-sitter
echo "pub mod rust;\n" >> generated_src.rs  # generated_src/rust.rs contains only node types
type-sitter-cli vendor/tree-sitter-json/queries -o generated_src/json --use-yak-sitter
echo "pub mod json;\n" >> generated_src.rs  # generated_src/json.rs contains only queries
# To see help for the CLI program
type-sitter-cli --help

问题

  • 问题: 我无法导入生成的源。

  • 答案: type-sitter-cli不会自动生成生成源的根模块,您必须手动创建。例如,如果根模块是默认的(src/type_sitter),则创建src/type_sitter.rssrc/type_sitter/mod.rs,并将其添加到其中。

  • 问题: 我在type_sitter-lib中遇到缺少符号的构建错误。

  • 答案: 确保您的Cargo.toml中包含type-sitter-lib依赖项。

  • 问题: 我在tree-sitter中遇到符号的构建错误。

  • 答案: 确保您正在使用树-sitter 0.22

依赖项

~8–17MB
~192K SLoC