re2c 1.2

2 Ağustos Cuma günü, C ve C++ dilleri için ücretsiz bir sözcük analizörü oluşturucusu olan re2c'nin sürümü yayınlandı. Re2c, 1993 yılında Peter Bamboulis tarafından çok hızlı sözcüksel analizörlerin deneysel bir oluşturucusu olarak yazılmıştır; oluşturulan kodun hızı ve analizörlerin mevcut kod tabanına kolayca ve verimli bir şekilde yerleştirilmesine olanak tanıyan alışılmadık derecede esnek bir kullanıcı arayüzü ile diğer oluşturuculardan ayrılır. O zamandan beri proje topluluk tarafından geliştirildi ve biçimsel dilbilgisi ve sonlu durum makineleri alanında deneyler ve araştırmalar için bir platform olmaya devam ediyor.

Sürüm 1.2'deki ana yenilikler:

  • Giriş verilerinin sonunu kontrol etmenin yeni (basitleştirilmiş) bir yolu eklendi
    (İngilizce “EOF kuralı”).
    Bunun için re2c:eof konfigürasyonu eklendi,
    terminal karakterini seçmenizi sağlar,
    ve Lexer'ın çalışması durumunda etkinleşen özel bir $ kuralı
    Giriş verilerinin sonuna başarıyla ulaştı.
    Geçmişte, re2c aşağıdakiler için çeşitli doğrulama yöntemleri sunar:
    sınırlama, verimlilik ve basitlik bakımından farklılık gösteren girdilerin sonu
    uygulamalar. Yeni yöntem kod yazmayı basitleştirmek için tasarlandı.
    etkili ve yaygın olarak uygulanabilir olmaya devam ediyor. Eski yollar
    hala çalışıyor ve bazı durumlarda tercih edilebiliyor.

  • Bir direktif kullanarak harici dosyaları dahil etme yeteneği eklendi
    /*!include:re2c "dosya.re" */ burada dosya.re
    bu, içerme dosyasının adıdır. Re2c, dahil edilen dosya dizinindeki dosyaları arar,
    -I seçeneği kullanılarak belirtilen yollar listesinde olduğu gibi.
    Dahil edilen dosyalar başka dosyalar da içerebilir.
    Re2c, include/ dizininde "standart" dosyalar sağlar
    proje - burada faydalı tanımların birikmesi bekleniyor
    düzenli ifadeler, standart kütüphaneye benzer bir şey.
    Şu ana kadar çalışanların isteği üzerine Unicode kategorilerinin tanımlarını içeren bir dosya eklendi.

  • İsteğe bağlı başlık dosyaları oluşturma yeteneği eklendi
    -t --type-header seçeneklerini (veya uygun
    yapılandırmalar) ve yeni yönergeler /*!header:re2c:on*/ ve
    /*!başlık:re2c:kapalı*/. Bu, aşağıdaki durumlarda yararlı olabilir:
    re2c'nin değişkenlerin, yapıların ve makroların tanımlarını üretmesi gerektiğinde,
    diğer çeviri birimlerinde kullanılır.

  • Re2c artık UTF8 değişmezlerini ve normal ifadelerdeki karakter sınıflarını anlıyor.
    Re2c varsayılan olarak "∀x ∃y" gibi ifadeleri ayrıştırır.
    1 bitlik ASCII karakter dizisi e2 88 80 78 20 e2 88 83 79
    (onaltılık kodlar) ve kullanıcıların Unicode karakterlerinden manuel olarak kaçmaları gerekir:
    "u2200x u2203y". Bu birçok kişi için çok rahatsız edici ve beklenmedik bir durum
    kullanıcılar (sürekli hata raporlarıyla kanıtlandığı gibi). Peki şimdi
    re2c bir --input-encoding seçeneği sunar ,
    bu, davranışı değiştirmenize ve "∀x ∃y"yi şu şekilde ayrıştırmanıza olanak tanır:
    2200 78 20 2203 79.

  • Re2c artık -r --reuse modunda normal re2c bloklarının kullanılmasına izin veriyor.
    Giriş dosyası çok sayıda blok içeriyorsa ve bunlardan yalnızca birkaçı varsa bu kullanışlıdır.
    yeniden kullanılması gerekiyor.

  • Artık uyarıların ve hata mesajlarının biçimini ayarlayabilirsiniz
    yeni --location-format seçeneğini kullanma . GNU formatı görüntüleniyor
    dosya adı:satır:sütun: olarak ve MSVC biçimi dosya adı(satır,sütun) olarak kullanılır.
    Bu özellik IDE severler için faydalı olabilir.
    Başarılı olması durumunda kısa bir zafer mesajı basan --verbose seçeneği de eklendi.

  • Flex ile "uyumluluk" modu iyileştirildi - bazı ayrıştırma hataları düzeltildi ve
    Nadir durumlarda yanlış operatör önceliği.
    Geçmişte -F --flex-support seçeneği kod yazmanıza olanak tanıyordu
    flex stili ve re2c stiliyle karıştırılmıştır, bu da ayrıştırmayı biraz zorlaştırır.
    Flex uyumluluk modu yeni kodda nadiren kullanılır,
    ancak re2c geriye dönük uyumluluk açısından onu desteklemeye devam ediyor.

  • Karakter sınıfı çıkarma operatörü / artık geçerlidir
    Daha fazla sayıda durumda kullanılmasına olanak tanıyan kodlamayı genişletmeden önce,
    değişken karakter uzunluğu kodlaması kullanılıyorsa (örneğin UTF8).

  • Çıktı dosyası artık atomik olarak oluşturulmuştur: re2c önce geçici bir dosya oluşturur
    ve sonucu içine yazar ve ardından geçici dosyayı çıktı olarak yeniden adlandırır
    tek operasyon.

  • Dokümantasyon tamamlandı ve yeniden yazıldı; özellikle yenileri eklendi
    kafa arabelleğin doldurulması hakkında
    и giriş verilerinin sonunu kontrol etmenin yolları hakkında.
    Yeni belgeler formda toplanır
    kapsamlı bir sayfalık kılavuz
    örneklerle (aynı kaynaklar kılavuz sayfasında ve çevrimiçi belgelerde gösterilmektedir).
    Sitenin telefonlarda okunabilirliğini artırmak için yetersiz girişimlerde bulunuldu.

  • Geliştiricilerin bakış açısından re2c daha eksiksiz bir alt sistem edindi
    hata ayıklama Hata ayıklama kodu artık sürüm sürümlerinde devre dışı bırakıldı ve
    --enable-debug yapılandırma seçeneği kullanılarak etkinleştirilebilir.

Bu sürüm uzun zaman aldı - neredeyse bir yıl.
Zamanın çoğu, her zaman olduğu gibi, teorik bir çerçeve geliştirmeye ve yazmaya harcandı.
makaleler "NFA'da Verimli POSIX Alt Eşleşme Çıkarımı".
Makalede açıklanan algoritmalar deneysel kütüphane libre2c'de uygulanmaktadır.
(kitaplığı ve karşılaştırmaları oluşturmak varsayılan olarak devre dışıdır ve yapılandırma seçeneğiyle etkinleştirilir)
--enable-libs). Kütüphane mevcut kütüphanelere rakip olarak tasarlanmamıştır.
RE2 gibi projeler, ancak yeni teknolojilerin geliştirilmesi için bir araştırma platformu olarak
algoritmalar (daha sonra re2c'de veya diğer projelerde kullanılabilir).
Ayrıca test etme, kıyaslama yapma ve diğer dillere bağlama oluşturma açısından da uygundur.

Re2c geliştiricilerinden bu sürümün gerçekleşmesine yardımcı olan herkese teşekkürler.
ve genel olarak topluluğa fikirler, hata raporları, yamalar, moral vb. için. ;]

Kaynak: linux.org.ru

Yorum ekle