一个增量解析器生成工具与解析库,可为源代码构建具体语法树,并在编辑时高效更新。
swiftlang/swift-syntax
用于解析、检查、生成和转换 Swift 源代码的 Swift 库集合,基于源码精确的语法树。
- Star
- 3,712
- Fork
- 562
- 未关闭 Issue
- 180
- 最近提交
- 6小时前
这是什么?
swift-syntax 是一组 Swift 库,用于处理 Swift 源代码的语法树表示。这种源码精确的树结构称为 SwiftSyntax tree,适合需要读取、检查或改写 Swift 代码的工具直接基于它开发,无需自行处理原始文本。
SwiftSyntax tree 是 Swift 宏系统的基础:宏展开节点以 SwiftSyntax 节点表示,宏生成的语法树会被插入到源文件中。该包可通过 Swift Package Manager 和 Xcode 引入,同时提供实验性的 Bazel 构建配置。
版本号与 Swift 语言和工具链版本对齐,例如主版本 509 对应 Swift 5.9。仓库中提供了示例用法。
核心功能
- 01将 Swift 源代码解析为源码精确的语法树。
- 02提供遍历和检查语法树的库。
- 03支持构造和修改语法节点,以生成 Swift 代码。
- 04作为 Swift 宏展开的基础。
- 05可通过 Swift Package Manager、Xcode 或 Bazel 引入。
适用场景
- 编写在编译期生成代码的 Swift 宏。
- 开发 Swift 代码的 lint、格式化或重构工具。
- 自动改写或生成 Swift 源文件。
快速上手
- 1
在 Package.swift 的 dependencies 中添加 swift-syntax 包
dependencies: [ .package(url: "https://github.com/swiftlang/swift-syntax.git", from: "<#latest swift-syntax tag#>"), ] - 2
或在 Xcode 项目的 Package Dependencies 标签页中添加该依赖
使用前须知
- 发布版本与 Swift 语言和工具链版本绑定,需选择与你的 Swift 版本匹配的版本。
- Bazel 构建配置处于实验阶段。
标签
常见问题
- swift-syntax 是什么?
- 用于解析、检查、生成和转换 Swift 源代码的 Swift 库集合,基于源码精确的语法树。 swift-syntax 是一组 Swift 库,用于处理 Swift 源代码的语法树表示。这种源码精确的树结构称为 SwiftSyntax tree,适合需要读取、检查或改写 Swift 代码的工具直接基于它开发,无需自行处理原始文本。
- swift-syntax 可以免费使用吗?用的什么许可证?
- swift-syntax 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- swift-syntax 还在维护吗?
- 活跃维护中。swift-syntax 最近一次提交是在 2026年10月21日。
- swift-syntax 适合用来做什么?
- 编写在编译期生成代码的 Swift 宏。 开发 Swift 代码的 lint、格式化或重构工具。 自动改写或生成 Swift 源文件。
- swift-syntax 怎么安装和运行?
- 在 Package.swift 的 dependencies 中添加 swift-syntax 包: dependencies: [ .package(url: "https://github.com/swiftlang/swift-syntax.git", from: "<#latest swift-syntax tag#>"), ] 或在 Xcode 项目的 Package Dependencies 标签页中添加该依赖
- 在哪里获取 swift-syntax?
- 源代码和安装说明在 GitHub 上:https://github.com/swiftlang/swift-syntax
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
2.7万2982RustMIT更新于 前天
用纯 Python 编写的完整 C 语言解析器,将 C 源码解析为抽象语法树,无外部依赖。
3577657PythonOther更新于 3天前
一个 JavaScript 编译器,可将新版语法转译为目标环境可运行的代码。
4.4万5953TypeScriptMIT更新于 3小时前
模块化的编译器与工具链技术集合,包含 LLVM 核心、Clang 前端、libc++ 标准库和 LLD 链接器。
4.1万1.9万LLVMOther更新于 3小时前
一个快速的 JavaScript Markdown 解析与编译库,可在浏览器、Node.js 和命令行中使用。
3.7万3784TypeScriptOther更新于 23小时前
用 Rust 编写的超快速 TypeScript/JavaScript 编译器与解析器,可在 Rust 与 JavaScript 中使用。
3.4万1547RustApache-2.0更新于 15小时前