有没有像 JavaScript 那样的标准 Swift AST?
Is there a standard Swift AST like there is for JavaScript?
在 JavaScript 中我们有 estree 这是从 Mozilla 的实现演变而来的 AST 定义。但是现在如果你在 JS AST 的 JS 中构建一个 AST 转换器,你可能会使用这种结构。 Swift AST 的 Swift 有这样的东西吗?
我看到我们有一个 grammar,但是 AST 呢?我想我可以用它做一个,但仍然。
如果没有标准,我们有任何 AST 示例吗?
Swift 项目提供 SwiftSyntax as a package for working with Swift source code, in Swift. Under the hood, it's powered by the compiler's own libSyntax,用 C++ 编写。
请注意,这目前不是 Swift 编译器正确用于实际编译 Swift 代码的表示 — libSyntax
专注于源代码本身的重写、格式化、转换等,但很大程度上没有语义信息,您可能会在编译器 AST 中找到将源代码转换为机器代码所必需的语义信息。如果您只是想在没有这些语义的情况下对 AST 进行操作,这对于您的用例可能就足够了。
repo README 应该有一些帮助您入门的信息,an example, and some real-world use cases 显示了库的具体用法。
在 JavaScript 中我们有 estree 这是从 Mozilla 的实现演变而来的 AST 定义。但是现在如果你在 JS AST 的 JS 中构建一个 AST 转换器,你可能会使用这种结构。 Swift AST 的 Swift 有这样的东西吗?
我看到我们有一个 grammar,但是 AST 呢?我想我可以用它做一个,但仍然。
如果没有标准,我们有任何 AST 示例吗?
Swift 项目提供 SwiftSyntax as a package for working with Swift source code, in Swift. Under the hood, it's powered by the compiler's own libSyntax,用 C++ 编写。
请注意,这目前不是 Swift 编译器正确用于实际编译 Swift 代码的表示 — libSyntax
专注于源代码本身的重写、格式化、转换等,但很大程度上没有语义信息,您可能会在编译器 AST 中找到将源代码转换为机器代码所必需的语义信息。如果您只是想在没有这些语义的情况下对 AST 进行操作,这对于您的用例可能就足够了。
repo README 应该有一些帮助您入门的信息,an example, and some real-world use cases 显示了库的具体用法。