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。
Reporting Issues
如果在使用 SwiftSyntax 时遇到任何问题,我们欢迎您在 GitHub Issue 上提交 bug 报告。
Contributing
开始为 SwiftSyntax 做出贡献,请参阅 this guide 以获取更多信息。
Bazel
SwiftSyntax 提供了一个实验性的 Bazel 构建配置,由 Keith Smiley 维护。
要使用它,您可以从相关的 release tag 拉取源代码归档
到您的 MODULE.bazel 文件(首选且推荐)中,使用 bazel_dep。从 509.0.0 及更高版本的发布开始,已添加对 Bzlmod 的支持。所有可用版本均可在 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 配置相关的 issues 标记为 "Bazel" 标签。
License
请参阅 LICENSE 以获取更多信息。