#tree-sitter #node #tree-node #store #facade #access #opinionated

yak-sitter

具有观点的 tree-sitter 面板,让您可以存储对节点可见的数据,并提供其他改进

2 个不稳定版本

0.4.0 2024年4月1日
0.3.1 2024年4月1日
0.3.0 2023年7月18日

#939 in 解析器实现

每月 29 次下载
type-sitter-lib 中使用

MIT/Apache

60KB
1K SLoC

yak-sitter: 具有观点的 tree-sitter 面板,让您可以存储对节点可见的数据,并提供其他改进

Crates.io Docs.rs

此库提供的 API 几乎与 tree-sitter 相同,但有以下更改

  • 树可以可选地存储任意类型的 Custom 数据,每个节点都可以通过共享引用访问。通常,自定义数据将包含节点到附加元数据的映射或诊断记录器(假设所有诊断至少有一个源位置)。然后,您不需要将此额外信息传递给处理节点的函数,您可以直接从节点中检索它。
  • 树存储其原始源代码,节点可以访问其文本
  • 树还存储解析它们的路径,节点可以访问此路径
  • 节点按其在树中的位置排序,不同树的节点按路径排序
  • TreeCursor 被分为 LocalTreeCursorGlobalTreeCursor。当 GlobalTreeCursor 重置到一个节点时,它仍然可以访问父节点和兄弟节点,但性能会受到影响。《code>LocalTreeCursor 是原始的 TreeCursor 因为其行为有点令人困惑
  • QueryMatches 是一个 StreamingIterator 正如它应该那样
  • 所有解析的文本都必须是有效的 UTF-8

该库旨在将tree-sitter与现有项目(https://github.com/Jakobeha/nominalscript)集成,因此得名。无论怎样,如果您有任何更改或建议,请随时提交github issue或PR

依赖关系

~2.9–4MB
~75K SLoC