Rhyddhau generadur lexer re2c 1.2

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.

  • Cwblhawyd ac ailysgrifennwyd y ddogfennaeth; yn arbennig, ychwanegwyd rhai newydd
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и am ffyrdd o wirio am ddiwedd data mewnbwn.
    Cesglir y ddogfennaeth newydd yn y ffurflen
    исчерпывающейго одностраничного руководства
    gydag enghreifftiau (mae'r un ffynonellau wedi'u rendro yn y manpage ac yn y ddogfennaeth ar-lein).
    Mae ymdrechion gwael wedi'u gwneud i wella darllenadwyedd y wefan ar ffonau.

  • 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».

Ffynhonnell: opennet.ru

Ychwanegu sylw