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 строк лаконичного кода.
( читать дальше... )