---
date: 2025-09-17 09:53
---
#programming-language 

[Introduction - Tree-sitter](https://tree-sitter.github.io/tree-sitter/)

モダンな[[パーサジェネレータ]]。

[[Rust]]で実装されているが、Cライブラリを経由して様々な言語のバインディングが用意されている。

ただ、言語の文法定義は[[JavaScript]]で行うなどちょっと複雑な作りをしている。

インクリメンタルな構文解析に対応していることが特徴。

---

### 実際に使おうとしてみての感想

カスタムの構文解析エラーメッセージの定義とかが難しい。これは長年問題になっているみたい

[Helpful parser error messages · Issue #255 · tree-sitter/tree-sitter · GitHub](https://github.com/tree-sitter/tree-sitter/issues/255)

---

Rustのバインディングの問題。

`kind_id`など多くのAPIがu16でのIDを返す

