الافراج عن مولد re2c lexer 1.2

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

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

الميزات الرئيسية الجديدة في re2c 1.2:

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

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

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

  • يتفهم Re2c الآن حرفي UTF8 وفئات الأحرف في التعبيرات العادية.
    بشكل افتراضي ، يوزع re2c تعبيرات مثل "∀x ∃y" مثل
    تسلسل من أحرف ASCII 1 بت "e2 88 80 78 20 e2 88 83 79"
    (الرموز السداسية) ، ويتعين على المستخدمين الهروب من أحرف Unicode يدويًا:
    "\\ u2200x \\ u2203y". هذا غير مريح للغاية وغير متوقع بالنسبة للكثيرين
    المستخدمين (كما يتضح من تقارير الأخطاء المستمرة). و الآن
    يوفر re2c الخيار "- ترميز الإدخال {ascii | utf8} "،
    الذي يسمح لك بتغيير السلوك وتحليل "∀x ∃y" مثل
    "2200 78 20 2203 79".

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

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

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

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

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

  • تمت إضافة الوثائق وإعادة كتابتها ؛ على وجه الخصوص ، الجديد
    فصول حول http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и حول طرق التحقق من نهاية بيانات الإدخال.
    يتم تجميع الوثائق الجديدة كـ
    دليل شامل من صفحة واحدة
    مع أمثلة (يتم تقديم نفس المصادر في صفحة manpage وفي التوثيق عبر الإنترنت).
    تم إجراء محاولات قليلة لتحسين إمكانية قراءة الموقع على الهواتف.

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

المصدر: opennet.ru

إضافة تعليق