Gumbo:Google推出纯 C 编写的HTML5解析器

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规范变动从而支持模板标签
  • 支持分段分析
  • 全功能错误报告机制
  • 与其他语言绑定