#restructuredtext #parser #incremental

tree-sitter-rst

tree-sitter 解析库的 reStructuredText 语法

1 个不稳定版本

0.1.0 2022 年 8 月 26 日

400文本编辑器


cbfmt 中使用

MIT 许可证

395KB
12K SLoC

C 12K SLoC // 0.0% comments JavaScript 329 SLoC // 0.4% comments Rust 34 SLoC // 0.4% comments

tree-sitter-rst

CI

tree-sitter 的 reStructuredText 语法。基于 https://docutils.sourceforge.io/docs/ref/rst/restructuredtext.html 的规范。

请查看沙盒:https://stsewd.dev/tree-sitter-rst/.

注意:此语法仍在开发中,很多东西都可能发生变化!

待办事项

  • 允许在项之间有空行列表
  • 重构引用和页脚引用的解析
  • 嵌套行块
  • 选项列表
  • 向内联添加一些节点?
  • 检查是否有重新实现一些节点为 JS 而不是 C 的方法?
  • 带有分类器的定义列表不能由空行分隔。
  • 测试,测试,更多测试!

设计笔记

  • 包含 body 元素(如列表或指令)的节点在名为 body 的节点内部。
  • RST 中的部分是一个包含 body 元素的大节点,这里它们只是一个包含标题的节点。这是为了避免猜测副标题的级别。
  • RST 中的独立超链接是 reference 节点,这里它们是 standalone_hyperlink 节点。这是为了避免与内联引用节点(它们是 reference 节点)混淆。
  • 文字块是其前面段落的一部分,而不是一个单独的节点,除了文字块的可展开形式。
  • RST 指令中只有 "body" 节点,这里的 body 被解析为参数/选项/内容。

设计决策

使用此语法的项目

贡献

请查看 CONTRIBUTING.md 文件

其他语法

依赖关系

~2.7–4MB
~71K SLoC