/SwiftTreeSitter

Swift API for the tree-sitter incremental parsing system

Primary LanguageSwiftBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

Build Status License Platforms Documentation

SwiftTreeSitter

Swift API for the tree-sitter incremental parsing system.

  • Close to full coverage of the C API
  • Swift/Foundation types where possible
  • Standard query result mapping for highlights and injections
  • Query predicate support via ResolvingQueryCursor

SwiftTreeSitter is fairly low-level. If you are looking a higher-level system for syntax highlighting and other syntactic operations, you might want to have a look at Neon.

📖 Documentation is available in DocC format.

Integration

dependencies: [
    .package(url: "https://github.com/ChimeHQ/SwiftTreeSitter")
]

TreeSitterDocument

This is an experimental target that ties together a lot of the tree-sitter highlighting concepts into one easier-to-use library. It is currently experimental.

Language Parsers

Tree-sitter language parsers are separate projects, and you'll probably need at least one. More details are available in the documentation. How they can be installed an incorporated varies. Since you're here, you might find SPM the most convenient.

Parser Make SPM Official Repo
Bash ✅ ✅
C ✅ ✅
C++ ✅ ✅
C# ✅ ✅
Clojure ✅
CMake
Comment
CSS ✅ ✅
D
Dart
Dockerfile ✅ ✅ ✅
Diff ✅ ✅
Elixir ✅ ✅ ✅
Elm ✅ ✅
Erlang
Fish
Fortran
gitattributes
gitignore
Go ✅ ✅ ✅
GoMod ✅ ✅ ✅
GoWork ✅
graphql
Hack
Haskell ✅ ✅
HCL ✅ ✅
HTML ✅ ✅
Java ✅ ✅ ✅
Javascript ✅ ✅
JSON ✅ ✅ ✅
Json5
JSDoc ✅ ✅
Julia ✅ ✅
Kotlin ✅
Latex ✅ ✅
LLVM
Lua ✅ ✅
Make
Markdown ✅ ✅
Markdown ✅
OCaml ✅ ✅
Pascal
Perl ✅ ✅
PHP ✅ ✅ ✅
PowerShell
Python ✅ ✅
R
Racket
Regex
Ruby ✅ ✅ ✅
Rust ✅ ✅
Scala ✅ ✅
Scheme
Scss
SQL ✅ ✅
Sqlite
SSH ✅ ✅
Swift ✅ ✅ ✅
TOML ✅
Tree-sitter query language ✅ ✅
Typescript ✅ ✅
Verilog ✅ ✅
Vue
YAML ✅
Zig ✅ ✅ ✅

Suggestions or Feedback

We'd love to hear from you! Get in touch via an issue or pull request.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.