\u000d
Çünkü kaçış bir yorum sonlandırır \u
kaçar eşit karşılık gelen Unicode karakterleri dönüştürülür önce programı simgeleþtirilmiþ edilir. Sen eşit kullanabilirsiniz \u0057\u0057
yerine //
etmek başlayacak bir yorum.
Bu, IDE'nizde, söz \u000d
konusu yorumun sona erdiğini açıkça belirtmek için sözdizimini vurgulaması gereken bir hatadır .
Bu aynı zamanda dilde bir tasarım hatasıdır. Şimdi düzeltilemez, çünkü bu ona bağlı programları kırabilir. \u
kaçışlar ya derleyici tarafından karşılık gelen Unicode karakterine dönüştürülmeli, ancak bu "mantıklı" bağlamlarda (dize değişmezleri ve tanımlayıcıları ve muhtemelen başka hiçbir yerde) ya da U + 0000-007F aralığında karakter üretmeleri yasaklanmış olmalıdır , ya da her ikisi de. Bu semantiklerden herhangi biri \u000d
, \u
kaçışların yararlı olduğu durumlara müdahale etmeden yorumun kaçış tarafından sonlandırılmasını önleyecektir ; bunun ,\u
yorumların içindeki kaçışların Latin olmayan bir komut dosyasında yorumları kodlamanın bir yolu olarak kullanılmasını içerdiğini unutmayın . metin düzenleyici nerede daha geniş bir görüş alabilir\u
kaçışlar derleyiciden daha önemlidir. ( Yine de \u
, herhangi bir bağlamda karşılık gelen karakterler olarak kaçışları görüntüleyecek herhangi bir editör veya IDE'nin farkında değilim .)
C ailesinde benzer bir tasarım hatası var, burada 1 ters eğik çizgi-yeni satırın yorum sınırları belirlenmeden önce işlendiği, ör.
// this is a comment \
this is still in the comment!
Bu özel tasarım hatasını yapmanın kolay olduğunu göstermek için bunu gündeme getiriyorum ve eğer tokenizasyonu düşünmeye ve derleyici programcılarının düşünme biçimini ayrıştırmaya alışkınsanız, düzeltmek için çok geç olana kadar bir hata olduğunu fark etmiyorum. belirleme ve ayrıştırma hakkında. Temel olarak, resmi dilbilginizi zaten tanımladıysanız ve daha sonra birisi sözdizimsel bir özel durum ortaya çıkarırsa - trigraflar, ters eğik çizgi, ASCII ile sınırlı kaynak dosyalarında rastgele Unicode karakterleri kodlamak, ne olursa olsun - kamalanması gerekir, tokenizörün önüne , bu özel durumu kullanmanın mantıklı olduğu yere dikkat etmek için tokenizörü yeniden tanımlamaktan daha fazla bir dönüşüm geçişi ekleyin .
1 Pedallar için: C'nin bu yönünün% 100 kasıtlı olduğunun farkındayım, mantıklı - bunu telafi etmiyorum - kodu delinmiş kartlara keyfi olarak uzun çizgilerle mekanik olarak zorla sığdırmanıza izin verecektir. Hala yanlış bir tasarım kararıydı.