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

نیا تبصرہ شامل کریں