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 -- nkural

<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.