The swift-syntax package is a set of libraries that work on a source-accurate tree representation of Swift source code, called the SwiftSyntax tree. The SwiftSyntax tree forms the backbone of Swift’s macro system – the macro expansion nodes are represented as SwiftSyntax nodes and a macro generates a SwiftSyntax tree to be inserted into the source file.
You can read SwiftSyntax’s documentation on swiftpackageindex.com.
A set of example usages of swift-syntax can be found in Examples.
Releases of SwiftSyntax are aligned with corresponding language and tooling releases, for example the major version 509 of swift-syntax is aligned with Swift 5.9.
To depend on swift-syntax in a SwiftPM package, add the following to your
dependencies: [ .package(url: "https://github.com/apple/swift-syntax.git", from: "<#latest swift-syntax tag#>"), ],
To add swift-syntax as a dependency of your Xcode project, go to the Package Dependencies tab of your Xcode project, click the plus button and search for https://github.com/apple/swift-syntax.git.
If you should hit any issues while using SwiftSyntax, we appreciate bug reports on GitHub Issue.
Start contributing to SwiftSyntax see this guide for more information.
SwiftSyntax provides an experimental Bazel build configuration, maintained by Keith Smiley.
To use it you can pull the source archive from the relevant release tag
WORKSPACE and depend on the libraries you need from the
BUILD.bazel file. Each library also has an associated
Library_opt target (such as
SwiftSyntax_opt) which forces
SwiftSyntax to always build with optimizations enabled. This may help
local runtime performance at the cost of debuggability, and initial
build time. Please tag any issues related to the Bazel configuration with the label "Bazel".
Please see LICENSE for more information.
|Last commit: 18 seconds ago|
This is the 509.0.0 release of SwiftSyntax, aligned with Swift 5.9.
To use this snapshot add the following dependency to your Package.swift:
.package(url: "https://github.com/apple/swift-syntax", from: "509.0.0")