Red Green Tree
資料
貴重な日本語資料lemonadern.icon
Romeプロジェクトがなくなってサイトごと消えてる
実装
C#
rust-analyzer で使われている
利用箇所
C# Compiler
Swift ?
rust-analyzer
自前の実装を持っているっぽい?
関連の資料
Lint を AST でやろうとすると起こる問題点がたくさん記してある
Rowan の話が出てくる
Xにおける言及
@zakuro9715: 不完全なコードを表現できるとか、木の一部分を差し替えられるとかのメリットがあるので、ソースコードの変更があったときに変更部分だけパースして差し替えたりできる。 @zakuro9715: Red Green Trees は結構面白くて、外部に露出する木のノード(RedNode)が内部ノード(GreenNode)を持っていて、Red は親の Red を持ち、Green は子の Green とトークンとかを持つ。 Red はボトムアップに辿れて Green はトップダウンに走査できる。
最初はだからどうしたと思ったけど、たしかに便利
@zakuro9715: Red Green なのは使っていたマーカーの色で意味はないらしい。分かりづらいので、実装ではred green の名前ではなくなっていたりするが、 rust-analyzer のライブラリである rowan では何故か green だけが残っているので、経緯を知らないと名前の意味がわからない