programming-language

Introduction - Tree-sitter

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

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

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

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


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

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

Helpful parser error messages · Issue #255 · tree-sitter/tree-sitter · GitHub


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

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