re2c 1.2

Cümə günü, avqustun 2-də C və C++ dilləri üçün leksik analizatorların pulsuz generatoru olan re2c-nin buraxılışı buraxıldı. Re2c 1993-cü ildə Peter Bamboulis tərəfindən çox sürətli leksik analizatorların eksperimental generatoru kimi yazılmışdır, yaradılan kodun sürəti və analizatorları mövcud kod bazasına asanlıqla və səmərəli şəkildə daxil etməyə imkan verən qeyri-adi çevik istifadəçi interfeysi ilə digər generatorlardan fərqlənir. O vaxtdan bəri layihə icma tərəfindən hazırlanmışdır və formal qrammatikalar və sonlu dövlət maşınları sahəsində təcrübələr və tədqiqatlar üçün platforma olmaqda davam edir.

1.2 versiyasında əsas yeniliklər:

  • Daxil edilmiş məlumatların sonunu yoxlamaq üçün yeni (sadələşdirilmiş) üsul əlavə edildi
    (İngiliscə “EOF qaydası”).
    Bunun üçün re2c:eof konfiqurasiyası əlavə edildi,
    terminal simvolunu seçməyə imkan verir,
    və lexer əgər yanğınlar xüsusi $ qayda
    giriş məlumatlarının sonuna uğurla çatdı.
    Tarixən re2c bir neçə yoxlama metodu seçimini təmin edir
    məhdudiyyət, səmərəlilik və sadəlik baxımından dəyişən girişlərin sonu
    tətbiqlər. Yeni üsul kodun yazılmasını asanlaşdırmaq üçün nəzərdə tutulub
    effektiv və geniş tətbiq oluna bilsə də. Köhnə yollar
    hələ də işləyir və bəzi hallarda üstünlük verilə bilər.

  • Direktivdən istifadə edərək xarici faylları daxil etmək imkanı əlavə edildi
    /*!include:re2c "file.re" */ burada file.re
    bu, daxil olan faylın adıdır. Re2c fayl kataloqu daxil olmaqla faylları axtarır,
    eləcə də -I seçimindən istifadə etməklə müəyyən edilmiş yollar siyahısında.
    Daxil edilmiş fayllar digər faylları da əhatə edə bilər.
    Re2c daxil/kataloqda "standart" faylları təmin edir
    layihə - orada faydalı təriflərin toplanacağı gözlənilir
    normal ifadələr, standart kitabxana kimi bir şey.
    İndiyə qədər işçilərin tələbi ilə Unicode kateqoriyalarının tərifləri olan bir fayl əlavə edilmişdir.

  • Özbaşına başlıq faylları yaratmaq imkanı əlavə edildi
    məzmun -t --type-header seçimlərindən (və ya uyğun
    konfiqurasiyalar) və yeni direktivlər /*!header:re2c:on*/ və
    /*!başlıq:re2c:off*/. Bu, olduğu hallarda faydalı ola bilər
    re2c dəyişənlərin, strukturların və makroların təriflərini yaratmalı olduqda,
    digər tərcümə vahidlərində istifadə olunur.

  • Re2c indi normal ifadələrdə UTF8 hərfi və simvol siniflərini başa düşür.
    Varsayılan olaraq, re2c "∀x ∃y" kimi ifadələri təhlil edir.
    1 bitlik ASCII simvollarının ardıcıllığı e2 88 80 78 20 e2 88 83 79
    (hex kodlar) və istifadəçilər Unicode simvollarından əl ilə qaçmalıdırlar:
    "u2200x u2203y". Bu, çoxları üçün çox əlverişsiz və gözlənilməzdir
    istifadəçilər (daimi səhv hesabatları sübut edir). İndi isə
    re2c --input-encoding seçimini təmin edir ,
    davranışı dəyişdirməyə və "∀x ∃y" kimi təhlil etməyə imkan verir
    2200 78 20 2203 79.

  • Re2c indi -r --reuse rejimində müntəzəm re2c bloklarından istifadə etməyə imkan verir.
    Giriş faylında çoxlu bloklar və onlardan yalnız bəziləri varsa, bu rahatdır
    təkrar istifadə etmək lazımdır.

  • İndi xəbərdarlıqların və səhv mesajlarının formatını təyin edə bilərsiniz
    yeni --location-format seçimindən istifadə etməklə . GNU formatı göstərilir
    fayl adı:sətir:sütun: və fayl adı (sətir, sütun) kimi MSVC formatı.
    Bu xüsusiyyət IDE həvəskarları üçün faydalı ola bilər.
    Uğurlu olarsa, qısa bir qələbə mesajı çap edən --verbose seçimi də əlavə edildi.

  • Flex ilə "uyğunluq" rejimi təkmilləşdirildi - bəzi təhlil səhvləri düzəldildi və
    nadir hallarda səhv operator üstünlüyü.
    Tarixən -F --flex-support seçimi sizə kod yazmağa imkan verirdi
    çevik üslubda və re2c üslubunda qarışdırılır, bu da təhlili bir az çətinləşdirir.
    Flex uyğunluq rejimi yeni kodda nadir hallarda istifadə olunur,
    lakin re2c geriyə uyğunluq üçün onu dəstəkləməyə davam edir.

  • Simvol sinfinin çıxma operatoru / indi tətbiq olunur
    daha çox hallarda istifadə etməyə imkan verən kodlaşdırmanı genişləndirmədən əvvəl,
    dəyişən simvol uzunluğunun kodlaşdırılmasından istifadə edilərsə (məsələn, UTF8).

  • Çıxış faylı indi atomik şəkildə yaradılmışdır: re2c əvvəlcə müvəqqəti fayl yaradır
    və nəticəni ona yazır və sonra müvəqqəti faylın adını çıxışa dəyişdirir
    bir əməliyyat.

  • Sənədlər tamamlandı və yenidən yazıldı; xüsusilə yeniləri əlavə edildi
    fəsillər tamponun doldurulması haqqında
    и daxil edilmiş məlumatların sonunu yoxlamaq yolları haqqında.
    Yeni sənədlər formada toplanır
    hərtərəfli bir səhifəlik təlimat
    nümunələrlə (eyni mənbələr mansəhifədə və onlayn sənədlərdə göstərilmişdir).
    Telefonlarda saytın oxunuşunu yaxşılaşdırmaq üçün zəif cəhdlər edilmişdir.

  • Tərtibatçıların nöqteyi-nəzərindən re2c daha tam bir alt sistem əldə etdi
    sazlama Sazlama kodu indi buraxılış quruluşlarında deaktiv edilib və
    konfiqurasiya seçimi --enable-debug istifadə edərək aktivləşdirilə bilər.

Bu buraxılış uzun müddət çəkdi - demək olar ki, bir il.
Vaxtın çox hissəsi, həmişə olduğu kimi, nəzəri çərçivənin işlənib hazırlanmasına və yazı yazmağa sərf olunurdu
Məqalə "NFA-da Effektiv POSIX Submatch Extraction".
Məqalədə təsvir olunan alqoritmlər libre2c eksperimental kitabxanasında həyata keçirilir
(kitabxana və meyarların qurulması standart olaraq qeyri-aktivdir və konfiqurasiya seçimi ilə aktivləşdirilir
--enable-libs). Kitabxana mövcud kitabxanaya rəqib kimi düşünülmür
RE2 kimi layihələr, lakin yenilərinin inkişafı üçün tədqiqat platforması kimi
alqoritmlər (bundan sonra re2c və ya digər layihələrdə istifadə edilə bilər).
O, həmçinin sınaq, müqayisə və digər dillərə bağlamalar yaratmaq baxımından da əlverişlidir.

Bu buraxılışın baş tutmasına kömək edən hər kəsə re2c tərtibatçılarından təşəkkürlər,
və ümumiyyətlə cəmiyyətə ideyalar, səhv hesabatları, yamalar, mənəviyyat və s. ;]

Mənbə: linux.org.ru

Добавить комментарий