في يوم الجمعة الموافق 2 أغسطس، تم إطلاق إصدار re2c، وهو مولد مجاني للمحللين المعجميين للغتي C وC++. تمت كتابة Re2c في عام 1993 بواسطة بيتر بامبوليس كمولد تجريبي لمحللات معجمية سريعة جدًا، تتميز عن المولدات الأخرى بسرعة الكود الذي تم إنشاؤه وواجهة مستخدم مرنة بشكل غير عادي تسمح للمحللين بأن يتم دمجهم بسهولة وكفاءة في قاعدة كود موجودة. منذ ذلك الحين، تم تطوير المشروع من قبل المجتمع ولا يزال بمثابة منصة للتجارب والأبحاث في مجال القواعد الرسمية وآلات الحالة المحدودة.

الابتكارات الرئيسية في الإصدار 1.2:

  • تمت إضافة طريقة جديدة (مبسطة) للتحقق من انتهاء البيانات المدخلة
    (الإنجليزية "قاعدة EOF").
    لهذا، تمت إضافة التكوين re2c:eof،
    مما يسمح لك بتحديد حرف طرفي ،
    وقاعدة $ خاصة يتم تفعيلها إذا كان المعجم
    وصلت بنجاح إلى نهاية بيانات الإدخال.
    تاريخيًا ، توفر re2c عدة طرق للتحقق منها
    نهاية المدخلات متفاوتة من حيث محدوديتها وكفاءتها وبساطتها
    التطبيقات. تم تصميم الطريقة الجديدة لتبسيط كتابة التعليمات البرمجية ، بينما
    بينما تظل فعالة وقابلة للتطبيق على نطاق واسع. الطرق القديمة
    لا يزال يعمل وقد يكون مفضلًا في بعض الحالات.

  • تمت إضافة القدرة على تضمين الملفات الخارجية باستخدام التوجيه
    /*!include:re2c "file.re" */ حيث file.re
    هذا هو اسم ملف التضمين. يبحث Re2c عن الملفات الموجودة في دليل الملفات بما في ذلك،
    وكذلك في قائمة المسارات المحددة باستخدام الخيار -I.
    يمكن أن تتضمن الملفات المضمنة ملفات أخرى.
    يوفر Re2c ملفات "قياسية" في دليل التضمين/
    مشروع - من المتوقع أن تتراكم التعريفات المفيدة هناك
    التعبيرات العادية ، شيء من روح المكتبة القياسية.
    حتى الآن ، بناءً على طلب العمال ، تمت إضافة ملف واحد يحتوي على تعريفات لفئات Unicode.

  • تمت إضافة القدرة على إنشاء ملفات رأس بشكل عشوائي
    المحتوى باستخدام خيارات -t --type-header (أو الخيار المناسب
    التكوينات) والتوجيهات الجديدة /*!header:re2c:on*/ و
    /*!الرأس:re2c:إيقاف*/. قد يكون هذا مفيدًا في الحالات التي
    عندما تحتاج re2c إلى إنشاء تعريفات للمتغيرات والهياكل ووحدات الماكرو ،
    المستخدمة في وحدات الترجمة الأخرى.

  • يتفهم Re2c الآن حرفي UTF8 وفئات الأحرف في التعبيرات العادية.
    بشكل افتراضي، يقوم re2c بتوزيع التعبيرات مثل "∀x ∃y" كـ.
    تسلسل أحرف ASCII ذات بت واحد e1 2 88 80 78 e20 2 88 83
    (الرموز السداسية) ، ويتعين على المستخدمين الهروب من أحرف Unicode يدويًا:
    "u2200x u2203y". هذا غير مريح للغاية وغير متوقع بالنسبة للكثيرين
    المستخدمين (كما يتضح من تقارير الأخطاء المستمرة). و الآن
    يوفر re2c خيار --input-encoding ,
    والذي يسمح لك بتغيير السلوك وتحليل "∀x ∃y" كـ
    2200 78 20 2203 79.

  • يسمح Re2c الآن باستخدام كتل re2c العادية في وضع -r --reuse.
    هذا مناسب إذا كان ملف الإدخال يحتوي على العديد من الكتل ، وبعضها فقط
    يحتاج إلى إعادة استخدامها.

  • يمكنك الآن ضبط تنسيق التحذيرات ورسائل الخطأ
    باستخدام خيار --location-format الجديد . يتم عرض تنسيق جنو
    كاسم الملف: السطر: العمود:، وتنسيق MSVC كاسم ملف (سطر، عمود).
    قد تكون هذه الميزة مفيدة لمحبي IDE.
    تمت إضافة خيار --verbose أيضًا، والذي يطبع رسالة نصر قصيرة في حالة نجاحه.

  • تم تحسين وضع "التوافق" مع flex - تم إصلاح بعض أخطاء التحليل و
    أسبقية تشغيل غير صحيحة في حالات نادرة.
    تاريخيًا، كان خيار -F --flex-support يسمح لك بكتابة التعليمات البرمجية
    ممزوج بأسلوب مرن وأسلوب re2c ، مما يجعل تحليله صعبًا بعض الشيء.
    نادرًا ما يتم استخدام وضع التوافق المرن في الكود الجديد ،
    لكن re2c يواصل دعمه للتوافق مع الإصدارات السابقة.

  • ينطبق الآن عامل الطرح لفئة الأحرف /
    قبل فك الترميز مما يسمح باستخدامه في حالات أكثر ،
    إذا تم استخدام ترميز متغير الطول (مثل UTF8).

  • يتم الآن إنشاء ملف الإخراج بشكل تلقائي: ينشئ re2c أولاً ملفًا مؤقتًا
    ويكتب النتيجة إليها ، ثم يعيد تسمية الملف المؤقت إلى الإخراج
    عملية واحدة.

  • تمت إضافة الوثائق وإعادة كتابتها ؛ على وجه الخصوص ، الجديد
    رئيس حول ملء المخزن المؤقت
    и حول طرق التحقق من نهاية بيانات الإدخال.
    يتم تجميع الوثائق الجديدة كـ
    دليل شامل من صفحة واحدة
    مع أمثلة (يتم تقديم نفس المصادر في صفحة manpage وفي التوثيق عبر الإنترنت).
    تم إجراء محاولات قليلة لتحسين إمكانية قراءة الموقع على الهواتف.

  • من وجهة نظر المطور ، تمتلك re2c نظامًا فرعيًا أكثر اكتمالاً
    التصحيح. تم تعطيل كود التصحيح الآن في إصدارات و
    يمكن تمكينه باستخدام خيار التكوين --enable-debug.

استغرق هذا الإصدار وقتًا طويلاً - لمدة عام كامل تقريبًا.
تم إنفاق معظم الوقت، كما هو الحال دائمًا، على تطوير الإطار النظري والكتابة
مقالات "استخراج تطابقات POSIX بكفاءة على NFA".
يتم تنفيذ الخوارزميات الموضحة في المقالة في مكتبة libre2c التجريبية
(يتم تعطيل إنشاء المكتبة والمعايير بشكل افتراضي ويتم تمكينه بواسطة خيار التكوين
--enable-libs). لا يُنظر إلى المكتبة على أنها منافس للمكتبة الموجودة
مشاريع مثل RE2، ولكن كمنصة بحثية لتطوير جديد
الخوارزميات (والتي يمكن استخدامها بعد ذلك في re2c أو في مشاريع أخرى).
كما أنها ملائمة من حيث الاختبار والمعايير وإنشاء روابط للغات الأخرى.

شكرًا من مطوري re2c لكل من ساعد في حدوث هذا الإصدار،
وللمجتمع بشكل عام للحصول على الأفكار وتقارير الأخطاء والتصحيحات والروح المعنوية وما إلى ذلك. ;]

المصدر: linux.org.ru

إضافة تعليق