gpt4 book ai didi

typescript - 如何使用语言服务器协议(protocol)将 TS 解析为符号?

转载 作者:行者123 更新时间:2023-12-03 23:11:10 24 4
gpt4 key购买 nike

我是这个主题的新手,所以很有可能我弄错了一些关键词。我想将 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) 有关返回的符号或 token 的任何内容。

不久前我在摩纳哥工作,我知道语言服务器的重点主要是标准化代码的标记化和链接/导航,所以我很确定这是适合它的工具。但是文档非常密集,并且似乎更关注代码交互而不是代码解析。

如何使用语言服务器协议(protocol)将 TS 解析为符号?

编辑:值得一提,如果这本身就是一个项目:我不是在寻找这个或任何东西的完整代码。只是对正在发生的事情的某种粗略概述,也许还有一些相关文档的链接/摘录。

编辑 2:我在这里发现了一个非常相似的问题( TypeScript: get syntax tree ),但它没有提及语言服务器,并且似乎来自之前的时间。

编辑 3:看来我正在寻找的正确术语是 AST。在网上找到了一个非常酷的 TypeScript 工具 ( https://ts-ast-viewer.com/)

最佳答案

事实证明,语言服务器不公开 AST(抽象语法树)。

我发现了这个问题,引用:

I can see how and AST can help here but currently there are no plans to expose an AST via the LSP. The whole idea of the LSP is to not do this since it makes standardizing things across languages and tools very hard



https://github.com/Microsoft/language-server-protocol/issues/258

幸运的是, typescript 确实提供了一些这样做的方法( https://github.com/microsoft/TypeScript/wiki/Using-the-Compiler-API#using-the-type-checker)。

一旦我想出了这种替代方式,我会更新。

关于typescript - 如何使用语言服务器协议(protocol)将 TS 解析为符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56961479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com