serbest , C ve C++ dilleri için ücretsiz bir sözcük analizörü oluşturucu. re2c projesi ilk olarak 1993 yılında Peter Bamboulis tarafından çok hızlı sözcüksel analizörlerin deneysel bir oluşturucusu olarak oluşturuldu; oluşturulan kodun hızı ve analizörlerin mevcut bir sisteme 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 farklılaştı. kod tabanı. 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.
Ana değişiklikler:
- Go dili için destek eklendi (re2c için “--lang go” seçeneğiyle veya ayrı bir re2go programı olarak etkinleştirilir). C ve Go'nun belgeleri aynı metinden ancak farklı kod örnekleriyle oluşturulmuştur. Re2c'deki kod oluşturma alt sistemi tamamen yeniden tasarlandı ve bu, gelecekte yeni dillerin desteklenmesini kolaylaştıracak.
- CMake'de alternatif oluşturma sistemi eklendi (teşekkürler !). Re2c'yi CMake'e çevirme girişimleri uzun süredir yapılıyordu, ancak ligfx'e kadar kimse tam teşekküllü bir çözüm önermedi. Eski Autotools yapı sistemi desteklenmeye ve kullanılmaya devam ediyor ve öngörülebilir gelecekte bundan vazgeçmeye yönelik herhangi bir plan yok (kısmen dağıtım geliştiricileri için sorun yaratmayı önlemek için, kısmen de eski yapı sisteminin yenisinden daha kararlı ve daha özlü olması nedeniyle) ). Her iki sistem de Travis CI kullanılarak sürekli olarak test edilmektedir.
- Genel API kullanılırken konfigürasyonlara arayüz kodunu belirtme yeteneği eklendi. Önceden çoğu API'nin işlevler veya işlev makroları biçiminde belirtilmesi gerekiyordu. Artık bunlar “@@{isim}” veya basitçe “@@” biçimindeki adlandırılmış şablon parametreleriyle isteğe bağlı dizeler biçiminde belirtilebilir (yalnızca bir parametre varsa ve belirsizlik yoksa). API stili re2c:api:style yapılandırması tarafından ayarlanır (işlev değeri işlevsel stili belirtir ve serbest biçim isteğe bağlı bir stili belirtir).
- “-c”, “—start-conditions” seçeneğinin çalışması iyileştirildi ve birbirine bağlı birkaç sözlükçüsü tek bir re2c bloğunda birleştirmenize olanak tanındı. Artık normal blokları koşullu bloklarla birlikte kullanabilir ve tek bir dosyada ilgisiz birkaç koşullu blok tanımlayabilirsiniz. "-r", "--reuse" seçeneğinin "-c", "--start-conditions" ve "-f", "-- ile birlikte iyileştirilmiş çalışması (bir bloktaki kodun diğer bloklarda yeniden kullanılması) depolanabilir durum" seçenekleri (herhangi bir noktada kesintiye uğrayabilen ve daha sonra yürütmeye devam edebilen durum bilgisi olan bir sözcük oluşturucu).
- Yakın zamanda eklenen giriş sonu (EOF kuralı) algoritmasında, nadir durumlarda çakışan kuralların yanlış işlenmesine neden olan bir hata düzeltildi.
- Önyükleme işlemi basitleştirildi. Daha önce derleme sistemi, kendisini yeniden inşa etmek için kullanılabilecek önceden oluşturulmuş bir re2c'yi dinamik olarak bulmaya çalışıyordu. Bu, yanlış bağımlılıklara yol açtı (çünkü bağımlılık grafiği dinamikti ve çoğu yapı sistemi bundan hoşlanmazdı). Şimdi, lexer'ları yeniden oluşturmak için yapı sistemini açıkça yapılandırmanız ve RE2C_FOR_BUILD değişkenini ayarlamanız gerekir.
Kaynak: opennet.ru
