10 个版本
0.1.10 | 2023年2月17日 |
---|---|
0.1.8 | 2023年2月13日 |
0.1.4 | 2023年1月23日 |
0.1.1 | 2022年12月21日 |
在 文本编辑器 中排名 166
每月下载量 39
355KB
13K SLoC
tree-sitter-wdl
Tree-sitter 语法,用于 WDL(工作流描述语言)。
用法
有关可用语言绑定和基本用法信息,请参阅 Tree-sitter 文档。要使用 Rust 绑定,请将以下内容添加到您的 Cargo.toml 文件中
[dependencies]
tree-sitter-wdl-1 = "0.1.0"
提供了一个便利函数,用于创建一个新的 TreeSitter 解析器,语言设置为 tree-sitter-wdl-1
use tree_sitter_wdl_1 as wdl;
fn main() {
let parser = wdl::parser().expect("Error creating WDL parser");
...
}
还有一个便利函数可以将单个文档解析为 tree_sitter::Tree
use tree_sitter::Tree;
use tree_sitter_wdl_1 as wdl;
fn main() {
let text = r#"
version 1.0
workflow foo {
}
"#;
let tree: Tree = wdl::parse_document(text).expect("Error parsing WDL parser");
...
}
设计
此存储库提供单个 语法,用于解析 WDL 版本 1.x
(不支持 draft-*
和 development
版本)。该语法设计为宽容且容错。从该语法生成的解析器将允许 WDL 规范禁止的或仅在特定 WDL 版本中允许的标记组合。
由于 Tree-sitter 生成 LR(1) 解析器,因此只有一个标记的向前查看可用,因此需要多个标记向前查看的语法元素难以编写或不可能编写。对于 WDL,这意味着字符串(包括 command
块的内容)无法由语法描述。幸运的是,Tree-sitter 允许外部解析这些语法元素。WDL 语法的外部解析器在 scanner.cc 中,并实现了在 Tree-sitter 文档 中描述的 API。
开发
- 按照说明安装 Tree-sitter CLI
- 生成和编译解析器:
npm run build
- 运行测试
npm run test
依赖项
~3–5MB
~95K SLoC