re2c lexer generator 2.0 buraxılışı

Baş verdi buraxın re2c 2.0, C və C++ üçün pulsuz leksik analizator generatoru. re2c layihəsi ilk olaraq 1993-cü ildə Peter Bamboulis tərəfindən çox sürətli leksik analizatorların eksperimental generatoru kimi yaradılmışdır, digər generatorlardan yaradılan kodun sürəti və qeyri-adi çevik istifadəçi interfeysi ilə fərqlənir ki, bu da təhlilçiləri mövcud kod bazasına asanlıqla və səmərəli şəkildə inteqrasiya etməyə imkan verir. . O vaxtdan bəri layihə icma tərəfindən hazırlanmışdır və formal qrammatikalar və dövlət maşınları sahəsində təcrübə və tədqiqat platforması olmaqda davam edir.

Əsas dəyişikliklər:

  • Go dili üçün əlavə dəstək (ya re2c üçün "-lang go" seçimi ilə, ya da ayrıca re2go proqramı kimi aktivləşdirilir). C və Go üçün sənədlər eyni mətndən, lakin fərqli kod nümunələri ilə yaradılıb. Re2c-də kod yaratma alt sistemi tamamilə yenidən işlənmişdir ki, bu da gələcəkdə yeni dilləri dəstəkləməyi asanlaşdırmalıdır.
  • CMake-də alternativ qurma sistemi əlavə edildi (təşəkkürlər ligfx!). Re2c-i CMake-ə tərcümə etmək cəhdləri uzun müddətdir ki, edilmişdir, lakin ligfx-dən əvvəl heç kim tam bir həll təklif etməmişdir. Autotools-da köhnə qurma sistemi dəstəklənməyə və istifadə olunmağa davam edir və yaxın gələcəkdə ondan imtina etmək planları yoxdur (qismən paylama tərtibatçıları üçün problemlərin qarşısını almaq üçün, qismən ona görə ki, köhnə quruluş sistemi yeni sistemdən daha sabit və daha qısadır. ). Hər iki sistem eyni dərəcədə davamlı olaraq Travis CI istifadə edərək sınaqdan keçirilir.
  • Ümumi API (ümumi API) istifadə edərkən konfiqurasiyalarda interfeys kodunu müəyyən etmək imkanı əlavə edildi. Keçmişdə əksər API-lər funksiyalar və ya funksiya makroları şəklində müəyyən edilməli idi. İndi onlar "@@{name}" və ya sadəcə olaraq "@@" formasının adlandırılmış şablon parametrləri ilə ixtiyari sətirlər şəklində göstərilə bilər (yalnız bir parametr varsa və qeyri-müəyyənlik yoxdursa). API üslubu re2c:api:style konfiqurasiyası ilə müəyyən edilir (funksiyaların dəyəri funksional üslubu müəyyən edir, sərbəst forma dəyəri isə ixtiyaridir).
  • "-c", "--start-conditions" variantının təkmilləşdirilmiş işləməsi, bir-biri ilə əlaqəli bir neçə leksi bir re2c blokunda birləşdirməyə imkan verir. İndi siz şərti bloklarla yanaşı normal bloklardan da istifadə edə və bir faylda bir-biri ilə əlaqəsi olmayan bir neçə şərti blok təyin edə bilərsiniz. "-c", "--start-conditions" və "-f", "--storable-" ilə birlikdə "-r", "--reuse" (bir blokdan kodun başqa bloklarda təkrar istifadəsi) seçiminin təkmilləşdirilmiş işləməsi. dövlət" seçimləri (ixtiyari bir nöqtədə kəsilə bilən və sonradan davam etdirilə bilən vəziyyətli lekser).
  • Nadir hallarda üst-üstə düşən qaydaların yanlış işlənməsinə səbəb olan bu yaxınlarda əlavə edilmiş girişin sonu emal alqoritmində (EOF qaydası) səhv düzəldildi.
  • Sadələşdirilmiş yükləmə prosesi. Əvvəllər tikinti sistemi dinamik olaraq özünü yenidən qurmaq üçün istifadə oluna bilən artıq qurulmuş re2c tapmağa çalışdı. Bu, səhv asılılıqlarla nəticələndi (çünki asılılıq qrafiki dinamik oldu, əksər quruluş sistemləri bunu bəyənmir). İndi, lekserləri yenidən qurmaq üçün siz qurma sistemini açıq şəkildə konfiqurasiya etməli və RE2C_FOR_BUILD dəyişənini təyin etməlisiniz.

Mənbə: opennet.ru

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