2 puan yazan GN⁺ 2024-11-03 | 1 yorum | WhatsApp'ta paylaş

Tuhaf sözcüksel sözdizimi

  • Bu ay 42 programlama dilini öğrenip llamafile için yeni bir sözdizimi vurgulayıcı oluşturdu. Cadılar Bayramı vesilesiyle en şaşırtıcı sözdizimlerini paylaşmak istiyor.
  • Desteklenen diller şunlar: Ada, Assembly, BASIC, C, C#, C++, COBOL, CSS, D, FORTH, FORTRAN, Go, Haskell, HTML, Java, JavaScript, Julia, JSON, Kotlin, ld, LISP, Lua, m4, Make, Markdown, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell, SQL, Swift, Tcl, TeX, TXT, TypeScript, Zig.

Sözdizimi vurgulayıcı nasıl kodlanır

  • Bir sözdizimi vurgulayıcıyı uygulamak zor değildir. C++ ve GNU gperf yararlı araçlardır.
  • gperf, performansı en üst düzeye çıkarmak için mükemmel hash tabloları üretebilir.
  • Temel bir sözdizimi vurgulayıcı, string'lere, yorumlara ve anahtar sözcüklere odaklanan bir sonlu durum makinesiyle uygulanabilir.

Demo

  • llamafileın yeni sözdizimi vurgulayıcısı, ollamaya kıyasla daha güçlü avantajlara sahip.
  • Windows 10 üzerinde Meta LLaMA 3.2 3B Instruct modelini kullanarak çeşitli programlama dillerinde kod üretimini gösteren bir demo sunuyor.

Şaşırtıcı sözcüksel sözdizimi örnekleri

  • C: C dilinin basit olduğu iddia edilir, ancak trigraphs gibi karmaşık unsurları vardır.
  • Haskell: İç içe yorumlara izin verir.
  • Tcl: Tanımlayıcıların içinde tırnak işareti bulunabilir.
  • JavaScript: Düzenli ifade sözdizimine sahiptir ve UNICODE karakterlerini satır sonu karakteri olarak kullanır.
  • Shell: heredoc sözdizimi çeşitli şekillerde kullanılabilir.
  • String Interpolation: Kotlin, Scala ve TypeScript, string içinde kod eklemeye izin verir.
  • Swift: String'ler birden fazla # ile çevrelenebilir.
  • C#: String'leri sarmalamak için birden fazla tırnak işareti kullanılabilir.
  • FORTH: Her şeyi boşluk sınırlarına göre token'lara ayırır.
  • FORTRAN ve COBOL: llamafile, bu diller için sözdizimi vurgulamayı destekler.
  • Zig: Çok satırlı string'ler iki ters eğik çizgiyle başlar.
  • Lua: Çok satırlı string'lerde köşeli parantez ve eşittir işareti kullanır.
  • Assembly: Pek çok lehçesi olduğu için sözdizimi vurgulaması zordur.
  • Ada: Tek tırnak işaretini çeşitli amaçlarla kullanır.
  • BASIC: String'lerin sonunda tırnak işareti zorunlu değildir.
  • Perl: Düzenli ifade sözdizimi kendine özgüdür.
  • Ruby: Sözdizimi karmaşık ve anlaşılması zordur.

Desteklenen dillerin karmaşıklığı

  • FORTH en basit, Ruby ise en karmaşık dildir.
  • Karmaşıklık, her dilin sözdizimi vurgulaması için gereken kod satırı sayısına göre değerlendirilir.

GN⁺ özeti

  • Bu yazı, çeşitli programlama dillerinin benzersiz sözdizimlerini inceliyor ve bir sözdizimi vurgulayıcısı uygulamak için gereken içgörüleri sunuyor.
  • llamafileın sözdizimi vurgulayıcısı çok sayıda dili destekliyor ve özellikle eski dillerin bakımında yararlı olabilir.
  • Programlama dillerinin sözdizimsel karmaşıklığını anlamaya yardımcı oluyor ve sözdizimi vurgulayıcı geliştirmeyle ilgilenenler için faydalı olacaktır.
  • Benzer işlevlere sahip projeler arasında Pygments ve Emacs bulunuyor.

1 yorum

 
GN⁺ 2024-11-03
Hacker News görüşü
  • Birçok dil, string içinde kod eklemeyi destekliyor
    • Buna C#, Python, JavaScript, Ruby, Shell ve Make de dahil
  • Tcl dilinin kendine özgü özellikleri açıklanıyor
    • Kod ile veriyi ayırt etmek zor olabilir
    • Yorumlar kod olarak algılanabilir
  • PostgreSQL'in kullanışlı dolar-alıntı string özelliği açıklanıyor
    • String'ler çeşitli şekillerde ifade edilebilir
  • Vim'in sözdizimi vurgulama özelliği açıklanıyor
    • Eşleşme ve alan tanımlayarak sözdizimi vurgulama uygulanır
    • Karmaşık sözdizimi vurgulamayı destekler
  • C dilindeki bağlama duyarlı lexing açıklanıyor
    • Bir sembol tablosu gerekir
    • Sözdizimi vurgulama için tam ayrıştırma ve sembol tablosu bilgisi gerekebilir
  • C trigraph'larına dair eğlenceli bir örnek açıklanıyor
    • || mantıksal operatörünü kullanan kısa devre kuralı açıklanıyor
  • Lisp sözdizimine dair bir bakış açısı açıklanıyor
    • Sözdizimi dilin önemli bir parçası değildir; basit ve tekdüze olmalıdır
  • Ruby'nin sözdizimini anlamanın zor olduğuna dair bir görüş var
  • Java'nın Unicode kaçışlarının sözdizimi vurgulamayı bozabileceği belirtiliyor
    • Unicode kaçışları string dışında da kullanılabilir
  • Joe'nun sözdizimi vurgulama uygulamasına ilgi gösteriliyor
    • Python f-string'leri uygun şekilde vurgulanabiliyor
  • TeX'in sözdizimi vurgulamasının neden zor olduğu açıklanıyor
    • TeX her karakterin işlevini yeniden tanımlayabilir
    • Tam sözdizimi vurgulama imkansızdır