Swift 语法

swift-syntax 包是一组库,它们作用于 Swift 源代码的源码精确树形表示,称为 SwiftSyntax 树。SwiftSyntax 树构成了 Swift 宏系统的骨干——宏展开节点表示为 SwiftSyntax 节点,并且宏会生成一个 SwiftSyntax 树,以便插入到源文件中。

文档

你可以在 swiftpackageindex.com 上阅读 SwiftSyntax 的文档。

交互式探索源文件的 SwiftSyntax 树的一个好方法是 https://swift-ast-explorer.com,由 @kishikawakatsumi 开发。

一组 swift-syntax 的示例用法可以在 Examples 中找到。

发布

SwiftSyntax 的发布与相应的语言和工具发布对齐,例如 swift-syntax 的主版本 509 与 Swift 5.9 对齐。

要在 SwiftPM 包中依赖 swift-syntax,请将以下内容添加到你的 Package.swift

dependencies: [
  .package(url: "https://github.com/swiftlang/swift-syntax.git", from: "<#latest swift-syntax tag#>"),
],

要将 swift-syntax 添加为你的 Xcode 项目的依赖项,请转到你的 Xcode 项目的Package Dependencies 选项卡,点击加号按钮并搜索 https://github.com/swiftlang/swift-syntax.git

报告问题

如果你在使用 SwiftSyntax 时遇到任何问题,我们感谢在 GitHub Issue 上提交错误报告。

贡献

要开始为 SwiftSyntax 做贡献,请参阅 本指南 以获取更多信息。

Bazel

SwiftSyntax 提供了一个实验性的 Bazel 构建配置,由 Keith Smiley 维护。要使用它,你可以使用 bazel_dep 从相关的发布标签中拉取源码归档到你的 MODULE.bazel 文件中(首选和推荐)。Bzlmod 支持从 509.0.0 及以上版本开始添加。所有可用版本都可以在 Bazel Central Registry 中找到。

bazel_dep(name = "swift-syntax", version = "600.0.1")

你也可以使用 WORKSPACE 拉取源码归档,但请注意,首选使用 MODULE.bazel。要使用 WORKSPACE 和 swift-syntax,你可以使用 http_archive,如下所示

http_archive(
    name = "SwiftSyntax",
    sha256 = "f070fd44db9b33f430fd5b5d2700f1e2001c0028711859600e80cc975074fab0",
    strip_prefix = "swift-syntax-509.1.0",
    url = "https://github.com/apple/swift-syntax/archive/refs/tags/509.1.0.tar.gz",
)

并从 BUILD.bazel 文件中依赖你需要的库。每个库还有一个关联的 Library_opt 目标(例如 SwiftSyntax_opt),它强制 SwiftSyntax 始终以启用优化的方式构建。这可能有助于提高本地运行时性能,但会以牺牲可调试性和初始构建时间为代价。请使用标签 "Bazel" 标记任何与 Bazel 配置相关的 问题

许可

请参阅 LICENSE 以获取更多信息。