Open6
CWTOOLのメモリ使用量がえぐいのでCK3用のLSPを作る
実用に足るものを作るために
pherrymason / c3-lspを調査した.
github.com/tliron/glspを使用しているからだ.
ASTの部分でgithub.com/smacker/go-tree-sitterを用いていることがわかった.
取り合えずjson-lspを作る
上は比較的規模が小さそうなglsp, go-tree-sitterを使ったLSPgo-tree-sitterを使うにはtree-sitterCLIで言語サポートを作成する必要があるらしい.
go言語だけでは完結できないくさい.
つまり
独自言語のLSPをgoで作りたいとなると,glsp + go-tree-sitterが選択肢としてあって,言語解析の根本的な部分はtree-sitterに頼ることになって(おそらくスクラッチでも良いがパフォーマンス的に),そのためにc言語でヘッダーだけ書くことになるってことかな.
go-tree-sitterでの言語サポート追加について
Tree-sitterでの言語サポート追加に関して
m1でtree-sitterCLIのインストールに失敗した.
```error: failed to run custom build command for `proc-macro2 v1.0.87````
stripがbin/homebrewで複数発見されたのが問題.
homebrew経由でbinutilsがこれをインストールしてるっぽいのでbinutilsアンストして解決.
消していいものか知らんがまぁ他でエラー出たらインストールしなおせば良いだろう.
go-tree-sitterに独自言語のサポートを追加する方法
goはほとんど使いません.jsを主に使います.
- tree-sitterCLIをインストールします.
- tree-sitter initして準備します.
- grammer.jsを描きます.
- tree-sitter generateします.
- parser.h,parser.cをgoのパッケージの方に移します.binding.go作ります.
- 以上(要検証)