Liberazione di re2c lexer generator 1.2

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

Подготовка релиза заняла почти целый год. Большинство времени, как всегда, ушло на разработку теоретической базы и написание
статьи «Efficient POSIX Submatch Extraction on NFA".
L'algoritmi descritti in l'articulu sò implementati in a libreria sperimentale libre2c
(сборка библиотеки и тестов производительности выключена по умолчанию и включается configure-опцией «—enable-libs»). Библиотека задумана не как конкурент уже существующим проектам, таким как RE2, а как исследовательская площадка для разработки новых
алгоритмов (которые потом могут использоваться в re2c или в других проектах). Также это удобно с точки зрения тестирования, измерения производительности и создания биндингов к другим языкам.

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

  • Добавлен новый упрощённый способ проверки конца входных данных («EOF rule»). Для этого добавлена конфигурация «re2c:eof»,
    permette di selezziunà u caratteru terminale,
    и специальное правило «$», которое срабатывает если лексер
    ghjuntu successu à a fine di i dati di input.
    Storicamente, re2c furnisce una scelta di parechji metudi di verificazione per
    fine di inputs varieghja in limitazione, efficienza è simplicità
    applicazioni. U novu mètudu hè designatu per simplificà u codice di scrittura, mentri
    pur essendu efficace è largamente applicabile. Vechji modi
    travaglia sempre è pò esse preferitu in certi casi.

  • Aggiunta a capacità di include i schedari esterni cù una direttiva
    «/*!include:re2c «file.re» */», где «file.re» — это имя включаемго файла. Re2c ищет файлы в директории включащего файла,
    а также в списке путей заданных с помощью опции «-I».
    I schedari inclusi ponu include altri schedari.
    Re2c предоставляет «стандартные» файлы в директории «include/»
    prughjettu - hè previstu chì e definizione utili s'accumuleranu quì
    espressioni rigulari, qualcosa cum'è a libreria standard.
    Finu a ora, à a dumanda di i travagliadori, hè statu aghjuntu un schedariu cù definizioni di categurie Unicode.

  • Aggiunta a capacità di generà fugliali di header cù arbitraria
    содержанием при помощи опций «-t —type-header» (или соответствующих
    конфигураций) и новых директив «/*!header:re2c:on*/» и
    «/*!header:re2c:off*/». Это может быть полезно в случаях,
    quandu re2c hà bisognu di generà definizioni di variàbili, strutture è macros,
    usatu in altre unità di traduzzione.

  • Re2c capisce avà i letterali UTF8 è e classi di caratteri in espressioni regulari.
    По умолчанию, re2c парсит выражения вроде «∀x ∃y» как
    последовательность 1-битных ASCII-символов «e2 88 80 78 20 e2 88 83 79»
    (codici esadecimale), è l'utilizatori anu da scappà i caratteri Unicode manualmente:
    «\\u2200x \\u2203y». Это очень неудобно и неожиданно для многих
    utilizatori (cum'è evidenza da rapporti di bug custanti). Allora avà
    re2c предоставляет опцию «—input-encoding {ascii | utf8}»,
    которая позволяет изменить поведение и распарсить «∀x ∃y» как
    «2200 78 20 2203 79».

  • Re2c теперь позволяет использовать обычные re2c-блоки в режиме «-r —reuse».
    Questu hè convenientu se u schedariu di input cuntene parechji blocchi è solu alcuni di elli
    deve esse riutilizzatu.

  • Avà vi ponu stabilisce u furmatu di avvirtimenti è missaghji errore
    с помощью новой опции «—location-format {gnu | msvc}». GNU-формат отображается
    как «filename:line:column:», а MSVC-формат — как «filename(line,column)».
    Questa funzione pò esse utile per l'amatori IDE.
    Также была добавлена опция «—verbose», которая выводит краткое победоносное сообщение в случае успеха.

  • Доработан режим «совместимости» с flex — исправлены некоторые ошибки разбора и
    precedenza di l'operatore sbagliata in casi rari.
    Исторически опция «-F —flex-suppor» позволяет писать код
    mischju in stile flex è stile re2c, chì rende l'analisi un pocu difficiule.
    U modu di cumpatibilità Flex hè raramente utilizatu in u novu codice,
    ma re2c cuntinueghja à sustene per a cumpatibilità inversa.

  • Оператор вычитания символьных классов «/» теперь применяется
    prima di espansione a codificazione, chì permette di esse usata in un numeru maiò di casi,
    s'ellu hè aduprata una codificazione di caratteri variabile (per esempiu UTF8).

  • U schedariu di output hè avà creatu atomicu: re2c crea prima un schedariu tempurale
    è scrive u risultatu in questu, è poi rinomina u schedariu pruvisoriu à l'output
    una operazione.

  • A documentazione hè stata cumpletata è riscritta; in particulare, sò stati aghjuntu novi
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и circa modi per verificà a fine di i dati di input.
    A nova documentazione hè recullata in a forma
    исчерпывающейго одностраничного руководства
    cù esempi (i stessi fonti sò resi in a manpage è in a documentazione in linea).
    Poveri tentativi sò stati fatti per migliurà a leghjibilità di u situ nantu à i telefoni.

  • Da u puntu di vista di i sviluppatori, re2c hà acquistatu un sottosistema più cumpletu
    debugging U codice di debugging hè avà disattivatu in e versioni di liberazione è
    может быть включен с помощью configure-опции «—enable-debug».

Source: opennet.ru

Add a comment