Rilaxx tal-ġeneratur tal-analizzatur lessiku re2c 1.2

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

Подготовка релиза заняла почти целый год. Большинство времени, как всегда, ушло на разработку теоретической базы и написание
статьи «Efficient POSIX Submatch Extraction on NFA".
L-algoritmi deskritti fl-artikolu huma implimentati fil-librerija sperimentali libre2c
(сборка библиотеки и тестов производительности выключена по умолчанию и включается configure-опцией «—enable-libs»). Библиотека задумана не как конкурент уже существующим проектам, таким как RE2, а как исследовательская площадка для разработки новых
алгоритмов (которые потом могут использоваться в re2c или в других проектах). Также это удобно с точки зрения тестирования, измерения производительности и создания биндингов к другим языкам.

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

  • Добавлен новый упрощённый способ проверки конца входных данных («EOF rule»). Для этого добавлена конфигурация «re2c:eof»,
    jippermettilek tagħżel il-karattru tat-terminal,
    и специальное правило «$», которое срабатывает если лексер
    laħaq b'suċċess it-tmiem tad-dejta tal-input.
    Storikament, re2c jipprovdi għażla ta 'diversi metodi ta' verifika għal
    tmiem ta' inputs li jvarjaw fil-limitazzjoni, l-effiċjenza u s-sempliċità
    applikazzjonijiet. Il-metodu l-ġdid huwa ddisinjat biex jissimplifika l-kitba tal-kodiċi, filwaqt li
    filwaqt li tibqa’ effettiva u applikabbli b’mod wiesa’. Modi qodma
    għadhom jaħdmu u jistgħu jkunu preferuti f'xi każijiet.

  • Żid il-ħila li tinkludi fajls esterni bl-użu ta 'direttiva
    «/*!include:re2c «file.re» */», где «file.re» — это имя включаемго файла. Re2c ищет файлы в директории включащего файла,
    а также в списке путей заданных с помощью опции «-I».
    Fajls inklużi jistgħu jinkludu fajls oħra.
    Re2c предоставляет «стандартные» файлы в директории «include/»
    proġett - huwa mistenni li hemm definizzjonijiet utli jakkumulaw
    espressjonijiet regolari, xi ħaġa bħall-librerija standard.
    S'issa, fuq talba tal-ħaddiema, ġie miżjud fajl wieħed b'definizzjonijiet ta' kategoriji Unicode.

  • Miżjud il-ħila li tiġġenera fajls header b'arbitrarju
    содержанием при помощи опций «-t —type-header» (или соответствующих
    конфигураций) и новых директив «/*!header:re2c:on*/» и
    «/*!header:re2c:off*/». Это может быть полезно в случаях,
    meta re2c jeħtieġ li jiġġenera definizzjonijiet ta’ varjabbli, strutturi u makro,
    użati f'unitajiet ta' traduzzjoni oħra.

  • Re2c issa jifhem letterali UTF8 u klassijiet ta 'karattri f'espressjonijiet regolari.
    По умолчанию, re2c парсит выражения вроде «∀x ∃y» как
    последовательность 1-битных ASCII-символов «e2 88 80 78 20 e2 88 83 79»
    (kodiċi hex), u l-utenti jridu jaħarbu l-karattri Unicode manwalment:
    «\\u2200x \\u2203y». Это очень неудобно и неожиданно для многих
    utenti (kif evidenzjat minn rapporti ta 'bug kostanti). Allura issa
    re2c предоставляет опцию «—input-encoding {ascii | utf8}»,
    которая позволяет изменить поведение и распарсить «∀x ∃y» как
    «2200 78 20 2203 79».

  • Re2c теперь позволяет использовать обычные re2c-блоки в режиме «-r —reuse».
    Dan huwa konvenjenti jekk il-fajl tal-input fih ħafna blokki u wħud minnhom biss
    jeħtieġ li jerġa' jintuża.

  • Issa tista 'tissettja l-format ta' twissijiet u messaġġi ta 'żball
    с помощью новой опции «—location-format {gnu | msvc}». GNU-формат отображается
    как «filename:line:column:», а MSVC-формат — как «filename(line,column)».
    Din il-karatteristika tista 'tkun utli għal min iħobb l-IDE.
    Также была добавлена опция «—verbose», которая выводит краткое победоносное сообщение в случае успеха.

  • Доработан режим «совместимости» с flex — исправлены некоторые ошибки разбора и
    preċedenza mhux korretta tal-operatur f'każijiet rari.
    Исторически опция «-F —flex-suppor» позволяет писать код
    imħallat fl-istil flex u stil re2c, li jagħmel parsing ftit diffiċli.
    Il-mod ta 'kompatibilità Flex rarament jintuża f'kodiċi ġdid,
    iżda re2c tkompli tappoġġjaha għal kompatibilità b'lura.

  • Оператор вычитания символьных классов «/» теперь применяется
    qabel tespandi l-kodifikazzjoni, li tippermetti li tintuża f'numru akbar ta 'każijiet,
    jekk tintuża kodifikazzjoni ta' tul ta' karattri varjabbli (pereżempju UTF8).

  • Il-fajl tal-output issa huwa maħluq atomikament: re2c joħloq fajl temporanju l-ewwel
    u jikteb ir-riżultat fih, u mbagħad tibdel l-isem tal-fajl temporanju għall-output
    operazzjoni waħda.

  • Id-dokumentazzjoni tlestiet u miktuba mill-ġdid; b'mod partikolari, ġew miżjuda oħrajn ġodda
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и dwar modi biex tiċċekkja għat-tmiem tad-dejta tal-input.
    Id-dokumentazzjoni l-ġdida tinġabar fil-formola
    исчерпывающейго одностраничного руководства
    b'eżempji (l-istess sorsi huma mogħtija fil-manpage u fid-dokumentazzjoni onlajn).
    Saru tentattivi ħżiena biex titjieb il-leġibbiltà tas-sit fuq it-telefowns.

  • Mill-aspett tal-iżviluppaturi, re2c akkwista sottosistema aktar kompleta
    debugging Il-kodiċi tad-debugging issa huwa diżattivat fil-bini tar-rilaxx u
    может быть включен с помощью configure-опции «—enable-debug».

Sors: opennet.ru

Żid kumment