У петак, 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ц програмера свима који су помогли да се ово издање догоди,
и заједници уопште за идеје, извештаје о грешкама, закрпе, морал итд. ;]