ਰੀ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*/». Это может быть полезно в случаях,
    ਜਦੋਂ re2c ਨੂੰ ਵੇਰੀਏਬਲ, ਬਣਤਰ ਅਤੇ ਮੈਕਰੋ ਦੀ ਪਰਿਭਾਸ਼ਾ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ,
    ਹੋਰ ਅਨੁਵਾਦ ਇਕਾਈਆਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।

  • Re2c ਹੁਣ ਨਿਯਮਤ ਸਮੀਕਰਨਾਂ ਵਿੱਚ 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» позволяет писать код
    ਫਲੈਕਸ ਸ਼ੈਲੀ ਅਤੇ re2c ਸ਼ੈਲੀ ਵਿੱਚ ਮਿਲਾਇਆ ਗਿਆ ਹੈ, ਜੋ ਪਾਰਸਿੰਗ ਨੂੰ ਥੋੜਾ ਮੁਸ਼ਕਲ ਬਣਾਉਂਦਾ ਹੈ।
    ਨਵੇਂ ਕੋਡ ਵਿੱਚ ਫਲੈਕਸ ਅਨੁਕੂਲਤਾ ਮੋਡ ਘੱਟ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ,
    ਪਰ re2c ਬੈਕਵਰਡ ਅਨੁਕੂਲਤਾ ਲਈ ਇਸਦਾ ਸਮਰਥਨ ਕਰਨਾ ਜਾਰੀ ਰੱਖਦਾ ਹੈ।

  • Оператор вычитания символьных классов «/» теперь применяется
    ਏਨਕੋਡਿੰਗ ਨੂੰ ਫੈਲਾਉਣ ਤੋਂ ਪਹਿਲਾਂ, ਜੋ ਇਸਨੂੰ ਵੱਡੀ ਗਿਣਤੀ ਵਿੱਚ ਕੇਸਾਂ ਵਿੱਚ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ,
    ਜੇਕਰ ਇੱਕ ਵੇਰੀਏਬਲ ਅੱਖਰ ਲੰਬਾਈ ਇੰਕੋਡਿੰਗ ਵਰਤੀ ਜਾਂਦੀ ਹੈ (ਉਦਾਹਰਨ ਲਈ UTF8)।

  • ਆਉਟਪੁੱਟ ਫਾਈਲ ਹੁਣ ਐਟੋਮਿਕ ਤੌਰ ਤੇ ਬਣਾਈ ਗਈ ਹੈ: re2c ਪਹਿਲਾਂ ਇੱਕ ਅਸਥਾਈ ਫਾਈਲ ਬਣਾਉਂਦਾ ਹੈ
    ਅਤੇ ਇਸ ਵਿੱਚ ਨਤੀਜਾ ਲਿਖਦਾ ਹੈ, ਅਤੇ ਫਿਰ ਆਉਟਪੁੱਟ ਵਿੱਚ ਅਸਥਾਈ ਫਾਈਲ ਦਾ ਨਾਮ ਬਦਲਦਾ ਹੈ
    ਇੱਕ ਓਪਰੇਸ਼ਨ.

  • ਦਸਤਾਵੇਜ਼ ਨੂੰ ਪੂਰਾ ਕੀਤਾ ਗਿਆ ਸੀ ਅਤੇ ਦੁਬਾਰਾ ਲਿਖਿਆ ਗਿਆ ਸੀ; ਖਾਸ ਤੌਰ 'ਤੇ, ਨਵੇਂ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ ਸਨ
    главы про http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и ਇਨਪੁਟ ਡੇਟਾ ਦੇ ਅੰਤ ਦੀ ਜਾਂਚ ਕਰਨ ਦੇ ਤਰੀਕਿਆਂ ਬਾਰੇ.
    ਨਵੇਂ ਦਸਤਾਵੇਜ਼ ਫਾਰਮ ਵਿੱਚ ਇਕੱਠੇ ਕੀਤੇ ਗਏ ਹਨ
    исчерпывающейго одностраничного руководства
    ਉਦਾਹਰਣਾਂ ਦੇ ਨਾਲ (ਉਹੀ ਸਰੋਤ ਮੈਨਪੇਜ ਅਤੇ ਔਨਲਾਈਨ ਦਸਤਾਵੇਜ਼ਾਂ ਵਿੱਚ ਪੇਸ਼ ਕੀਤੇ ਗਏ ਹਨ)।
    ਫੋਨਾਂ 'ਤੇ ਸਾਈਟ ਦੀ ਪੜ੍ਹਨਯੋਗਤਾ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਮਾੜੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ ਕੀਤੀਆਂ ਗਈਆਂ ਹਨ।

  • ਡਿਵੈਲਪਰਾਂ ਦੇ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਤੋਂ, re2c ਨੇ ਇੱਕ ਹੋਰ ਸੰਪੂਰਨ ਉਪ-ਸਿਸਟਮ ਹਾਸਲ ਕਰ ਲਿਆ ਹੈ
    ਡੀਬੱਗਿੰਗ ਡੀਬਗਿੰਗ ਕੋਡ ਹੁਣ ਰੀਲੀਜ਼ ਬਿਲਡ ਅਤੇ ਵਿੱਚ ਅਸਮਰੱਥ ਹੈ
    может быть включен с помощью configure-опции «—enable-debug».

ਸਰੋਤ: opennet.ru

ਇੱਕ ਟਿੱਪਣੀ ਜੋੜੋ