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 做贡献,请参阅 本指南 以获取更多信息。
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 以获取更多信息。