1 个不稳定版本
0.4.4 | 2024年4月18日 |
---|
#213 在 文本编辑器
在 ttags 中使用
33MB
1M SLoC
tree-sitter-swift
包含 Swift 编程语言的 tree-sitter
语法。
入门
要使用此解析器解析 Swift 代码,您需要依赖于 Rust 包或 NPM 包。
Rust
要使用 Rust 包,您需要在您的 Cargo.toml
中添加以下内容
tree-sitter = "0.20.4"
tree-sitter-swift = "=0.4.3"
然后,您可以使用此处声明的语言使用 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.4.3",
"tree-sitter": "^0.20.0"
}
解析器的使用方式如下
const Parser = require("tree-sitter");
const Swift = require("tree-sitter-swift");
const parser = new Parser();
parser.setLanguage(Swift);
// ...
const tree = parser.parse(mySourceCode);
编辑语法
使用此包进行 checkout 的常见工作流程将类似于
- 修改
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 模块更现代。请参阅以下说明
- 安装节点模块
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
都只能在构建后使用。这也大大减少了差异比较时的噪音。
不提交parser.c
的副作用是你可以保证向下兼容。由tree-sitter CLI生成的解析器并不总是向下兼容。如果你需要一个解析器,请使用CLI自己生成;所有相关信息都包含在这个包中。通过这样做,你还可以确保你的解析器版本和库版本是兼容的。
如果你需要一个parser.c
,并且你不在乎tree-sitter的版本,但你没有本地设置可以让你获取解析器,你可以从这个包中的一个最近的workflows运行中下载一个。要这样做
- 访问这个仓库的GitHub actions页面。
- 单击“发布
grammar.json
和parser.c
”操作对应的提交。 - 下滑到
Artifacts
并单击generated-parser-src
。所有相关的解析器文件都将可供下载。
依赖关系
~2.8–4MB
~72K SLoC