Во понеделник, 20 јули, беше пуштен во продажба re2c, генератор на брз лексички анализатор.
Главни промени:

  • Додадена е поддршка за јазикот Go
    (овозможено или од опцијата --lang go за re2c, или како посебна програма re2go).
    Документацијата за C и Go е генерирана од ист текст, но со различен
    примери на кодови. Потсистемот за генерирање код во re2c е целосно редизајниран, што
    треба да ја олесни поддршката на нови јазици во иднина.

  • Додаден е алтернативен систем за градење за CMake (благодарам ligfx!).
    Обидите да се преведе re2c на CMake се правени долго време, но пред ligfx никој
    понуди целосно решение.
    Стариот систем за градење на Autotools продолжува да се поддржува и користи,
    и во догледна иднина не се планира да се напушти (делумно за да не се создаде
    проблеми за развивачите на дистрибуција, делумно поради стариот систем за градење
    постабилен и поконцизен од новиот).
    Двата системи континуирано се тестираат со помош на Travis CI.

  • Додадена е можност за поставување на код за интерфејс во конфигурации при користење
    генерички API. Претходно, повеќето API требаше да бидат наведени во формуларот
    функции или функционални макроа. Сега тие можат да бидат наведени во форма на произволни
    линии со именувани параметри на шаблон како @@{name} или само @@ (ако
    има само еден параметар и нема двосмисленост). Стилот на API е одреден со конфигурацијата
    re2c:api:style (вредноста на функциите одредува функционален стил, а слободната форма одредува произволен стил).

  • Работата на опцијата -c, --start-conditions е подобрена, овозможувајќи ви да комбинирате неколку
    меѓусебно поврзани лекси во еден блок re2c. Сега можете да користите
    редовни блокови заедно со условните и наведете неколку неповрзани условни
    блокови во една датотека.
    Подобрена работа на опцијата -r, --reuse (повторна употреба на код од еден блок
    во други блокови) во комбинација со опциите -c, --start-conditions и -f, --storable-state
    (наведен лексер кој може да се прекине во која било точка
    и продолжи со извршување подоцна).

  • Поправена грешка во неодамна додадениот алгоритам за крај на внесување
    (правило ЕОФ), што во ретки случаи доведе до неправилна обработка
    правила кои се преклопуваат.

  • Процесот на bootstrap е поедноставен. Претходно, системот за градење веќе се обиде динамички да најде
    изработка на re2c која може да се користи за повторно да се изгради.
    Ова резултираше со неточни зависности (бидејќи графикот на зависност беше
    динамичен, што на повеќето системи за градење не им се допаѓа).
    Сега, за да ги обновите лексите, треба експлицитно
    конфигурирајте го системот за изградба и поставете ја променливата RE2C_FOR_BUILD.

Благодарност до сите што учествуваа во подготовката на ова издание!

Извор: linux.org.ru

Додадете коментар