3.2. Sözdizimsel Dizgecikler
Aşağıdaki kurallar, dizgeciklerinden daha yüksek seviyeli çözümleyicilerin yararlanması için temel bir sözdizimsel çözümleyici tanımlamakta kullanılır. Bu bölümde yapılı başlık alanı gövdelerinde kullanılan dizgecikler tanımlanmıştır.
Bilginize
Bu standardın okuyucuları, bu sözdizimsel dizgeciklerin gerek düşük gerekse yüksek seviyeli sözdiziminde belgenin devamındaki kullanımına özel bir dikkat gösterirse iyi olur. Özellikle, Boşlukların ve Açıklamaların Katlanması bölümünde tanımlanan boşluk karakterlerinden oluşan dizgecikler ve açıklama dizgecikleri burada tanımlanan düşük seviyeli dizgeciklerde kullanılmakta ve bu düşük seviyeli dizgecikler de daha sonra daha yüksek seviyeli dizgecikleri tanımlamakta kullanılmaktadır. Bu yüzden, yüksek seviyeli dizgeciklerde açıklama ve boşluk karakterlerinin kullanımına, belli bir tanımda açıkça görünmeseler bile izin verilebilir.
3.2.1. İlkel Dizgecikler
Aşağıdakiler, bu standarttaki başka bir yere başvurulmasını sağlayan, fakat [RFC2234]'te başka türlü tanımlı olmayan ilkel dizgeciklerdir. Bunların bazıları sözdiziminde başka bir yerde görünmezler, fakat bu belgenin diğer bölümlerinden başvurulmak için yararlıdırlar.
Bilginize
Aşağıdaki "imler
" tam da buna bir örnektir. imler
dizgeciği bu standardın başka bir yerinde görünmese bile, iletileri sözdizimsel olarak çözümleyen araçları gerçekleyenler için kullanışlıdır. imler
içindeki karakterlerin her biri sözdizimsel çözümlemede bir dizgecik oluşturma yerini belirtmekte kullanılabilir.
SSSBsiz-DNT = %d1-8 / ; sekme, satırbaşı, satırsonu ve %d11 / ; boşluk karakterleri hariç %d12 / ; US-ASCII denetim karakterleri %d14-31 / %d127 metin = %d1-9 / ; satırbaşı ve satırsonu dışında %d11 / ; tüm karakterler %d12 / %d14-127 / atıl-metin imler = "(" / ")" / ; Sözdiziminin başka parçalarında "<" / ">" / ; kullanılan özel karakterler "[" / "]" / ":" / ";" / "@" / "\" / "," / "." / ÇTIRNAK
Bu dizgeciklere atanmış özel bir anlamsallık yoktur. Basitçe tek karakterlerdir.
3.2.2. Ötelenmiş karakterler
Bazı karakterler özel yoruma tabidirler, örneğin ayraç olarak kullanılan sözdizimsel dizgecikler böyledir. Bu karakterlerin yorumlanan veri içinde yorumlanmamasını, kendisi olarak davranmasını mümkün kılmak için bir ötekileştirme mekanizması sağlanmıştır.
öteli-çift = ("\" metin) / atıl-öteli-krk
Bir öteli-çift
rastlandığı her yerde tek başına içerdiği metin karakteri olarak yorumlanır. Yani, öteli-çift
'in parçası olarak görünen "\" imi anlambilimsel olarak "görünmez"dir.
Bilginize
"\" imi bir iletide bir öteli-çift
'in parçası olmaksızın bulunabilir. Bir öteli-çift
'in parçası olmaksızın bir "\" imi anlambilimsel olarak görünmez değildir. öteli-çift
'in bu standartta görüldüğü yerler sadece diçerik
, tmetin
, dmetni
, katsız-tırnak
ve katsız-sabit
dizgecikleridir.
3.2.3. Boşlukların ve Açıklamaların Katlanması
Katlamada kullanılan boşluk karakterleri dahil (Uzun Başlık Alanları bölümünde açıklanmıştı) tüm boşluk karakterleri başlık alanlarının gövdelerindeki öğeler arasında bulunabilirler. Ayrıca, açıklamalar olarak ele alınan dizgeler yapılı alan gövdelerinde parantez içine alınmış olarak bulunabilirler. Aşağıdaki tanımlar katlama boşluklarını (KBOŞ
) ve açıklamaları oluşturur.
Parantez içine alınmış karakterlerden oluşan dizgeler açıklamalar olarak ele alınırlar ve Tırnaklı dizgeler bölümünde tanımlandığı gibi artık bir "tırnaklı-dizge
" içinde bulunmazlar. Açıklamalar iç içe olabilir.
Bu standartta KBOŞ
ve açıklamaların serbestçe yerleştirilebileceği çeşitli yerler vardır. Bu sözdizimiyle bağdaşmak üzere KBOŞ
içersin içermesin açıklamaların yerleri için ek olarak bir "AKBOŞ
" dizgeciği tanımlanmıştır. Bununla birlikte, bu standartta AKBOŞ
dizgeciği, görüldüğü yerlerde, her satırı başka bir karakter içermeksizin sırf BOŞLUK
karakterlerinden oluşmuş bir katlı başlık alanı oluşturacak tarzda kullanılmamalıdır *ZORUNLU*[78].
KBOŞ = ([*BOŞLUK CRLF] 1*BOŞLUK) / ; Katlanan boşluklar atıl-KBOŞ dmetin = SSSBsiz-DNT / ; Boşluksuz denetim karakterleri %d33-39 / ; "(", ")" veya "\" içermeksizin %d42-91 / ; kalan US-ASCII karakterleri %d93-126 diçerik = dmetin / öteli-çift / açıklama açıklama = "(" *([KBOŞ] diçerik) [KBOŞ] ")" AKBOŞ = *([KBOŞ] açıklama) (([KBOŞ] açıklama) / KBOŞ)
Bu standart boyunca, KBOŞ
(Katlı boşluklar dizgeciği) görülen yerler, Uzun Başlık Alanları bölümünde açıklandığı gibi başlığın katlandığı yerlerdir. Başlık katlamanın bir ileti içinde görüldüğü her yerde (yani, her BOŞLUK
karakterinden sonra bir CRLF
içeren bir başlık alanı gövdesinde), bu standartla ilgili olarak başlık alanı üzerinde bir sözdizimsel çözümleme uygulamadan önce başlık alanı gövdesine "başlık serme" (yani, CRLF
silme işlemi) uygulanır. Başka bir deyişle KBOŞ
içindeki CRLF
'ler anlambilimsel olarak "görünmez"dir.
Bir açıklama
, normalde bir yapılı alan gövdesine insanlar tarafından okunabilen bilgilendirici metin yerleştirmek için kullanılır. Bir açıklama
nın KBOŞ
içermesine izin verildiğinden, katlamaya açıklama
içinde de izin veriliyor demektir. Ayrıca, dikkat ederseniz, bir açıklama
içinde öteli-çift
'e de izin verildiğinden öteli-çift
içinde görünmesinden dolayı bir açıklama
içinde parantez ve tersbölü imlerine de izin verilmiş olmaktadır. Anlambilimsel olarak, açıklama
yı içine alan parantez imleri açıklama
nın bir parçası değildirler; açıklama
iki parantez imi arasına alınmış bir nesnedir. Daha önce bahsedildiği gibi, açıklama
içinde yer alan öteli-çift
içindeki "\" ve KBOŞ
içindeki CRLF
'ler anlambilimsel olarak "görünmez"dirler ve bu nedenle de açıklama
nın parçası değildirler.
Bir yapılı alan başlığındaki sözdizimsel dizgecikler arasında görünen bir KBOŞ
, açıklama
veya AKBOŞ
dönüp dolaşıp, anlambilimsel olarak tek bir boşluk karakteri imiş gibi yorumlanır.
3.2.4. Atom
Yapılı başlık alanı gövdelerindeki çeşitli dizgecik tanımları, basitçe, belli temel karakterlerden oluşan dizgelerdir. Böyle alt dizgeciklere atom
adı verilir.
Yapılı başlık alanı gövdelerinin bazıları ayrıca metnin içinde nokta karakterine de (".", ASCII değeri: 46) izin verir. Bu amaçla ek olarak bir "nokta-atom
" dizgeciği tanımlanmıştır.
adizge = HARF / RAKAM / ; Denetim karakterleri, BOŞLUK ve "!" / "#" / ; imler dışındaki tüm karakterler "$" / "%" / ; atomlar için kullanılır "&" / "'" / "*" / "+" / "-" / "/" / "=" / "?" / "^" / "_" / "`" / "{" / "|" / "}" / "~" atom = [AKBOŞ] 1*adizge [AKBOŞ] nokta-atom = [AKBOŞ] nokta-atom-dizgesi [AKBOŞ] nokta-atom-dizgesi = 1*adizge *("." 1*adizge)
atom
ve nokta-atom
dizgeciklerinin ikisi de kendini oluşturan karakter dizisinden oluşan tek bir birim olarak yorumlanır. Anlambilimsel olarak isteğe bağlı açıklamalar ve kalan karakterleri kuşatan KBOŞ
dizgecikleri atomun parçaları değildirler; atom sadece bir atom
içindeki adizge
karakterlerinden veya bir nokta-atom
içindeki adizge
ve nokta (".") karakterlerinden oluşur.
3.2.5. Tırnaklı dizgeler
Atomlarda izin verilenler dışında karakterler içeren karakter dizileri, tırnak karakterleri (ÇTIRNAK
, ASCII değeri: 34) ile kuşatılmış karakterler halinde tırnaklı dizge biçiminde ifade edilebilirler.
tdizge = SSSBsiz-DNT / ; Boşluklar olmaksızın ; denetim karakteri %d33 / ; "\" veya tırmak imi hariç %d35-91 / ; kalan tüm karakterler %d93-126 tmetin = tdizge / öteli-çift tırnaklı-dizge = [AKBOŞ] ÇTIRNAK *([KBOŞ] tmetin) [KBOŞ] ÇTIRNAK [AKBOŞ]
Bir tırnaklı-dizge
tek bir birim olarak ele alınır. Yani, tırnaklı-dizge
anlambilimsel olarak atom
ile aynıdır. Bir tırnaklı-dizge
nin KBOŞ
içermesine izin verildiğinden katlamaya da izin verilmiş olur. Ayrıca, bir tırnaklı-dizge
içinde öteli-çift
e de izin verildiğinden, bir öteli-çift
i oluşturması nedeniyle bir tırnaklı-dizge
içinde tırnak ve tersbölü karakterlerinin de bulunabileceğine dikkat ediniz.
Anlambilimsel olarak ne tırnak karakterlerinin dışındaki isteğe bağlı AKBOŞ
karakterleri ne de tırnak karakterlerinin kendileri tırnaklı-dizge
nin parçasıdır; tırnaklı-dizge
iki tırnak karakteri arasında kalanlardır. Evvelce bahsedildiği gibi, bir tırnaklı-dizge
içinde bulunan bir öteli-çift
içindeki "\" ve bir KBOŞ
/AKBOŞ
içindeki CRLF
anlambilimsel olarak "görünmez"dir ve bu nedenle de tırnaklı-dizge
nin parçası değildirler.
3.2.6. Muhtelif dizgecikler
Ek olarak üç dizgecik daha tanımlanmıştır: atom
lar ve tırnaklı-dizge
lerden oluşan dizgeler için sözcük
ve deyim
ile yapısız başlık alanlarında ve yapılı başlık alanları içinde bazı yerlerde kullanmak için yapısız
.
sözcük = atom / tırnaklı-dizge deyim = 1*sözcük / atıl-deyim ydizge = SSSBsiz-DNT / ; Boşluksuz denetimler %d33-126 / ; US-ASCII'nin kalanı atıl-ydizge yapısız = *([KBOŞ] ydizge) [KBOŞ]