tree-sitter ist Library und Generator für inkrementelle Parser. Entwickelt wurde tree-sitter von GitHub-Angestellten für den Texteditor Atom.
tree-sitter wird meistens nur indirekt genutzt: durch Benutzung von Software, die tree-sitter verwendet. Inkrementelle Parser sind besonders für Texteditoren nützlich, denn diese erlauben:
Software, die tree-sitter verwendet: ast-grep, diffsitter, Difftastic, GritQL, Helix, Ki Editor, Neovim, srgn, Zed
Parser werden in JavaScript-Code definiert und von tree-sitter nach C-Code transpiliert und anschließend als Shared Library kompiliert/gelinkt. tree-sitter selbst ist in Rust geschrieben.
Für viele Datenformate und Programmiersprachen gibt es fertige Parser:
tree-sitter-*.Mit Bindings lassen sich tree-sitter-Parser im Code der jeweiligen Programmiersprache nutzen. Für zahlreiche Programmierprachen gibt es sowohl offizielle, als auch inoffizielle Bindings.
Die offiziellen Bindings finden sich als Repositories mit dem Namensschema
*-tree-sitter innerhalb der tree-sitter GitHub-Organisation.
py-tree-sitter sind die tree-sitter-Bindings für Python.
Installierbar sind sie mit pip install tree-sitter.
Parser instantiiert einen Parser,
mit der jeweils übergebenen Language.
Viele Sprachen sind für Python fertig paketiert.Parser.parse()
als Bytes übergeben werden. Diese liefert damit einen
Tree
von Nodes.Query erlaubt Abfragen auf den
Node-Tree. Über die Nodes kann auch mit dem
TreeCursor iteriert werden.