Python Tree Sitter
Tree Sitter چارچوبی برای ساخت گرامر زبانهای برنامهنویسی است. این ابزار درختهای نحو را از فایلهای سورس تولید کرده و به کار میبرد که برای تحلیل کد، ابزارسازی و برجستهسازی نحو کاربرد دارند.
اتصالات Python برای گرامرهای Tree Sitter از طریق ماژول py-tree-sitter ارائه میشوند. بسته Nix به نام python3Packages.tree-sitter-grammars گرامرهای پیشساخته را برای زبانهای گوناگون فراهم میکند.
برای نمونه، جهت آزمایش با گرامر Rust، میتوانید یک محیط شل (Shell) با پیکربندی زیر ایجاد کنید:
{
pkgs ? import <nixpkgs> { },
}:
pkgs.mkShell {
name = "py-tree-sitter-dev-shell";
buildInputs = with pkgs; [
(python3.withPackages (
ps: with ps; [
tree-sitter
tree-sitter-grammars.tree-sitter-rust
]
))
];
} پس از ورود به شل، کد Python زیر نحوه تجزیه یک قطعه کد Rust را نشان میدهد:
# Import the Tree Sitter library and Rust grammar
import tree_sitter
import tree_sitter_rust
# Load the Rust grammar and initialize the parser
rust = tree_sitter.Language(tree_sitter_rust.language())
parser = tree_sitter.Parser(rust)
# Parse a Rust snippet
tree = parser.parse(
bytes(
"""
fn main() {
println!("Hello, world!");
}
""",
"utf8"
)
)
# Display the resulting syntax tree
print(tree.root_node) تابع tree_sitter_rust.language() به گرامر Rust بارگذاریشده در شل Nix اشاره میکند. درخت حاصل به شما این امکان را میدهد که ساختار کد را به صورت برنامهنویسیشده بررسی کنید.