[#] Lug 0.5.0
robot(spnet, 1) — All
2025-03-27 17:44:04


19 марта состоялся выпуск C++ библиотеки [ Lug ]( https://github.com/jwtowner/lug ) , реализующей встраиваемый [ предметно-ориентированный язык ]( https://ru.wikipedia.org/wiki/Предметно-ориентированный_язык ) для выражения синтаксических анализаторов в виде расширенных [ грамматик синтаксических выражений ]( https://ru.wikipedia.org/wiki/Грамматика,_разбирающая_выражение ) , и распространяемой по лицензии MIT.

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

• Естественный синтаксис, напоминающий языки внешних генераторов парсеров, с поддержкой атрибутов и семантических действий.

• Возможность работы с контекстно-зависимыми грамматиками с таблицами символов, условиями и синтаксическими предикатами.

• Сгенерированные парсеры компилируются в байткод и выполняются в виртуальной машине синтаксического анализа.

• Чёткое разделение синтаксических и лексических правил с возможностью настройки неявного пропуска пробельных символов.

• Поддержка прямой и косвенной левой рекурсии, с уровнями старшинства для разграничения подвыражений со смешанными левой и правой рекурсиями.

• Полная поддержка разбора текста в формате UTF-8, включая уровень 1 и частичное соответствие уровню 2 технического стандарта [ UTS #18 Unicode Regular Expressions ]( https://www.unicode.org/reports/tr18 ) .

• Обработка ошибок и восстановление с помощью помеченных сбоев, правил восстановления и обработчиков ошибок.

• Автоматическое отслеживание номеров строк и колонок, настраиваемая ширина и выравнивание табуляции.

• Header-only-библиотека, использующая только стандартную библиотеку и возможности стандарта C++17. Перспективно совместима со стандартами C++20 и C++23.

• Относительно небольшой размер библиотеки, с целью содержания общего количества строк во всех заголовочных файлах на уровне менее 6000 строк лаконичного кода.

( [ читать дальше... ]( https://www.linux.org.ru/news/development/17925650#cut ) )