1 个不稳定版本
0.1.0 | 2023年6月4日 |
---|
在 文本编辑器 中排名 #287
每月下载量 87 次
在 syntastica-parsers 中使用
45KB
1.5K SLoC
tree-sitter-comment
Tree-sitter 的语法,用于像 TODO:
、FIXME(user):
等注释标签。适用于嵌入在注释中。
请在 https://stsewd.dev/tree-sitter-comment/ 检查 playground。
语法
由于注释标签既不是编程语言也没有标准,我选择了遵循流行的语法约定。
注释标签
- 注释标签可以包含
- 大写 ASCII 字母
- 数字(不能以数字开头)
-
、_
(这些字符不能作为开头或结尾)
- 可选地可以在括号内链接用户到标签中
()
- 名称必须后跟
:
和一个空格
URI
- 识别 http 和 https 链接
如果您认为还有其他流行的语法约定,这个语法没有涵盖,请随时提交 issue。
示例
TODO: something needs to be done
TODO(stsewd): something needs to be done by @stsewd
XXX: fix something else.
XXX: extra white spaces.
(NOTE: this works too).
NOTE-BUG (stsewd): tags can be separated by `-`
NOTE_BUG: or by `_`.
This will be recognized as a URI
https://github.com/stsewd/
常见问题解答
我可以匹配不以 :
结尾的标签,如 TODO
吗?
这个语法没有提供特定的标记,但您可以使用这个查询来匹配它
("text" @todo
(#eq? @todo "TODO"))
我可以高亮显示对问题、PR、MR 的引用,如 #10
或 !10
吗?
这个语法没有提供特定的标记,但您可以使用这个查询来匹配它
("text" @issue
(#match? @issue "^#[0-9]+$"))
;; NOTE: This matches `!10` and `! 10`.
("text" @symbol . "text" @issue
(#eq? @symbol "!")
(#match? @issue "^[0-9]+$"))
为什么选择 C?
Tree-sitter 是一个上下文无关语法的 LR 解析器,这意味着它非常适合不需要回溯或保持空白状态(如缩进)的语法。因此,对于需要保持状态或回退到通用标记的 语言,它需要在 C 中进行一些手动解析。
其他语法
- tree-sitter-rst:reStructuredText 语法。
依赖项
~2.7–4MB
~71K SLoC