re2c 1.2 sözcüksel analiz oluşturucunun piyasaya sürülmesi

gerçekleşti serbest re2c, C ve C++ dilleri için ücretsiz bir sözcük analizörü oluşturucu. re2c'nin 1993 yılında Peter Bambulis tarafından çok hızlı sözcük analizörlerinin deneysel bir oluşturucusu olarak yazıldığını, oluşturulan kodun hızı ve analizörlerin mevcut bir koda kolayca ve verimli bir şekilde entegre edilmesine olanak tanıyan alışılmadık derecede esnek bir kullanıcı arayüzü açısından diğer oluşturuculardan farklı olduğunu hatırlayın. temel. 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.

Serbest bırakılma hazırlığı neredeyse bir yıl sürdü. Zamanın çoğu, her zaman olduğu gibi, teorik bir çerçeve geliştirmeye ve yazmaya harcandı.
nesne "NFA'da Verimli POSIX Alt Eşleşme Çıkarma".
Makalede açıklanan algoritmalar deneysel kütüphane libre2c'de uygulanmaktadır.
(kitaplığı ve performans testlerini oluşturmak varsayılan olarak devre dışıdır ve “—enable-libs” yapılandırma seçeneğiyle etkinleştirilir). Kütüphane, RE2 gibi mevcut projelere rakip olarak değil, yeni projelerin geliştirilmesi için bir araştırma platformu olarak tasarlanmıştır.
algoritmalar (daha sonra re2c'de veya diğer projelerde kullanılabilir). Ayrıca test etme, performansı ölçme ve diğer dillere bağlama oluşturma açısından da uygundur.

re2c 1.2 sürümündeki ana yenilikler:

  • Giriş verilerinin sonunu kontrol etmek için yeni ve basitleştirilmiş bir yöntem eklendi (“EOF kuralı”). Bunun için “re2c:eof” konfigürasyonu eklendi,
    terminal karakterini seçmenizi sağlar,
    ve Lexer'ın çalışması durumunda tetiklenen ö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 "file.re" */", burada "file.re" eklenecek dosyanın adıdır. Re2c, dahil edilen dosya dizinindeki dosyaları arar,
    ve “-I” seçeneği kullanılarak belirtilen yollar listesinde.
    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.
    Varsayılan olarak re2c, "∀x ∃y" gibi ifadeleri şu şekilde ayrıştırır:
    1 bitlik ASCII karakterleri 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 "--input-encoding {ascii | utf8}",
    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 normal re2c bloklarının "-r --reuse" modunda 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 seçeneği kullanarak "--location-format {gnu | msvc}". GNU formatı görüntüleniyor
    "dosya adı:satır:sütun:" ve MSVC biçimi "dosya adı(satır,sütun)" olarak.
    Bu özellik IDE severler için faydalı olabilir.
    Başarılı olması durumunda kısa bir zafer mesajı görüntüleyen bir "--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-suppor" 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
    ilgili bölümler http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и 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.

Kaynak: opennet.ru

Yorum ekle