Fa'asa'olotoina o le fa'aupuga o le re2c 1.2 lexical analyzer generator

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

Подготовка релиза заняла почти целый год. Большинство времени, как всегда, ушло на разработку теоретической базы и написание
статьи «Efficient POSIX Submatch Extraction on NFA".
O algorithms o loʻo faʻamatalaina i le tusiga o loʻo faʻatinoina i le faletusi faʻataʻitaʻi libre2c
(сборка библиотеки и тестов производительности выключена по умолчанию и включается configure-опцией «—enable-libs»). Библиотека задумана не как конкурент уже существующим проектам, таким как RE2, а как исследовательская площадка для разработки новых
алгоритмов (которые потом могут использоваться в re2c или в других проектах). Также это удобно с точки зрения тестирования, измерения производительности и создания биндингов к другим языкам.

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

  • Добавлен новый упрощённый способ проверки конца входных данных («EOF rule»). Для этого добавлена конфигурация «re2c:eof»,
    fa'atagaina oe e filifili le uiga fa'agata,
    и специальное правило «$», которое срабатывает если лексер
    na taunu'u manuia i le fa'ai'uga o fa'amaumauga tu'ufa'atasi.
    I tala fa'asolopito, e tu'uina atu e le re2c se filifiliga o ni metotia fa'amaonia mo
    fa'ai'uga o mea fa'aoga e fesuisuia'i i tapula'a, lelei ma faigofie
    talosaga. O le auala fou ua mamanuina e faafaigofie ai le tusitusi code, ao
    a'o tumau lelei ma fa'aoga lautele. Auala tuai
    galue pea ma atonu e sili atu i nisi tulaga.

  • Faʻaopoopo le mafai e aofia ai faila i fafo e faʻaaoga ai se faʻatonuga
    «/*!include:re2c «file.re» */», где «file.re» — это имя включаемго файла. Re2c ищет файлы в директории включащего файла,
    а также в списке путей заданных с помощью опции «-I».
    O faila e aofia ai e mafai ona aofia ai isi faila.
    Re2c предоставляет «стандартные» файлы в директории «include/»
    poloketi - e fa'amoemoe o le a fa'aputuina fa'amatalaga aoga iina
    fa'amatalaga masani, se mea e pei o le faletusi masani.
    I le taimi nei, i luga o le talosaga a tagata faigaluega, e tasi le faila ma faʻamatalaga o vaega Unicode ua faʻaopoopoina.

  • Fa'aopoopo le tomai e fa'atupu ai faila fa'aulu fa'atasi
    содержанием при помощи опций «-t —type-header» (или соответствующих
    конфигураций) и новых директив «/*!header:re2c:on*/» и
    «/*!header:re2c:off*/». Это может быть полезно в случаях,
    pe a manaʻomia e re2c ona faʻatupuina faʻamatalaga o fesuiaiga, fausaga ma macros,
    faaaogaina i isi iunite faaliliu.

  • Ua malamalama nei Re2c i le UTF8 literals ma vasega amio i faʻamatalaga masani.
    По умолчанию, re2c парсит выражения вроде «∀x ∃y» как
    последовательность 1-битных ASCII-символов «e2 88 80 78 20 e2 88 83 79»
    (hex codes), ma e tatau i tagata faaaoga ona sola ese ma le lima ole mataitusi Unicode:
    «\\u2200x \\u2203y». Это очень неудобно и неожиданно для многих
    tagata faʻaoga (e pei ona faʻamaonia e lipoti faʻasalalau faifai pea). O lea la
    re2c предоставляет опцию «—input-encoding {ascii | utf8}»,
    которая позволяет изменить поведение и распарсить «∀x ∃y» как
    «2200 78 20 2203 79».

  • Re2c теперь позволяет использовать обычные re2c-блоки в режиме «-r —reuse».
    E faigofie pe afai o le faila faila o loʻo i ai le tele o poloka ma naʻo nisi o latou
    e mana'omia ona toe fa'aaogaina.

  • O lea e mafai ona e setiina le faatulagaga o lapataiga ma savali sese
    с помощью новой опции «—location-format {gnu | msvc}». GNU-формат отображается
    как «filename:line:column:», а MSVC-формат — как «filename(line,column)».
    Atonu e aoga lenei vaega mo tagata fiafia i le IDE.
    Также была добавлена опция «—verbose», которая выводит краткое победоносное сообщение в случае успеха.

  • Доработан режим «совместимости» с flex — исправлены некоторые ошибки разбора и
    le sa'o le fa'amuamua o le fa'afoe i tulaga e seasea.
    Исторически опция «-F —flex-suppor» позволяет писать код
    fa'afefiloi ile sitaili fa'alelei ma le sitaili re2c, lea e fai si faigata ai le fa'avasegaina.
    E seasea fa'aogaina le fa'aogaina o le fa'aogaina i le tulafono fou,
    ae o loʻo faʻaauau pea ona lagolagoina e re2c mo le fetaui i tua.

  • Оператор вычитания символьных классов «/» теперь применяется
    aʻo leʻi faʻalauteleina le encoding, lea e mafai ai ona faʻaaogaina i se numera tele o mataupu,
    pe afai e fa'aogaina se fa'asologa o le umi o le amio (mo se fa'ata'ita'iga UTF8).

  • O le faila faila ua faia nei i le atomically: re2c faia muamua se faila le tumau
    ma tusi le i'uga i totonu, ona toe fa'aigoa lea o le faila le tumau i le mea e fai
    tasi le taotoga.

  • Ua mae'a fa'amaumauga ma toe tusia; aemaise lava, na faʻaopoopoina mea fou
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и e uiga i auala e siaki ai le iʻuga o faʻamatalaga faʻapipiʻi.
    O fa'amaumauga fou e aoina ile fomu
    исчерпывающейго одностраничного руководства
    faʻatasi ai ma faʻataʻitaʻiga (o punaoa lava e tasi o loʻo tuʻuina atu i le manpage ma totonu o faʻamaumauga i luga ole laiga).
    Le lelei taumafaiga na faia e faʻaleleia atili le faitau o le saite i luga o telefoni.

  • Mai le vaaiga a le au atiaʻe, ua maua e le re2c se subsystem sili atu ona atoatoa
    debugging Debugging code ua le atoatoa nei i le tatalaina o fale ma
    может быть включен с помощью configure-опции «—enable-debug».

puna: opennet.ru

Faaopoopo i ai se faamatalaga