Backus-Naur formu, adını bilgisayar programcılığının öncüleri John Backus ve Peter Naur'dan alan, 1950'lerin sonunda temelleri Backus'a ait bir makalede ortaya konmuş, formal dillerin ve programlama dillerinin sözdizimini açıklamak için kullanılan bir gösterimdir. Naur'un düzenlediği ALGOL 60 dilinin tanımlandığı makale, Backus-Naur formunun bilgisayar dünyasında tanınması açısından önemli rol oynamıştır.
Kural yapısı
Bir türetme kuralı şu formatta yazılır: <sembol> ::= __ifade__
Burada:
<sembol>, değiştirilecek sözdizimsel kategoriyi tanımlayan ve açılı ayraçlar (<>) içine alınan, terminal olmayan (non-terminal) bir semboldür.::="şununla değiştirilir" anlamına gelen bir metasemboldür,__ifade__ise alternatifleri göstermek amacıyla dikey çizgi (|) ile ayrılmış seçenekleri barındıran; terminal semboller (ör. "Sr." veya "," gibi değişmez metinler) ya da terminal olmayan sembollerden (ör.<soyadı>) oluşan bir veya daha fazla sembol dizisini içeren sağ taraftır (üretim gövdesi).
Örneğin, <ops-sonek-kismi> ::= "Sr." | "Jr." | "" kuralında tüm satır bir türetme kuralıdır; "Sr." ve "Jr." terminal sembollerdir, "" (boş dize) pratik gösterimde yer alsa da teknik olarak bir terminal değildir ve <ops-sonek-kismi> terminal olmayan bir semboldür.
Örnekler
<Sıfır dışında bir rakam> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 <Rakam> ::= 0 | <Sıfır dışında bir rakam> <İki haneli sayı> ::= <Sıfır dışında bir rakam> <Rakam> <10'dan 19'a kadar> ::= 1 <Rakam> <kırkiki> ::= 42
<araba-plakası> ::= <il-kodu> <harf-ve-rakam-serisi> <harf-ve-rakam-serisi> ::= <harf><rakam><rakam><rakam><rakam> | <harf><harf><rakam><rakam><rakam> | <harf><harf><harf><rakam><rakam> <rakam> ::= <rakam-sıfırdan-yediye> | <rakam-birden-dokuza> <rakam-sıfırdan-yediye> ::= '0' | <rakam-birden-yediye> <rakam-birden-yediye> ::= '1' | '2' | '3' | '4' | '5' | '6' | '7' <rakam-birden-dokuza> ::= <rakam-birden-yediye> | '8' | '9' <harf> ::= 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'R' | 'S' | 'T' | 'U' | 'V' | 'Y' | 'Z' <il-kodu> ::= '0'<rakam-birden-dokuza> | <rakam-birden-yediye><rakam> | '80' | '81'
Bu örnekte araç plakalarının yazım kuralları Backus-Naur form ile ifade edilmektedir. 01'den 81'e değişik değerler alabilen il kodunu, bir harf ve dört rakam veya iki harf ve üç rakam veya üç harf ve iki rakam takip etmektedir. (Buradaki tanımla plakanın sonundaki rakam serisinin tamamı sıfır olabileceği için aslında Türkiye'deki plakaların alabilecekleri değerlerden biraz daha büyük bir küme tanımlanıyor.)
Ayrıca bakınız
Kaynakça
- ↑ "Arşivlenmiş kopya". 9 Ocak 2023 tarihinde kaynağından arşivlendi. Erişim tarihi: 9 Ocak 2023.
- ↑ Naur, Peter (1961). "A COURSE OF ALGOL 60 PROGRAMMING with special reference to the DASK ALGOL system" (PDF). Copenhagen: Regnecentralen. 3 Mayıs 2026 tarihinde kaynağından (PDF) arşivlendi. Erişim tarihi: 26 Mart 2015.
