У петак, 2. августа, објављено је издање ре2ц, бесплатног генератора лексичких анализатора за језике Ц и Ц++. Подсећања ради, ре2ц је 1993. године написао Петер Бамбоулис као експериментални генератор веома брзих лексичких анализатора, који се од других генератора разликује по брзини генерисаног кода и необично флексибилном корисничком интерфејсу који омогућава да се анализатори лако и ефикасно уграде у постојећа база кода. Од тада, пројекат је развила заједница и наставља да буде платформа за експерименте и истраживања у области формалних граматика и коначних машина.

Главне иновације у верзији 1.2:

  • Додан је нови (поједностављени) начин за проверу краја улазних података
    (енглески „ЕОФ руле“).
    За ово је додата конфигурација ре2ц:еоф,
    омогућава вам да изаберете терминални карактер,
    и посебно $ правило које се активира ако лексер
    успешно дошао до краја улазних података.
    Историјски гледано, ре2ц пружа избор од неколико метода верификације за
    крај улаза који се разликују по ограничењима, ефикасности и једноставности
    апликације. Нова метода је дизајнирана да поједностави писање кода, док
    остајући делотворни и широко применљиви. Стари начини
    и даље раде и могу бити пожељније у неким случајевима.

  • Додата је могућност укључивања спољних датотека помоћу директиве
    /*!инцлуде:ре2ц "филе.ре" */ где филе.ре
    ово је име укључене датотеке. Ре2ц тражи датотеке у укључујући директоријум датотека,
    као и на листи путања наведених помоћу опције -И.
    Укључене датотеке могу укључивати друге датотеке.
    Ре2ц обезбеђује "стандардне" датотеке у директоријуму инцлуде/
    пројекат – очекује се да ће се ту акумулирати корисне дефиниције
    регуларни изрази, нешто попут стандардне библиотеке.
    До сада је, на захтев радника, додат један фајл са дефиницијама Уницоде категорија.

  • Додата могућност генерисања датотека заглавља са произвољним
    садржај користећи опције -т --типе-хеадер (или одговарајуће
    конфигурације) и нове директиве /*!хеадер:ре2ц:он*/ и
    /*!хеадер:ре2ц:офф*/. Ово може бити корисно у случајевима када
    када ре2ц треба да генерише дефиниције променљивих, структура и макроа,
    користи се у другим преводилачким јединицама.

  • Ре2ц сада разуме УТФ8 литерале и класе знакова у регуларним изразима.
    Подразумевано, ре2ц анализира изразе као што је "∀к ∃и" као.
    секвенца 1-битних АСЦИИ знакова е2 88 80 78 20 е2 88 83 79
    (хексадецимални кодови), а корисници морају ручно да избегну Уницоде знакове:
    "у2200к у2203и". Ово је за многе веома незгодно и неочекивано
    корисника (о чему сведоче стални извештаји о грешкама). Па сад
    ре2ц пружа опцију --инпут-енцодинг ,
    што вам омогућава да промените понашање и анализирате "∀к ∃и" као
    КСНУМКС КСНУМКС КСНУМКС КСНУМКС КСНУМКС.

  • Ре2ц сада дозвољава употребу редовних ре2ц блокова у режиму -р --реусе.
    Ово је згодно ако улазна датотека садржи много блокова и само неке од њих
    треба поново користити.

  • Сада можете подесити формат упозорења и порука о грешкама
    користећи нову опцију --лоцатион-формат . Приказује се ГНУ формат
    као име датотеке:линија:колона: и МСВЦ формат као име датотеке(ред,колона).
    Ова функција може бити корисна за љубитеље ИДЕ-а.
    Додата је и опција --вербосе, која штампа кратку поруку о победи ако је успешна.

  • Режим "компатибилности" са флексом је побољшан - неке грешке при рашчлањивању су поправљене и
    нетачан приоритет оператора у ретким случајевима.
    Историјски гледано, опција -Ф --флек-суппорт вам је омогућавала да пишете код
    помешано у флек стилу и ре2ц стилу, што чини рашчлањивање мало тешким.
    Режим флексибилне компатибилности се ретко користи у новом коду,
    али ре2ц наставља да га подржава за компатибилност уназад.

  • Сада се примењује оператор одузимања класе карактера /
    пре проширења кодирања, што омогућава да се користи у већем броју случајева,
    ако се користи кодирање променљиве дужине карактера (на пример УТФ8).

  • Излазна датотека се сада креира атомски: ре2ц прво креира привремену датотеку
    и уписује резултат у њега, а затим преименује привремену датотеку у излаз
    једна операција.

  • Документација је комплетирана и преписана; посебно су додани нови
    поглавља о пуњењу бафера
    и о начинима провере краја улазних података.
    Нова документација се прикупља у обрасцу
    свеобухватан приручник на једној страници
    са примерима (исти извори су приказани у ман страници и у онлајн документацији).
    Учињени су лоши покушаји да се побољша читљивост сајта на телефонима.

  • Са становишта програмера, ре2ц је добио потпунији подсистем
    отклањање грешака Код за отклањање грешака је сада онемогућен у верзијама издања и
    може се омогућити помоћу опције конфигурисања --енабле-дебуг.

Ово издање је трајало дуго - скоро целу годину.
Највише времена, као и увек, утрошено је на развијање теоријског оквира и писање
Чланак „Ефикасно издвајање ПОСИКС субматцх на НФА“.
Алгоритми описани у чланку имплементирани су у експерименталну библиотеку либре2ц
(изградња библиотеке и мерила је подразумевано онемогућена и омогућена опцијом конфигурисања
--енабле-либс). Библиотека није замишљена као конкурент постојећој
пројекте попут РЕ2, али као истраживачку платформу за развој нових
алгоритми (који се затим могу користити у ре2ц или у другим пројектима).
Такође је згодно са становишта тестирања, бенчмарка и креирања веза за друге језике.

Хвала од ре2ц програмера свима који су помогли да се ово издање догоди,
и заједници уопште за идеје, извештаје о грешкама, закрпе, морал итд. ;]

Извор: линук.орг.ру

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