Dimittis de generante re2c lexicali analysi 1.2

cepit locus release re2c, свободного генератора лексических анализаторов для языков C и C++. Напомним, что re2c был написан в 1993 году Питером Бамбулисом как экспеиментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встривать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов.

Подготовка релиза заняла почти целый год. Большинство времени, как всегда, ушло на разработку теоретической базы и написание
статьи «Efficient POSIX Submatch Extraction on NFA".
Algorithmi in articulo descriptis perficiuntur in bibliotheca experimentali libre2c .
(сборка библиотеки и тестов производительности выключена по умолчанию и включается configure-опцией «—enable-libs»). Библиотека задумана не как конкурент уже существующим проектам, таким как RE2, а как исследовательская площадка для разработки новых
алгоритмов (которые потом могут использоваться в re2c или в других проектах). Также это удобно с точки зрения тестирования, измерения производительности и создания биндингов к другим языкам.

Основные новшества в версии re2c 1.2:

  • Добавлен новый упрощённый способ проверки конца входных данных («EOF rule»). Для этого добавлена конфигурация «re2c:eof»,
    sino vos eligere terminum characteris;
    и специальное правило «$», которое срабатывает если лексер
    feliciter ad finem initus data.
    Historice, re2c electionem praebet plurium methodorum verificationis pro
    finis initibus variae in limitatione, efficientia et simplicitate
    utilibus. Novus modus ordinatur ad simpliciorem scribendam codicem, dum
    manens efficax lateque. Antiquis modis
    adhuc laboratur, et in quibusdam casibus praeferatur.

  • Addidit facultatem includit externum files utendi directivum
    «/*!include:re2c «file.re» */», где «file.re» — это имя включаемго файла. Re2c ищет файлы в директории включащего файла,
    а также в списке путей заданных с помощью опции «-I».
    Documenta inclusa alia imagini possunt includere.
    Re2c предоставляет «стандартные» файлы в директории «include/»
    Exstare - expectatur utiles definitiones ibi cumulare
    expressiones regulares, aliquid simile bibliothecae vexillum.
    Hactenus, opificum rogatu, fasciculus unus cum definitionibus praedicamentorum Unicode additus est.

  • Addidit facultatem generandi header files cum arbitraria
    содержанием при помощи опций «-t —type-header» (или соответствующих
    конфигураций) и новых директив «/*!header:re2c:on*/» и
    «/*!header:re2c:off*/». Это может быть полезно в случаях,
    cum re2c definitiones variabilium, structurarum et macronum generare oporteat;
    in aliis translationibus usus est.

  • Re2c nunc intelligit UTF8 literales et mores classes in expressionibus regularibus.
    По умолчанию, re2c парсит выражения вроде «∀x ∃y» как
    последовательность 1-битных ASCII-символов «e2 88 80 78 20 e2 88 83 79»
    (hex codes), et utentes evadere habent characteres Unicode manually:
    «\\u2200x \\u2203y». Это очень неудобно и неожиданно для многих
    users (ut patet ex constant cimex tradit). Ita nunc
    re2c предоставляет опцию «—input-encoding {ascii | utf8}»,
    которая позволяет изменить поведение и распарсить «∀x ∃y» как
    «2200 78 20 2203 79».

  • Re2c теперь позволяет использовать обычные re2c-блоки в режиме «-r —reuse».
    Hoc commodum est si initus fasciculi multos cuneos continet et solum aliquos ex eis
    necessitates reddi.

  • Nunc forma admonitionum et errorum potes mittere
    с помощью новой опции «—location-format {gnu | msvc}». GNU-формат отображается
    как «filename:line:column:», а MSVC-формат — как «filename(line,column)».
    Haec factura IDE amantibus utilis esse potest.
    Также была добавлена опция «—verbose», которая выводит краткое победоносное сообщение в случае успеха.

  • Доработан режим «совместимости» с flex — исправлены некоторые ошибки разбора и
    falsa operator praecedentia in raris casibus.
    Исторически опция «-F —flex-suppor» позволяет писать код
    mixta stylo flexo et re2c stylo, quae parsing parum difficilis facit.
    Modus flex compatibilitatis raro in novo codice usus est;
    sed re2c pergit ad compatibilitatem retrogradae fulciendam.

  • Оператор вычитания символьных классов «/» теперь применяется
    antequam dilatetur descriptam, quae in pluribus casibus adhibeatur permittit;
    si indoles variabilis longitudinem descriptam adhibetur (exempli gratia UTF8).

  • Scapus output nunc atomice creatus est: re2c fasciculus temporalis primum creat
    et in eo eventum scribit, ac deinde tabellam temporalem ad output renumit
    unam operationem.

  • Documenta confecta et rescripta sunt; in specie, novae adiectae sunt
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и de modis reprimendam finem initus data.
    Nova documenta in forma collecta
    исчерпывающейго одностраничного руководства
    cum exemplis (eidem fontes in manpagina et in documentis interretialibus redduntur).
    Pauperes conatus factae sunt ut promptitudinem loci in phones emendarent.

  • Ex parte tincidunt, re2c subsystem pleniorem acquisivit
    debugging Debugging code nunc erret in release builds and
    может быть включен с помощью configure-опции «—enable-debug».

Source: opennet.ru

Add a comment