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 Node
s.Query
erlaubt Abfragen auf den
Node-Tree. Über die Node
s kann auch mit dem
TreeCursor
iteriert werden.