我是这个主题的新手,所以很有可能我弄错了一些关键词。我想将打字稿文件解析为其组件符号。举一个我想象的非常粗略的例子,见下文:
// 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)有关返回的符号或令牌的任何内容。
不久前我在摩纳哥工作,我知道语言服务器的重点主要是标准化代码的标记化和链接/导航,所以我很确定这是适合它的工具。但是文档非常密集,并且似乎更关注代码交互而不是代码解析。
如何使用语言服务器协议将 TS 解析为符号?
编辑:值得一提,如果这本身就是一个项目:我不是在寻找这个或任何东西的完整代码。只是对正在发生的事情的某种粗略概述,也许还有一些相关文档的链接/摘录。
编辑 2:我在这里发现了一个非常相似的问题(TypeScript: get syntax tree),但它没有提到语言服务器,而且似乎来自它们之前的时间。
编辑 3:看来我正在寻找的正确术语是 AST。在网上找到了一个非常酷的 TypeScript 工具(https://ts-ast-viewer.com/)