Gumbo是一个 HTML5 解析算法实现,只用 C99 标准库编码实现,没有其他外部依赖。其设计目标是为其他工具和库的开发提供支持,这些工具和库包括 linters(JS检查器)、验证器、模板语言以及重构和分析工具。
Gumbo 的目标和特性:
- 完全符合 HTML5 规范
- 对错误输入有健壮性和弹性
- 简单的API,易于其他语言封装
- 支持对源文件定位
- 相对轻量级,无外部依赖
- 通过所有 html5lib-0.95 测试
- 在超过25亿的谷歌索引页面上测试过
非目标:
- 执行速度。因为Gumbo是纯C编写,所以速度上有优势。虽然如此,但这并不是在拟定用途下的重要考量,也不是主要设计因素。
- 支持 UTF-8 以外的编码。在大多数情况下,处理客户端代码之前,可以用另外的库将输入流转换为UTF-8的文本。
- 支持 C89 标准。目前大多数主要的编译器都支持C99,主要的特例( Microsoft Visual Studio)应该能够在C++模式下编译,需要细微调整。 (欢迎报告错误)。
未来可能加入的一些特性:
- 支持近期HTML5规范变动从而支持模板标签
- 支持分段分析
- 全功能错误报告机制
- 与其他语言绑定
如何安装Gumbo 及其用例,请查看 Gumbo的 Github 主页:https://github.com/google/gumbo-parser