cymryd lle rhyddhau re2c, свободного генератора лексических анализаторов для языков C и C++. Напомним, что re2c был написан в 1993 году Питером Бамбулисом как экспеиментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встривать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов.
Подготовка релиза заняла почти целый год. Большинство времени, как всегда, ушло на разработку теоретической базы и написание
статьи «Efficient POSIX Submatch Extraction on NFA".
Mae'r algorithmau a ddisgrifir yn yr erthygl yn cael eu gweithredu yn y llyfrgell arbrofol libre2c
(сборка библиотеки и тестов производительности выключена по умолчанию и включается configure-опцией «—enable-libs»). Библиотека задумана не как конкурент уже существующим проектам, таким как RE2, а как исследовательская площадка для разработки новых
алгоритмов (которые потом могут использоваться в re2c или в других проектах). Также это удобно с точки зрения тестирования, измерения производительности и создания биндингов к другим языкам.
Основные новшества в версии re2c 1.2:
Добавлен новый упрощённый способ проверки конца входных данных («EOF rule»). Для этого добавлена конфигурация «re2c:eof»,
yn caniatáu ichi ddewis y nod terfynell,
и специальное правило «$», которое срабатывает если лексер
cyrraedd diwedd y data mewnbwn yn llwyddiannus.
Yn hanesyddol, mae re2c yn darparu dewis o sawl dull dilysu ar gyfer
diwedd mewnbynnau yn amrywio o ran cyfyngiad, effeithlonrwydd a symlrwydd
ceisiadau. Mae'r dull newydd wedi'i gynllunio i symleiddio ysgrifennu cod, tra
tra'n parhau i fod yn effeithiol ac yn berthnasol yn eang. Hen ffyrdd
dal i weithio a gall fod yn well mewn rhai achosion.
Ychwanegwyd y gallu i gynnwys ffeiliau allanol gan ddefnyddio cyfarwyddeb
«/*!include:re2c «file.re» */», где «file.re» — это имя включаемго файла. Re2c ищет файлы в директории включащего файла,
а также в списке путей заданных с помощью опции «-I».
Gall ffeiliau sydd wedi'u cynnwys gynnwys ffeiliau eraill.
Re2c предоставляет «стандартные» файлы в директории «include/»
project - disgwylir y bydd diffiniadau defnyddiol yn cronni yno
ymadroddion rheolaidd, rhywbeth fel y llyfrgell safonol.
Hyd yn hyn, ar gais gweithwyr, ychwanegwyd un ffeil gyda diffiniadau o gategorïau Unicode.
Ychwanegwyd y gallu i gynhyrchu ffeiliau pennawd gyda mympwyol
содержанием при помощи опций «-t —type-header» (или соответствующих
конфигураций) и новых директив «/*!header:re2c:on*/» и
«/*!header:re2c:off*/». Это может быть полезно в случаях,
pan fo angen i re2c gynhyrchu diffiniadau o newidynnau, strwythurau a macros,
a ddefnyddir mewn unedau cyfieithu eraill.
Mae Re2c bellach yn deall llythrennau UTF8 a dosbarthiadau cymeriad mewn ymadroddion rheolaidd.
По умолчанию, re2c парсит выражения вроде «∀x ∃y» как
последовательность 1-битных ASCII-символов «e2 88 80 78 20 e2 88 83 79»
(codau hecs), ac mae'n rhaid i ddefnyddwyr ddianc rhag nodau Unicode â llaw:
«\\u2200x \\u2203y». Это очень неудобно и неожиданно для многих
defnyddwyr (fel y dangosir gan adroddiadau bygiau cyson). Felly nawr
re2c предоставляет опцию «—input-encoding {ascii | utf8}»,
которая позволяет изменить поведение и распарсить «∀x ∃y» как
«2200 78 20 2203 79».
Re2c теперь позволяет использовать обычные re2c-блоки в режиме «-r —reuse».
Mae hyn yn gyfleus os yw'r ffeil mewnbwn yn cynnwys llawer o flociau a dim ond rhai ohonynt
angen eu hailddefnyddio.
Nawr gallwch chi osod fformat rhybuddion a negeseuon gwall
с помощью новой опции «—location-format {gnu | msvc}». GNU-формат отображается
как «filename:line:column:», а MSVC-формат — как «filename(line,column)».
Gall y nodwedd hon fod yn ddefnyddiol i'r rhai sy'n hoff o DRhA.
Также была добавлена опция «—verbose», которая выводит краткое победоносное сообщение в случае успеха.
Доработан режим «совместимости» с flex — исправлены некоторые ошибки разбора и
blaenoriaeth gweithredwr anghywir mewn achosion prin.
Исторически опция «-F —flex-suppor» позволяет писать код
cymysg mewn arddull fflecs ac arddull re2c, sy'n gwneud dosrannu ychydig yn anodd.
Anaml y defnyddir modd cydnawsedd hyblyg mewn cod newydd,
ond y mae re2c yn parhau i'w gefnogi ar gyfer cydnawsedd tuag yn ol.
Оператор вычитания символьных классов «/» теперь применяется
cyn ehangu'r amgodio, sy'n caniatáu iddo gael ei ddefnyddio mewn nifer fwy o achosion,
os defnyddir amgodiad hyd nod amrywiol (er enghraifft UTF8).
Mae'r ffeil allbwn bellach yn cael ei chreu'n atomig: mae re2c yn creu ffeil dros dro yn gyntaf
ac yn ysgrifennu'r canlyniad i mewn iddo, ac yna'n ailenwi'r ffeil dros dro i'r allbwn
un llawdriniaeth.
O safbwynt y datblygwyr, mae re2c wedi caffael is-system fwy cyflawn
dadfygio Mae cod dadfygio bellach wedi'i analluogi mewn adeiladau rhyddhau a
может быть включен с помощью configure-опции «—enable-debug».