В понедельник 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.

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

ប្រភព: linux.org.ru

បន្ថែមមតិយោបល់