4个版本
0.2.3 | 2023年8月3日 |
---|---|
0.2.2 | 2023年8月2日 |
0.2.1 | 2023年7月25日 |
0.2.0 | 2023年7月25日 |
0.1.0 |
|
#2925 in 解析器实现
61KB
1.5K SLoC
pegmd
通过使用pest定义解析表达式语法(PEG)将遵循CommonMark v0.30的Markdown文档解析为抽象语法树。如果包含html
功能,该crate还提供可选的转换器,将AST转换为HTML。
用法
创建AST
从crate导出的主函数ast::parse_document
接受一个&str
,在成功的情况下返回一个与输入相同的生命周期的Node
。
遍历
从那里,你可以通过创建一个实现traversal::Vistor
特质的struct来遍历树,并将其提供给Node::traverse
方法。
HTML转换
如果启用html
功能,该crate提供html::HTMLTransformer
结构体,它实现Visitor
特质以创建格式良好的HTML输出。
不支持
- 文档流。由于pest不支持流,此crate也无法从流中读取文档。
当前限制
虽然该解析器的最终目标是支持整个CommonMark规范,但目前还不支持
- HTML块
- Setext标题
- 带有关闭井号的ATX标题
- 实体引用
- 使用波浪号 (~) 将代码块围起来
- 没有关闭围栏的代码块会一直运行到文档的末尾,而不是到容器块的末尾
- 一些块引用的边缘情况没有按照规范处理。特别是示例247到252
所有这些都是在进行中,并将添加到解析器中。
依赖项
~2–2.9MB
~58K SLoC