#解析器 #增量 #norg

tree-sitter-norg

tree-sitter 解析库的 Norg 语法

3 个不稳定版本

0.1.1 2023 年 3 月 11 日
0.1.0 2023 年 3 月 11 日
0.0.1 2023 年 3 月 11 日

#348文本编辑器

24 每月下载量
2 crates 中使用

MIT 许可证

14MB
466K SLoC

C 465K SLoC JavaScript 861 SLoC // 0.0% comments C++ 111 SLoC Rust 41 SLoC // 0.3% comments

用于 Norg 的 Treesitter 解析器

这个仓库尝试在最初的 tree-sitter-norg 解析器的基础上进行改进,以减小解析器的体积并提高解析速度。

与旧解析器的升级包括

  • 基于语法 —— 旧解析器几乎完全依赖于 C++ 的 scanner.cc,这阻碍了错误处理和解析效率。
  • 轻量级 —— 解析器的重量比第一代解析器低 4 倍,这主要归功于更智能的设计和对语法的更重依赖。

由于其更小的尺寸,解析器几乎可以嵌入任何地方。


lib.rs:

这个 crate 为 tree-sitter 解析库提供 norg 语言支持。

通常,您将使用 language 函数将此语言添加到 tree-sitter 的 Parser,然后使用解析器解析一些代码

let code = "";
let mut parser = tree_sitter::Parser::new();
parser.set_language(tree_sitter_norg::language()).expect("Error loading norg grammar");
let tree = parser.parse(code, None).unwrap();

依赖

~2.8–4MB
~72K SLoC