Первый выпуск scan, библиотеки разбора текста для C++ с построением конечного автомата при компиляции
Опубликован первый выпуск библиотеки scan (0.1.0), разбирающей текст в значения по шаблону, известному на этапе компиляции. Шаблон или формат записывается как аргумент шаблона C++ и превращается при компиляции в размеченный детерминированный конечный автомат (tagged deterministic finite automaton, TDFA), обход которого разворачивается по состояниям в код на этапе компиляции с использованием шаблонов C++. Результатом выполнения является значение запрошенного типа. Код проекта написан на C++23 и распространяется под лицензией GPLv3. import scan; // Совпадает ли вся строка. Каждая точка входа — ещё и адаптор диапазона. scan::match‹»[a-z]+@[a-z.]+»>(address); address | scan::match‹»[a-z]+@[a-z.]+»>; // С группами. const auto found = scan::match‹»([0-9]+)-([a-z]+)»>(«42-abc»); found.get‹1>().to_view(); // «42» // Начало … Читать далее Первый выпуск scan, библиотеки разбора текста для C++ с построением конечного автомата при компиляции
