Re2c leksik analizator generatorining chiqarilishi 1.2
bo'lib o'tdi reliz re2c, C va C++ tillari uchun bepul leksik analizator generatori. Eslatib o'tamiz, re2c 1993 yilda Piter Bambulis tomonidan juda tez leksik analizatorlarning eksperimental generatori sifatida yozilgan bo'lib, yaratilgan kod tezligi va analizatorlarni mavjud kodga oson va samarali integratsiya qilish imkonini beruvchi noodatiy moslashuvchan foydalanuvchi interfeysi bilan boshqa generatorlardan farq qiladi. asos. O'shandan beri loyiha hamjamiyat tomonidan ishlab chiqilgan va rasmiy grammatika va chekli holat mashinalari sohasida tajribalar va tadqiqotlar uchun platforma bo'lib qolmoqda.
Chiqarishga tayyorgarlik deyarli bir yil davom etdi. 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
(kutubxonani qurish va unumdorlik testlari sukut bo'yicha o'chirib qo'yilgan va "βenable-libs" konfiguratsiya opsiyasi orqali yoqilgan). Kutubxona RE2 kabi mavjud loyihalarga raqobatchi sifatida emas, balki yangilarini ishlab chiqish uchun tadqiqot platformasi sifatida mo'ljallangan.
algoritmlar (keyin re2c yoki boshqa loyihalarda foydalanish mumkin). Sinov, ishlashni o'lchash va boshqa tillarga bog'lanishlarni yaratish nuqtai nazaridan ham qulay.
re2c 1.2 versiyasidagi asosiy yangiliklar:
Kirish ma'lumotlarining oxirini tekshirishning yangi soddalashtirilgan usuli qo'shildi ("EOF qoidasi"). Buning uchun "re2c: eof" konfiguratsiyasi qo'shildi,
terminal belgisini tanlash imkonini beradi,
va maxsus qoida "$", qaysi lexer bo'lsa tetiklenir
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 erda "file.re" - kiritiladigan fayl 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/" katalogidagi "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
βe1 2 88 80 78 e20 2 88 83β 79 bitli ASCII belgilar ketma-ketligi
(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-encoding {ascii | utf8}",
bu sizga xatti-harakatni o'zgartirish va "βx βy" ni 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 {gnu |" opsiyasi yordamida msvc}". GNU formati ko'rsatiladi
"fayl nomi: qator: ustun:" va MSVC formati "fayl nomi (satr, ustun)" sifatida.
Bu xususiyat IDE ixlosmandlari uchun foydali bo'lishi mumkin.
"--verbose" varianti ham qo'shildi, agar muvaffaqiyatli bo'lsa, qisqa g'alaba xabarini ko'rsatadi.
Flex bilan "moslik" rejimi yaxshilandi - ba'zi tahlil xatolar tuzatildi va
kamdan-kam hollarda noto'g'ri operator ustunligi.
Tarixiy jihatdan, "-F --flex-suppor" opsiyasi sizga kod yozish imkonini 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.
Endi "/" belgilar sinfini ayirish operatori 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.
Ishlab chiquvchilar nuqtai nazaridan, re2c to'liqroq quyi tizimga ega bo'ldi
disk raskadrovka Nosozliklarni tuzatish kodi endi versiya tuzilmalarida va
"--enable-debug" konfiguratsiya opsiyasi yordamida yoqish mumkin.