LINUX.ORG.RU

Parsing


5

0

Всего сообщений: 12

Новости — Разработка

cpp-peglib 1.10.0 и 1.10.1

Группа Разработка

12-го и 14-го марта, после длительного затишья, состоялись выпуски 1.10.0 и 1.10.1 библиотеки cpp-peglib, реализующей PEG (грамматику, разбирающую выражение).

Библиотека поддерживает синтаксис, подробно описанный Брайаном Фордом на странице 2 документа «Parsing Expression Grammars: A Recognition-Based Syntactic Foundation», со многими дополнительными улучшениями.

В отличие от таких проектов, как PEGTL, Lexy и многих других, cpp-peglib позволяет задать выражение PEG и во время выполнения.

( читать дальше... )

>>> Попробовать онлайн (пример грамматики JSON на скриншоте)

>>> Подробности на GitHub

 , cpp-peglib, , ,

dataman
()
Новости — Разработка

lexbor 2.7.0

Группа Разработка

13 марта, после четырёх месяцев разработки, состоялся выпуск 2.7.0 высокопроизводительной библиотеки lexbor, предназначенной для обработки форматов HTML 5 и CSS.

Основные особенности проекта:

  • полная поддержка спецификаций WHATWG, W3C и Unicode: HTML5, CSS Syntax 3, Encoding, URL​, Unicode Standard Annex #15, Unicode Technical Standard #46, Punycode, Unicode Standard Annex #15, Unicode Technical Standard #46;
  • манипулирование элементами и атрибутами DOM: добавление, изменение, удаление и прочее;
  • поддержка разбора фрагментов HTML;
  • прохождение всех тестов построения деревьев DOM;
  • протестирована на более чем 200 миллионах HTML-страниц с помощью ASAN;
  • поддержка определения кодировки по потоку байтов;
  • анализ стилей CSS в атрибутах тегов и в теге <style>;
  • поиск HTML-элементов с помощью CSS-селекторов;
  • поддержка 40 кодировок при кодировании и декодировании;
  • поддержка небуферизованного и буферизованного кодирования и декодирования;
  • написан на языке C (стандарт C99) без сторонних зависимостей и распространяется по лицензии Apache 2.0;
  • библиотека разделена на модули (Core, CSS, DOM, Encoding, Engine, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), которые могут быть скомпилированы и использованы как раздельные библиотеки (с опцией CMake LEXBOR_BUILD_SEPARATELY=ON);
  • сторонние биндинги и врапперы для языков Crystal, ​​D​​, Elixir, Julia, PHP​, Python и Ruby.

( читать дальше... )

>>> Сайт проекта

>>> Исходный код

>>> Документация

>>> Сделанные и запланированные возможности

>>> Подробности о версии 2.7.0 на GitHub

 , , , ,

dataman
()
Новости — Разработка

Glaze 7.2.0

Группа Разработка

Состоялся выпуск 7.2.0 высокопроизводительной, SIMD-оптимизированной и многопоточной библиотеки Glaze, предназначенной для быстрой сериализации и десериализации данных с поддержкой форматов JSON RFC 8259, CSV, CBOR, BEVE, MessagePack, TOML, EETF (Erlang External Term Format) (опционально, для компиляции требуются библиотеки Erlang), YAML 1.2, Stencil и Mustache.

Библиотека написана на языке C++ (header-only, стандарт C++23 и выше) и распространяется по лицензии MIT.

Glaze также предоставляет поддержку REPE RPC и сервер и клиент HTTP, используя современные возможности C++, включая автоматическую генерацию REST API, поддержку WebSocket и шифрование SSL/TLS.

( читать дальше... )

>>> Подробности на GitHub

 , , , ,

dataman
()
Новости — Разработка

simdjson 4.0.0 и 4.0.1

Группа Разработка

12 и 13 сентября состоялись выпуски 4.0.0 и 4.0.1 высокопроизводительной, SIMD-оптимизированной, библиотеки simdjson.

( читать дальше... )

>>> Подробности на GitHub

 , , , ,

dataman
()
Новости — Разработка

lexbor 2.5.0

Группа Разработка

13 августа, после девяти месяцев разработки, состоялся выпуск 2.5.0 высокопроизводительной библиотеки lexbor, предназначенной для парсинга HTML 5 и CSS.

( читать дальше... )

>>> Подробности о версии на GitHub

 , , , ,

dataman
()
Новости — Разработка

Glaze 5.4.0

Glaze 5.4.0
Группа Разработка

Состоялся выпуск 5.4.0 высокопроизводительной библиотеки Glaze, предназначенной для чтения и записи JSON с удобными возможностями сериализации и десериализации данных.

Также поддерживаются форматы CSV, BEVE и EETF (Erlang External Term Format) (опционально, для компиляции требуются библиотеки Erlang).
Библиотека написана на языке C++ (header-only, стандарт C++23) и распространяется по лицензии MIT.

( читать дальше... )

>>> Подробности на GitHub

 , , , ,

dataman
()
Новости — Разработка

Glaze 5.0.0 и 5.0.1

Группа Разработка

5 и 20 марта состоялись выпуски 5.0.0 и 5.0.1 высокопроизводительной библиотеки Glaze, предназначенной для чтения и записи JSON.
Также поддерживаются форматы CSV и BEVE. Библиотека написана на языке C++ (header-only, стандарт C++23) и распространяется по лицензии MIT.

( читать дальше... )

>>> Подробности на GitHub

 , , , ,

dataman
()
Новости — Разработка

Glaze 4.3.0

Группа Разработка

6 января состоялся выпуск 4.3.0 одной из самых быстрых библиотек чтения и записи JSON, написанной на языке C++ (header-only, стандарт C++23) и распространяемой по лицензии MIT.
Также поддерживаются форматы CSV и BEVE.

( читать дальше... )

>>> Список изменений версии 4.3.0 на GitHub

 , , , ,

dataman
()
Новости — Разработка

lexbor 2.4.0

Группа Разработка

13 ноября, после более года разработки, состоялся выпуск 2.4.0 высокопроизводительной библиотеки парсинга HTML5 и CSS lexbor, написанной на языке C без сторонних зависимостей, и распространяемой по лицензии Apache 2.0.

Библиотека разделена на модули (Core, CSS, DOM, Encoding, HTML, NS, Punycode, Selectors, Tag, Unicode, URL, Utils), которые могут быть скомпилированы и использованы раздельно (с опцией CMake LEXBOR_BUILD_SEPARATELY=ON).
Для библиотеки есть сторонние биндинги и врапперы для языков Elixir, Crystal, Python, D, Ruby и PHP.

( читать дальше... )

>>> Подробности

 , , , ,

dataman
()
Новости — Open Source

Ada 2.* - быстрая C++ библиотека для парсинга URL

Группа Open Source

31-го марта и 17-го апреля состоялись выпуски 2.0.0 и 2.1.0 быстрой библиотеки парсинга URL для языка C++ (стандарт C++17).

( читать дальше... )

>>> Подробности

 , , ,

dataman
()
Новости — Open Source

lexbor 2.2.0 - библиотека парсинга HTML и CSS

Группа Open Source

6 апреля, после 20 месяцев разработки, состоялся выпуск 2.2.0 библиотеки парсинга HTML и CSS lexbor, написанной на языке C.

( читать дальше... )

>>> Подробности

 , , , ,

dataman
()
Новости — Разработка

re2c 1.0

Группа Разработка

RE2C — генератор лексических анализаторов для языков C и C++, созданный в 1993 году Питером Бамбулисом в качестве альтернативы небезызвестному Flex. Основной целью RE2C является генерация очень быстрых лексеров: по скорости исполнения они должны не уступать коду, написанному и оптимизированному вручную (в пределах разумного). В отличие от Flex, RE2C не использует табличную модель лексера: он кодирует конечный автомат прямо в виде программы на С, состоящей из меток и условных переходов. Полученный лексер оказывается не только быстрее, но часто ещё и меньше [1] (RE2C минимизирует конечный автомат и применяет ряд других оптимизаций). Другая особенность RE2C — отсутствие жёсткого интерфейса: в отличие от Flex, он не генерирует код «обвязки» между лексером и внешним миром. Ответственность за написание этого кода остаётся на пользователе, что даёт большую свободу и позволяет приспосабливать лексеры к уже существующему программному окружению.

Смена мажорной версии (впервые за всю историю проекта) объясняется не поломкой обратной совместимости, а нетривиальным расширением возможностей генератора: кроме обычного распознавания регулярных грамматик (англ. recognition) RE2C теперь умеет частичный синтаксический разбор (англ. submatch extraction). Эта возможность легко реализуема на основе недетерминированных автоматов, и поэтому давно присутствует во многих утилитах (grep, sed), библиотеках регулярных выражений (RE2) и языках (Perl, JS). А вот в генераторах лексеров эта возможность обычно отсутствует (Lex, Flex, Quex), корректно работает только на малой части случаев (Ragel) или реализована путём серьёзного усложнения модели (Tlex). Одно из следствий невозможности синтаксического разбора средствами детерминированных конечных автоматов — изначально поломанный оператор предпросмотра в Lex и Flex.

Алгоритм разбора, заложенный в основе RE2C, был предложен Вилле Лаурикари в 2000 году [2]. Этот алгоритм хорош тем, что усложняет модель вычислений ровно настолько, насколько того требует детализация синтаксического разбора в каждом конкретном случае: для обычных задач распознавания модель Лаурикари соответствует простому детерминированному автомату. RE2C использует «улучшенную и дополненную» версию алгоритма, предложенную автором сего поста [3].

[1] Cтатья 1993 года, в которой проведён сравнительный анализ RE2C, Flex и других генераторов

[2] Статья 2000 года, которая описывает быстрый алгоритм разбора

[3] Статья 2017 года, которая описывает новый ещё более быстрый алгоритм разбора

>>> Подробности

 , , ,

skvadrik
()