re2c 1.2

2-avgust, juma kuni C va C++ tillari uchun leksik analizatorlarning bepul generatori re2c chiqarildi. Eslatib oʻtamiz, re2c 1993 yilda Piter Bamboulis tomonidan juda tez leksik analizatorlarning eksperimental generatori sifatida yozilgan boʻlib, boshqa generatorlardan yaratilgan kod tezligi va gʻayrioddiy moslashuvchan foydalanuvchi interfeysi bilan ajralib turadi. mavjud kod bazasi. O'shandan beri loyiha hamjamiyat tomonidan ishlab chiqilgan va rasmiy grammatika va chekli holat mashinalari sohasida tajribalar va tadqiqotlar uchun platforma bo'lib qolmoqda.

1.2 versiyasidagi asosiy yangiliklar:

  • Kirish ma'lumotlarining tugashini tekshirishning yangi (soddalashtirilgan) usuli qo'shildi
    (inglizcha “EOF qoidasi”).
    Buning uchun re2c:eof konfiguratsiyasi qo'shildi,
    terminal belgisini tanlash imkonini beradi,
    va maxsus $ qoida, agar lexer olov
    kirish ma'lumotlarining oxiriga muvaffaqiyatli yetdi.
    Tarixiy jihatdan re2c bir nechta tekshirish usullarini tanlash imkonini beradi
    cheklash, samaradorlik va soddaligi bilan farq qiluvchi kirishlarning oxiri
    ilovalar. Yangi usul kod yozishni soddalashtirish uchun mo'ljallangan, esa
    samarali va keng qo'llanilishi mumkin bo'lgan holda. Eski usullar
    hali ham ishlaydi va ba'zi hollarda afzal bo'lishi mumkin.

  • Direktiv yordamida tashqi fayllarni kiritish imkoniyati qo'shildi
    /*!include:re2c "file.re" */ bu yerda file.re
    bu kiritilgan faylning nomi. Re2c fayl katalogidagi fayllarni qidiradi,
    shuningdek -I opsiyasi yordamida ko'rsatilgan yo'llar ro'yxatida.
    Kiritilgan fayllar boshqa fayllarni o'z ichiga olishi mumkin.
    Re2c include/katalogida "standart" fayllarni taqdim etadi
    loyiha - u erda foydali ta'riflar to'planishi kutilmoqda
    muntazam iboralar, standart kutubxona kabi narsa.
    Hozircha, ishchilarning iltimosiga binoan, Unicode toifalari ta'riflari bilan bitta fayl qo'shildi.

  • Sarlavha fayllarini o'zboshimchalik bilan yaratish imkoniyati qo'shildi
    -t --type-header opsiyalaridan foydalangan holda kontent (yoki tegishli
    konfiguratsiyalar) va yangi direktivalar /*!header:re2c:on*/ va
    /*!sarlavha:re2c:off*/. Bu holatlarda foydali bo'lishi mumkin
    re2c o'zgaruvchilar, tuzilmalar va makroslarning ta'riflarini yaratishi kerak bo'lganda,
    boshqa tarjima birliklarida ishlatiladi.

  • Re2c endi UTF8 harflarini va oddiy iboralardagi belgilar sinflarini tushunadi.
    Odatiy bo'lib, re2c "∀x ∃y" kabi ifodalarni ajratadi.
    1 bitli ASCII belgilar ketma-ketligi e2 88 80 78 20 e2 88 83 79
    (hex kodlari) va foydalanuvchilar Unicode belgilaridan qo'lda qochishlari kerak:
    "u2200x u2203y". Bu ko'pchilik uchun juda noqulay va kutilmagan
    foydalanuvchilar (doimiy xato hisobotlari dalolat beradi). Xo'sh, hozir
    re2c --input-kodlash variantini taqdim etadi ,
    bu sizga xatti-harakatni o'zgartirish va "∀x ∃y" sifatida tahlil qilish imkonini beradi
    2200 78 20 2203 79.

  • Re2c endi oddiy re2c bloklarini -r --reuse rejimida ishlatishga imkon beradi.
    Agar kirish faylida ko'plab bloklar bo'lsa va ulardan faqat ba'zilari bo'lsa, bu qulay
    qayta foydalanish kerak.

  • Endi siz ogohlantirishlar va xato xabarlari formatini o'rnatishingiz mumkin
    yangi --location-format opsiyasidan foydalanish . GNU formati ko'rsatiladi
    fayl nomi: satr: ustun: va MSVC formati fayl nomi (satr, ustun) sifatida.
    Bu xususiyat IDE ixlosmandlari uchun foydali bo'lishi mumkin.
    Agar muvaffaqiyatli bo'lsa, qisqa g'alaba xabarini chop etadigan --verbose varianti ham qo'shildi.

  • Flex bilan "moslik" rejimi yaxshilandi - ba'zi tahlil xatolar tuzatildi va
    kamdan-kam hollarda noto'g'ri operator ustunligi.
    Tarixiy jihatdan, -F --flex-support opsiyasi sizga kod yozishga imkon berdi
    flex uslubi va re2c uslubida aralashtiriladi, bu esa tahlil qilishni biroz qiyinlashtiradi.
    Flex moslik rejimi yangi kodda kamdan-kam qo'llaniladi,
    lekin re2c uni orqaga qarab muvofiqligi uchun qo'llab-quvvatlashda davom etmoqda.

  • Belgilar sinfini ayirish operatori / endi amal qiladi
    ko'proq hollarda foydalanishga imkon beruvchi kodlashni kengaytirishdan oldin,
    agar o'zgaruvchan belgilar uzunligi kodlash ishlatilsa (masalan, UTF8).

  • Chiqish fayli endi atomik tarzda yaratiladi: re2c avval vaqtinchalik faylni yaratadi
    va natijani unga yozadi va keyin vaqtinchalik faylni chiqish nomiga o'zgartiradi
    bitta operatsiya.

  • Hujjatlar to'ldirildi va qayta yozildi; xususan, yangilari qo'shildi
    boblar buferni to'ldirish haqida
    и kiritilgan ma'lumotlarning tugashini tekshirish usullari haqida.
    Yangi hujjatlar shaklda yig'iladi
    bir sahifali to'liq qo'llanma
    misollar bilan (xuddi shu manbalar manpageda va onlayn hujjatlarda ko'rsatilgan).
    Telefonlarda saytni o'qish qobiliyatini yaxshilash uchun yomon urinishlar qilingan.

  • Ishlab chiquvchilar nuqtai nazaridan, re2c to'liqroq quyi tizimga ega bo'ldi
    disk raskadrovka Nosozliklarni tuzatish kodi endi versiya tuzilmalarida va
    sozlash --enable-debug opsiyasi yordamida yoqish mumkin.

Ushbu nashr uzoq vaqt talab qildi - deyarli bir yil.
Ko'p vaqt, har doimgidek, nazariy asosni ishlab chiqish va yozishga sarflangan
maqolalar "NFA-da samarali POSIX submatch ekstraktsiyasi".
Maqolada tasvirlangan algoritmlar libre2c eksperimental kutubxonasida amalga oshiriladi
(kutubxona va mezonlarni yaratish sukut bo'yicha o'chirib qo'yilgan va sozlash opsiyasi orqali yoqilgan
--enable-libs). Kutubxona mavjud kutubxonaga raqobatchi sifatida tasavvur qilinmagan
RE2 kabi loyihalar, lekin yangilarini ishlab chiqish uchun tadqiqot platformasi sifatida
algoritmlar (keyin re2c yoki boshqa loyihalarda foydalanish mumkin).
Bu, shuningdek, test, ko'rsatkichlar va boshqa tillarga bog'lash nuqtai nazaridan ham qulaydir.

Re2c dasturchilaridan ushbu nashrni chiqarishda yordam bergan barchaga rahmat,
va umuman jamiyatga g'oyalar, xato hisobotlari, yamalar, ma'naviyat va boshqalar uchun. ;]

Manba: linux.org.ru

a Izoh qo'shish