3. İşleçler
3.1. Ulama -- kural1 kural2
Bir kural, bir dizi kural ismini yan yana getirerek aslında basit değerlerin bir dizgesini tanımlayabilir. Örneğin,
foo = %x61 ; a bar = %x62 ; b mumble = foo bar foo
<mumble>
kuralı küçük harfli dizge "aba" ile eşleşir.
- Düzgün Doğrusal Boşluk
-
Ulama, ABNF çözümleme modelinin çekirdeğini oluşturur. Birbiri ardına gelen karakterlerden oluşan bir dizge ABNF ile tanımlanmış kurallara göre çözümlenir. Genel Ağ belirtimleri için, düzgün doğrusal boşlukların (boşluk ve sekme karakterleri) doğrudan ya da dolaylı olarak ana oluşumların etrafına serpiştirilmesine izin vermekle ilgili bir geçmiş vardır (örneğin, özel karakterlerleri veya atomik dizgeleri sınırlamak gibi amaçlar).
Bilginize
Bu ABNF belirtimi, düzgün doğrusal boşlukların dolaylı belirtimini içermez.
Ayraçlar veya dizge parçaları çevresinde düzgün doğrusal boşluklara izin verilmesini isteyen bir dilbilgisinin açıkça belirtirmesi gerekir. Yüksek seviyeden kurallar arasında kullanmak üzere böyle boşluklarla ilgili "çekirdek" kurallar tanımlamak çoğunlukla kullanışlı olmaktadır. "Çekirdek" kurallar, bir sözel çözümleyici için veya ana kural kümesinin basit bir parçası olarak şekillenebilir.
3.2. İkameler -- kural1
/
kural2
Birbirleri yerine kullanılabilecek elemanlar bölü çizgisi ("/") ile ayrılır. Yani,
foo / bar
<foo>
veya <bar>
'dan biri kabul edilecektir anlamına gelir.
Bilginize
Alfabetik karakterler içeren bir tırnaklı dizge ikame karakterleri belirtmenin özel bir halidir ve içerdiği karakterlerle, küçük ve büyük harflerin bir karışımı olarak belirtildiği sırada, birleştirici dizgelerin bir kümesinin kuralsız gösterimi olarak yorumlanır.
3.3. İkame Eklemeleri -- kural1
=/
kural2
Bazan bir ikame listesini dilimler halinde belirtmek uygun olur. Yani, birden fazla ikamesi olan bir kuralın ikameleri ek kural tanımları ile belirtilebilir. Aynı ana kural kümesinden türemiş bağımsız belirtimler (bağımsız değişken listeleri şeklinde oluşan) olmadıkça bu kısmen kullanışlıdır. Bu eklemeli tanımlara ABNF'de şöyle izin verilir:
eskikural =/ ek-ikameler
Şöyle bir kural kümesi,
kuralkümesi = alt1 / alt2 kuralkümesi =/ alt3 kuralkümesi =/ alt4 / alt5
şu belirtimle aynıdır:
kuralkümesi = alt1 / alt2 / alt3 / alt4 / alt5
3.4. İkame Değer Aralıkları -- %c##-##
İkame sayısal değerler, değer aralığı için bir tire imi ("-") kullanılarak tek parça halinde belirtilebilir. Örneğin,
RAKAM = %x30-39
şuna eşdeğerdir:
RAKAM = "0" / "1" / "2" / "3" / "4" / "5" / "6" / "7" / "8" / "9"
Ulanan sayısal değerlerle sayısal değer aralıkları aynı dizgede belirtilemez. Ulama için bir sayısal değer noktalı gösterimle belirtilebilirken bir değer aralığını belirtmek için tire kullanılır. Bu nedenle, satır sonu dizilimleri arasında basılabilir bir karakterin belirtilmesi için belirtim şöyle olabilirdi:
krk-satırı = %x0D.0A %x20-7E %x0D.0A
3.5. Dizilim Grubu -- (
kural1 kural2
)
Parantez içine alınmış elemanlar içerildikleri sıra değişmemek üzere tek bir eleman olarak ele alınırlar.
elem (foo / bar) blat
şeklinde bir tanım, (elem foo blat) veya (elem bar blat) ile eşleşecektir.
elem foo / bar blat
ise (elem foo) veya (bar blat) ile eşleşir.
Bilginize
İkamelerin çok sayıda kural ismi veya sabitinden oluştuğu durumlarda, düzgün okuma için "çıplak" ikamelerden daha iyi olacaksa gruplama kullanımı daima tavsiye edilir.
Bu nedenle üstteki biçim yerine şu biçim önerilir:
(elem foo) / (bar blat)
Böylece arasıra düzgün okuyanların tanımı yanlış yorumlaması önlenmiş olur.
Dizilim grubu gösterimi ayrıca serbest yazı içinde de kullanılır.
3.6. Değişken Yineleme -- *
kural
"*" işleci bir elemanın önüne konulduğunda yineleme belirtir. Örneğin,
<a>*<b>eleman
gösteriminde <a>
ve <b>
isteğe bağlı ondalık değerler olmak üzere içinde en az <a>
veya en çok <b>
sayıda eleman içerebilen oluşumlar tanımlanmaktadır.
Öntanımlı değerler sıfır ve sonsuz olmak üzere, *<eleman>
sıfır dahil her sayıya izin verirken, 1*<eleman>
en az 1, 3*3<eleman>
tam olarak 3 ve 1*2<eleman>
ise bir ya da ikisine izin verir.
3.7. Belirgin Yineleme -- n
kural
<n>eleman
kuralı
<n>*<n>eleman
kuralına eşdeğerdir. Yani, tam olarak <n>
<eleman>
oluşumu belirtir. Bu bakımdan, 2RAKAM
2 rakamlı bir sayı belirtirken 3HARF
3 harften oluşan bir dizgeyi belirtecektir.
3.8. Seçimlik Dizilim -- [
kural
]
Köşeli ayraç içine alma, isteğe bağlı dizilim belirtir:
[foo bar]
ile
*1(foo bar).
eşdeğerdir.
3.9. ;
Açıklama
Bir noktalı virgül, satır sonuna kadar devam eden bir açıklamayı başlatır. Bu, belirtimle birlikte açıklamaları da içermenin basit bir yoludur.
3.10. İşleç Önceliği
Buraya kadar açıklanan mekanizmalar en yüksekten en düşüğe (en sıkıdan en gevşeğe) aşağıdaki öncelik sıralamasına uyarlar:
Dizgeler, İsimler Açıklamalar Değer aralıkları Yineleme Gruplama, İsteğe bağlılık Ulama İkame
İkame işlecinin kullanımı, ulamalarla karıştırıldığında karışıklığa yol açabilir.
Yine, açık ulama grupları yapmak için gruplama işlecinin kullanılması önerilir.