מעלדונג פון די רע2ק 1.2 לעקסיקאַל אַנאַליזער גענעראַטאָר

פארגעקומען מעלדונג re2c, свободного генератора лексических анализаторов для языков C и C++. Напомним, что re2c был написан в 1993 году Питером Бамбулисом как экспеиментальный генератор очень быстрых лексических анализаторов, отличающийся от других генераторов скоростью сгенерированного кода и необычно гибким пользовательским интерфейсом, который позволяет легко и эффективно встривать анализаторы в существующую кодовую базу. С тех пор проект развивается сообществом и продолжает оставаться площадкой для экспериментов и исследований в области формальных грамматик и конечных автоматов.

Подготовка релиза заняла почти целый год. Большинство времени, как всегда, ушло на разработку теоретической базы и написание
статьи «Efficient POSIX Submatch Extraction on NFA".
די אַלגערידאַמז דיסקרייבד אין דעם אַרטיקל זענען ימפּלאַמענאַד אין די יקספּערמענאַל ביבליאָטעק libre2c
(сборка библиотеки и тестов производительности выключена по умолчанию и включается configure-опцией «—enable-libs»). Библиотека задумана не как конкурент уже существующим проектам, таким как RE2, а как исследовательская площадка для разработки новых
алгоритмов (которые потом могут использоваться в re2c или в других проектах). Также это удобно с точки зрения тестирования, измерения производительности и создания биндингов к другим языкам.

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

  • Добавлен новый упрощённый способ проверки конца входных данных («EOF rule»). Для этого добавлена конфигурация «re2c:eof»,
    אַלאַוז איר צו אויסקלייַבן דעם וואָקזאַל כאַראַקטער,
    и специальное правило «$», которое срабатывает если лексер
    הצלחה ריטשט די סוף פון די אַרייַנשרייַב דאַטן.
    היסטאָריש, re2c גיט אַ ברירה פון עטלעכע וועראַפאַקיישאַן מעטהאָדס פֿאַר
    סוף פון ינפּוץ וועריינג אין באַגרענעצונג, עפעקטיווקייַט און פּאַשטעס
    אַפּלאַקיישאַנז. די נייַע אופֿן איז דיזיינד צו פאַרפּאָשעטערן שרייבן קאָד, בשעת
    בשעת רוען עפעקטיוו און וויידלי אָנווענדלעך. אַלטע וועגן
    נאָך אַרבעט און קען זיין בילכער אין עטלעכע קאַסעס.

  • צוגעגעבן די פיייקייט צו אַרייַננעמען פונדרויסנדיק טעקעס ניצן אַ דירעקטיוו
    «/*!include:re2c «file.re» */», где «file.re» — это имя включаемго файла. Re2c ищет файлы в директории включащего файла,
    а также в списке путей заданных с помощью опции «-I».
    אַרייַנגערעכנט טעקעס קען אַרייַננעמען אנדערע טעקעס.
    Re2c предоставляет «стандартные» файлы в директории «include/»
    פּרויעקט - עס איז דערוואַרט אַז נוציק זוך וועט אָנקלייַבן דאָרט
    רעגולער אויסדרוקן, עפּעס ווי די נאָרמאַל ביבליאָטעק.
    ביז איצט, אויף דער בקשה פון טוערס, איין טעקע מיט דעפֿיניציע פון ​​אוניקאָד קאַטעגאָריעס איז צוגעגעבן.

  • צוגעגעבן די פיייקייט צו דזשענערייט כעדער טעקעס מיט אַרביטראַריש
    содержанием при помощи опций «-t —type-header» (или соответствующих
    конфигураций) и новых директив «/*!header:re2c:on*/» и
    «/*!header:re2c:off*/». Это может быть полезно в случаях,
    ווען רע2ק דאַרף צו דזשענערייט זוך פון וועריאַבאַלז, סטראַקטשערז און מאַקראָס,
    געוויינט אין אנדערע איבערזעצונג וניץ.

  • רע2ק איצט פֿאַרשטיין UTF8 ליטעראַל און כאַראַקטער קלאסן אין רעגולער אויסדרוקן.
    По умолчанию, re2c парсит выражения вроде «∀x ∃y» как
    последовательность 1-битных ASCII-символов «e2 88 80 78 20 e2 88 83 79»
    (העקס קאָודז), און יוזערז האָבן צו אַנטלויפן אוניקאָד אותיות מאַניואַלי:
    «\\u2200x \\u2203y». Это очень неудобно и неожиданно для многих
    ניצערס (ווי עווידאַנסט דורך קעסיידערדיק זשוק ריפּאָרץ). אַזוי איצט
    re2c предоставляет опцию «—input-encoding {ascii | utf8}»,
    которая позволяет изменить поведение и распарсить «∀x ∃y» как
    «2200 78 20 2203 79».

  • Re2c теперь позволяет использовать обычные re2c-блоки в режиме «-r —reuse».
    דאָס איז באַקוועם אויב די אַרייַנשרייַב טעקע כּולל פילע בלאַקס און בלויז עטלעכע פון ​​זיי
    דאַרף זיין ריוזד.

  • איצט איר קענען שטעלן די פֿאָרמאַט פון וואָרנינגז און טעות אַרטיקלען
    с помощью новой опции «—location-format {gnu | msvc}». GNU-формат отображается
    как «filename:line:column:», а MSVC-формат — как «filename(line,column)».
    דער שטריך קען זיין נוציק פֿאַר IDE ליבהאבערס.
    Также была добавлена опция «—verbose», которая выводит краткое победоносное сообщение в случае успеха.

  • Доработан режим «совместимости» с flex — исправлены некоторые ошибки разбора и
    פאַלש אָפּעראַטאָר פּריידאַנס אין זעלטן קאַסעס.
    Исторически опция «-F —flex-suppor» позволяет писать код
    געמישט אין פלעקס סטיל און רע2ק סטיל, וואָס מאכט פּאַרסינג אַ ביסל שווער.
    פלעקס קאַמפּאַטאַבילאַטי מאָדע איז ראַרעלי געניצט אין נייַ קאָד,
    אָבער רע2ק האלט צו שטיצן עס פֿאַר קאַפּויער קאַמפּאַטאַבילאַטי.

  • Оператор вычитания символьных классов «/» теперь применяется
    איידער יקספּאַנדינג די קאָדירונג, וואָס אַלאַוז עס צו זיין געוויינט אין אַ גרעסערע נומער פון קאַסעס,
    אויב אַ וועריאַבאַל כאַראַקטער לענג קאָדירונג איז געניצט (למשל UTF8).

  • דער רעזולטאַט טעקע איז איצט אַטאָמישי באשאפן: רע2ק קריייץ אַ צייַטווייַליק טעקע ערשטער
    און שרייבט דער רעזולטאַט אין עס, און דעמאָלט ריניימז די צייַטווייַליק טעקע צו דער רעזולטאַט
    איין אָפּעראַציע.

  • די דאקומענטאציע איז פארענדיקט און איבערגעשריבן; באזונדער ם זײנע ן צוגעקומע ן נײע
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и וועגן וועגן צו קאָנטראָלירן פֿאַר די סוף פון אַרייַנשרייַב דאַטן.
    די נייַע דאַקיומענטיישאַן איז געזאמלט אין די פאָרעם
    исчерпывающейго одностраничного руководства
    מיט ביישפילן (די זעלבע מקורים זענען רענדערד אין די מאַנפּאַגע און אין די אָנליין דאַקיומענטיישאַן).
    נעבעך פרווון זענען געמאכט צו פֿאַרבעסערן די רידאַביליטי פון דעם פּלאַץ אויף פאָנעס.

  • פֿון דער מיינונג פון דעוועלאָפּערס, re2c האט קונה אַ מער פולשטענדיק סאַבסיסטעם
    דיבאַגינג דיבאַגינג קאָד איז איצט פאַרקריפּלט אין מעלדונג בויען און
    может быть включен с помощью configure-опции «—enable-debug».

מקור: opennet.ru

לייגן אַ באַמערקונג