re2c ಲೆಕ್ಸರ್ ಜನರೇಟರ್ 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

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ