私はこのテーマに慣れていないので、重要な用語をいくつか間違っている可能性があります。typescript ファイルをそのコンポーネント シンボルに解析したいと思います。私が想像するものの非常に大雑把な例を挙げると、以下を参照してください。
// some ts file
export function yell(output: string) {
alert(output + "!!");
}
次のようなものを作成します。
{
symbols: [
{ type: "comment", text: "// some ts file" },
"\n",
{ type: "module", text: "export" },
" ",
{ type: "function", symbols: [
{ type: "name", text: "yell" },
... it goes on
]}
]
}
このシンボル化/トークン化は言語サーバーの初期化フェーズの一部であり、この問題から収集しようとしていると確信しています ( https://github.com/Microsoft/language-server-protocol/issues/33 )。
しかし、初期化に関するドキュメント ( https://microsoft.github.io/language-server-protocol/specification#initialize ) を読みましたが、返されるシンボルまたはトークンについて何も (ctrl-f) 見つけることができませんでした。
少し前に私は Monaco と仕事をしていましたが、言語サーバーの主な目的はコードのトークン化とリンク/ナビゲートを標準化することであることを知っているので、これが適切なツールであると確信しています。しかし、ドキュメントは非常に密集しており、コードの解析よりもコードの相互作用に重点を置いているようです。
Language Server Protocol を使用して TS をシンボルに解析するにはどうすればよいですか?
編集:これがプロジェクト自体である場合に備えて、言及することをお勧めします:これまたは何かの完全なコードを探しているわけではありません。何が起こっているかについての大雑把な概要と、関連するドキュメントへのリンク/抜粋です。
編集 2: ここで非常によく似た質問 ( TypeScript: get syntax tree ) を見つけましたが、それは言語サーバーについて言及しておらず、それより前の時代から来たようです。
編集 3: 私が探していた適切な用語は AST のようです。TypeScript ( https://ts-ast-viewer.com/ )用の本当にクールなツールをオンラインで見つけました。