18 个版本
0.5.0 | 2024 年 5 月 4 日 |
---|---|
0.4.3 | 2024 年 3 月 16 日 |
0.4.0 | 2024 年 1 月 23 日 |
0.3.6 | 2023 年 2 月 21 日 |
0.1.4 | 2022 年 3 月 4 日 |
#20 in 文本编辑器
7,015 每月下载量
在 10 个 钩子中使用(直接使用 8 个)
16MB
486K SLoC
tree-sitter-swift
此包含 Swift 编程语言的 tree-sitter
语法。
入门
要使用此解析器解析 Swift 代码,您希望依赖 Rust 钩子或 NPM 包。
Rust
要使用 Rust 钩子,您需要在您的 Cargo.toml
中添加以下内容
tree-sitter = "0.22.5"
tree-sitter-swift = "=0.5.0"
然后,您可以使用在此处声明的语言使用 tree-sitter
解析器
let mut parser = tree_sitter::Parser::new();
parser.set_language(tree_sitter_swift::language())?;
// ...
let tree = parser.parse(&my_source_code, None)
.ok_or_else(|| /* error handling code */)?;
JavaScript
要从 NPM 使用此功能,您需要在 package.json
中添加类似的依赖项
"dependencies: {
"tree-sitter-swift": "0.5.0",
"tree-sitter": "^0.21.1"
}
您的解析器使用方法将类似于
const Parser = require("tree-sitter");
const Swift = require("tree-sitter-swift");
const parser = new Parser();
parser.setLanguage(Swift);
// ...
const tree = parser.parse(mySourceCode);
编辑语法
使用此包检查,编辑语法的常见工作流程将类似于
- 修改
grammar.ts
。 - 运行
npm install && npm test
以查看更改是否对现有的解析行为产生影响。默认的npm test
目标需要安装valgrind
;如果您没有安装,并且不想安装,可以直接使用tree-sitter test
。 - 在某个实际的 Swift 代码库上运行
tree-sitter parse
并查看是否(或在何处)失败。 - 使用任何失败来创建新的语料库测试用例。
贡献
欢迎所有对此存储库的贡献。
如果此类贡献是将生成的文件(例如,parser.c
)检入存储库,请注意,您的贡献将不会获得接受。请确保阅读常见问题解答条目以及与此主题相关的先前 讨论和妥协。
在 Web Assembly 中使用 tree-sitter-swift
将 tree-sitter-swift 作为 web 绑定版 tree-sitter 的语言,这可能是比已发布的 node 模块更现代的版本。 查看。按照以下说明操作
- 安装 node 模块
npm install web-tree-sitter tree-sitter-swift
- 运行 tree-sitter 命令行工具以创建 wasm 包
$ npx tree-sitter build-asm ./node_modules/tree-sitter
- 以这种方式启动 tree-sitter wasm。
const Parser = require("web-tree-sitter");
async function run() {
//needs to happen first
await Parser.init();
//wait for the load of swift
const Swift = await Parser.Language.load("./tree-sitter-swift.wasm");
const parser = new Parser();
parser.setLanguage(Swift);
//Parse your swift code here.
const tree = parser.parse('print("Hello, World!")');
}
//if you want to run this
run().then(console.log, console.error);
常见问题
你的 parser.c
在哪里?
此存储库当前省略了构建过程中自动生成的大部分代码。这意味着,例如,grammar.json
和 parser.c
都只能在构建后才能使用。这也大大减少了 diff 中的噪音。
不提交 parser.c
的副作用是可以保证向后兼容性。tree-sitter CLI 生成的解析器并不总是向后兼容。如果您需要解析器,请使用 CLI 自行生成;进行此操作所需的所有信息都包含在此包中。通过这样做,您也可以确保您的解析器版本和库版本是兼容的。
如果您需要 parser.c
,并且您不关心 tree-sitter 版本,但您没有本地设置可以获取解析器,您可以从此包中最近的 workflow 运行中下载一个。要这样做
- 访问此存储库的 GitHub actions 页面。
- 单击适当的提交的 "发布
grammar.json
和parser.c
" 操作。 - 向下滚动到
Artifacts
并单击generated-parser-src
。所有相关的解析器文件都将可用于下载。
依赖项
~2.7–4MB
~71K SLoC