SwiftSyntax
SwiftSyntax 是一组用于解析、检查、生成和转换 Swift 源代码的 Swift 库。
文档
您可以在 swiftpackageindex.com 上阅读 SwiftSyntax 的文档。
一种交互式探索源文件 SwiftSyntax 树的极好方法是 https://swift-ast-explorer.com,由 @kishikawakatsumi 开发。
将 SwiftSyntax 添加为依赖项
主线开发(主要)
SwiftSyntax的主线分支跟踪最新的开发进展。它不是一个官方发布版,API和行为的快速变化是其特点。要使用它,请将此仓库添加到您的项目的Package.swift
配置文件中
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MyTool",
dependencies: [
.package(url: "https://github.com/apple/swift-syntax.git", branch: "main"),
],
targets: [
.target(name: "MyTool", dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
]),
]
)
主要的SwiftSyntax还包括
SwiftParser
用于原生解析源代码SwiftOperators
用于折叠包含运算符的SwiftSyntax树SwiftSyntaxBuilder
用于以结果构建器风格的界面生成Swift代码SwiftSyntaxMacros
用于提供语法宏支持
发布
SwiftSyntax的版本与其对应的语言和工具发布版保持一致,并且是稳定的。要使用它们,请将此仓库添加到您的项目的Package.swift
配置文件中
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MyTool",
dependencies: [
.package(url: "https://github.com/apple/swift-syntax.git", exact: "<#Specify Release tag#>"),
],
targets: [
.target(name: "MyTool", dependencies: [
.product(name: "SwiftSyntax", package: "swift-syntax"),
]),
]
)
将<#指定发布标签#>
替换为要使用的SwiftSyntax版本(以下表格中提供映射详细信息)。
Xcode版本发布 | Swift发布标签 | SwiftSyntax发布标签 |
---|---|---|
Xcode 14.3 | swift-5.8-RELEASE | 508.0.0 |
Xcode 14.0 | swift-5.7-RELEASE | 0.50700.1 |
Xcode 13.3 | swift-5.6-RELEASE | 0.50600.1 |
Xcode 13.0 | swift-5.5-RELEASE | 0.50500.0 |
Xcode 12.5 | swift-5.4-RELEASE | 0.50400.0 |
Xcode 12.0 | swift-5.3-RELEASE | 0.50300.0 |
Xcode 11.4 | swift-5.2-RELEASE | 0.50200.0 |
文档
SwiftSyntax使用DocC包来构建其文档。要查看在Xcode中渲染的文档,请打开SwiftSyntax包,并选择
Product > Build Documentation
关联的文章是使用Markdown编写的,可以在浏览器、文本编辑器或IDE中查看。
贡献指南
欲了解关于如何为 SwiftSyntax 做贡献的更多信息,请参阅 此指南。
报告问题
如果在使用 SwiftSyntax 时遇到任何问题,我们欢迎您在 GitHub 问题上 报告错误。
Bazel
SwiftSyntax 提供了一个由 Keith Smiley 维护的实验性 Bazel 构建配置。要使用它,您可以从相关的发布标签下载源存档到您的 WORKSPACE
文件,并在 BUILD.bazel
文件中依赖您需要的库。每个库都有一个相关联的 Library_opt
目标(如 SwiftSyntax_opt
),强制 SwiftSyntax 总是启用优化来构建。这可能会以损失调试性及初始构建时间为代价提高本地运行时的性能。请将任何与 Bazel 配置相关的问题使用标签 "Bazel" 标记。
许可协议
有关更多信息,请参阅 许可协议。