4

私はこのテーマに慣れていないので、重要な用語をいくつか間違っている可能性があります。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/ )用の本当にクールなツールをオンラインで見つけました。

4

1 に答える 1