LINUX.ORG.RU

Parser


7

7

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

Lug 0.5.0

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

19 марта состоялся выпуск C++ библиотеки Lug, реализующей встраиваемый предметно-ориентированный язык для выражения синтаксических анализаторов в виде расширенных грамматик синтаксических выражений, и распространяемой по лицензии MIT.

Возможности библиотеки:

  • Естественный синтаксис, напоминающий языки внешних генераторов парсеров, с поддержкой атрибутов и семантических действий.
  • Возможность работы с контекстно-зависимыми грамматиками с таблицами символов, условиями и синтаксическими предикатами.
  • Сгенерированные парсеры компилируются в байткод и выполняются в виртуальной машине синтаксического анализа.
  • Чёткое разделение синтаксических и лексических правил с возможностью настройки неявного пропуска пробельных символов.
  • Поддержка прямой и косвенной левой рекурсии, с уровнями старшинства для разграничения подвыражений со смешанными левой и правой рекурсиями.
  • Полная поддержка разбора текста в формате UTF-8, включая уровень 1 и частичное соответствие уровню 2 технического стандарта UTS #18 Unicode Regular Expressions.
  • Обработка ошибок и восстановление с помощью помеченных сбоев, правил восстановления и обработчиков ошибок.
  • Автоматическое отслеживание номеров строк и колонок, настраиваемая ширина и выравнивание табуляции.
  • Header-only-библиотека, использующая только стандартную библиотеку и возможности стандарта C++17. Перспективно совместима со стандартами C++20 и C++23.
  • Относительно небольшой размер библиотеки, с целью содержания общего количества строк во всех заголовочных файлах на уровне менее 6000 строк лаконичного кода.

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

>>> Подробности на github.com

 , , , ,

dataman
()

TinyXML2 10.1.0 и 11.0.0

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

9 и 16 марта, после более года разработки, состоялись выпуски 10.1.0 и 11.0.0 небольшой, простой и эффективной C++ библиотеки TinyXML2, предназначенной для парсинга XML и распространяемой по лицензии Zlib.

Список изменений:

  • Устранена уязвимость CVE-2024-50615, связанная с проблемой разбора кодировок символов.
  • Исправлены некоторые внутренние типы (int -> size_t), в связи с чем нарушена совместимость c ABI прежних версий.
  • Исправлены ошибки сборки и опечатки.

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

>>> Подробности на github.com

 , , ,

dataman
()

re2c 4.0

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

Во вторник, 19 ноября, представлен релиз re2c – генератора лексических анализаторов (он же компилятор регулярных выражений в код на целевом языке программирования). re2c специализируется на генерации быстрых и легко встраиваемых лексеров. Он отличается от более известного аналога flex гибким интерфейсом, генерацией оптимизированных нетабличных лексеров и поддержкой захватов (submatch extraction) на основе детерминированных конечных автоматов с тэгами (TDFA). re2c используется в проектах, где важна скорость работы лексера, например в Ninja и в PHP.

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

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

 , , , ,

skvadrik
()

yyjson 0.10.0

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

Состоялся выпуск 0.10.0 высокопроизводительной библиотеки yyjson, написанной на языке C (стандарт C89), распространяемой по лицензии MIT и предназначенной для чтения и модификации данных в формате JSON (RFC 8259).
Библиотека также поддерживает RFC JSON Pointer, JSON Patch и JSON Merge Patch.

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

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

 , , ,

dataman
()

argparse 3.0

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

Состоялся выпуск 3.0 C++ (стандарт C++17) header-only библиотеки парсинга аргументов командной строки argparse, распространяемой по лицензии MIT.

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

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

 , , , ,

dataman
()

Состоялся релиз 0.0.2 библиотеки PGPC для разработки парсеров на Python

Группа Open Source

PGPC представляет собой библиотеку парсер комбинаторов для Python, вдохновленную Parsec.

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

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

 , ,

anonymous
()

re2c 2.0

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

В понедельник 20 июля вышел релиз re2c – генератора быстрых лексических анализаторов. Основные изменения:

  • Добавлена поддержка языка Go (включается или опцией --lang go для re2c, или в виде отдельной программы re2go). Документация для C и Go генерируется из одного и того же текста, но с разными примерами кода. Полностью переработана подсистема кодогенерации в re2c, что должно облегчить поддержку новых языков в будущем.

  • Добавлена альтернативная система сборки на CMake (спасибо ligfx!). Попытки перевести re2c на CMake предпринимались уже давно, но до ligfx никто не предложил полноценное решение. Старая система сборки на Autotools продолжает поддерживаться и использоваться, и в обозримом будущем нет планов от неё отказаться (отчасти чтобы не создавать проблем разработчикам дистрибутивов, отчасти потому что старая система сборки стабильнее и лаконичнее новой). Обе системы наравне непрерывно тестируются при помощи Travis CI.

  • Добавлена возможность задания интерфейсного кода в конфигурациях при использовании обобщённго АПИ (generic API). Раньше большинство АПИ приходилось задавать в форме функций или функциональных макросов. Теперь их можно задавать в форме произвольных строк с именованными шаблонными параметрами вида @@{name} или просто @@ (если параметр один и не возникает неоднозначности). Стиль АПИ задаётся конфигурацией re2c:api:style (значение functions задаёт функциональный стиль, а free-form – произвольный).

  • Улучшена работа опции -c, --start-conditions, позволяющей совмещать несколько взаимосвязанных лексеров в одном re2c-блоке. Теперь можно использовать обычные блоки наравне с условными и задавать несколько не связанных условных блоков в одном файле. Улучшена работа опции -r, --reuse (повторное использование кода из одного блока в других блоках) в сочетании с опциями -c, --start-conditions и -f, --storable-state (лексер с сохраняемым состоянием, который можно прервать в произвольном месте и продолжить выполнение позже).

  • Исправлена ошибка в недавно добавленном алгоритме обработки конца входных данных (EOF rule), приводившая в редких случаях к неправильной обработке перекрывающихся правил.

  • Упрощён процесс бутстрапа. Раньше система сборки пыталась динамически найти уже собранный re2c, который можно было бы использовать для пересборки самого себя. Это приводило к неправильным зависимостям (поскольку граф зависимостей получался динамическим, чего большинство систем сборки не любит). Теперь чтобы пересобрать лексеры, требуется в явном виде сконфигурировать систему сборки и задать переменную RE2C_FOR_BUILD.

Спасибо всем, кто участвовал в подготовке этого релиза!

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

 , ,

skvadrik
()

re2c 1.2

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

В пятницу 2-го августа вышел релиз re2c — свободного генератора лексических анализаторов для языков C и C++. Напомним, что re2c был написан в 1993 году Питером Бамбулисом как экспериментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встривать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов.

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

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

 , , ,

skvadrik
()

Релиз парсера PHP, написанного на Go

Группа Open Source

php-parser — библиотека для синтаксического разбора исходников PHP в абстрактное синтаксическое дерево. Может использоваться для создания статических анализаторов, утилит рефакторинга и сбора метрик.

Список изменений можно посмотреть по ссылке.

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

 , , ,

z7zmey
()

Парсим Google на Perl (или Google Hack HowTo)

Группа Документация

В статье вы найдете описание метода, позволяющего эффективно посылать запросы серверам Google и обрабатывать ответы. Прилагаются скрипты на Perl в количестве 3 штук, а также список из 106 рабочих анонимайзеров. Ключевые моменты:

  • Как обойти капчу и ограничение на частоту запросов
  • Как собрать прокси и проверить их валидность
  • Как распараллелить посылку запросов
  • Как реализовать возможность приостанавливать скрипт
  • Пишем универсальный парсер

Приведенные скрипты могут быть использованы в аналитических исследованиях, а также автоматизации сбора различного рода информации при помощи поисковой системы Google.

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

 , , , , ,

afiskon
()

Parabix: SIMD инструкции при разборе XML

Группа Open Source

Профессор Роб Камерон отдал миру плод своих трудов, а именно открыл исходные коды Парабикса, парсера XML, использующего SIMD инструкции современных процессоров для ускорения процесса разбора XML. Тесты показывают увеличение скорости разбора в несколько раз.

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

 parabix, , ,

anonymous
()