Удачная возможность для веб-разработчиков выучить язык программирования Си — HTML5-парсер Gumbo, реализованный в виде небольшой библиотеки C99 без внешних зависимостей. Парсер создан как строительный блок для создания других инструментов и библиотек, таких как валидаторы, языки шаблонов, инструменты рефакторинга и анализа кода.
Особенности:
- Полная совместимость со спецификациями HTML5.
- Устойчивость к некачественным входным данным.
- Простые API, которые могут быть легко обработаны программами на других ЯП.
- Поддержка исходных позиций и указателей в оригинальном коде, при навигации по дереву зависимостей.
- Проходит все тесты html5lib-0.95.
- Проверен на более чем 2,5 млрд страниц в индексе Google.
Разработчики не ставят перед собой цели оптимизации парсера для производительности, его писали на Си не для того, чтобы повысить скорость исполнения кода в десятки раз.
В будущем планируется добавить поддержку самых свежих функций HTML5, поддержку парсинга фрагментов кода, полноценные отчёты об ошибках и проч.
Для использования синтаксического анализатора Gumbo, нужно включить файл gumbo.h
, а затем вызвать gumbo_parse
.
#include "gumbo.h"
int main(int argc, char** argv) {
GumboOutput* output = gumbo_parse(argv[1]);
// Do stuff with output->root
gumbo_destroy_output(&kGumboDefaultOptions, output);
}
Примеры полезного использования см. здесь.
Программа опубликована под лицензией Apache 2.
Автор: alizar