Бакус–Наурова формаУ рачунарству, Бакус–Наурова форма (Бакусова нотација или БНФ) је мета језик који се користи за изражавање контекстно слободних граматика: то је формални начин да се опишу формални језици. Џон Бакус и Питер Наур, су развили контекстно слободну граматику да би дефинисали синтаксу програмских језика, користећи две групе правила: тј, лексичка правила и синтаксичка правила. БНФ је широм коришћена нотација за граматике програмских језика, листа инструкција и комуникацијских протокола, као и нотација за представљање граматика свакодневног језика. У Бакусовој нотацији синтакса програмског језика описује се помоћу коначног скупа металингвистичких формула (МЛФ). Постоје многа проширења и варијанте БНФ-а. ИсторијаЏон Бакус је створио нотацију да би изразио граматику АЛГОЛ-а. На Првом светском рачунарском конгресу, који је одржан у Паризу 1959. године, Бакус је представио Синтаксу и семантику предложеног интернационалног алгебарског језика на АЦМ-ГАММ конференцији у Цириху, формални опис ИАЛ-а, који је касније назван АЛГОЛ 58. Формални језик који је он представио, заснован је на систему извођења Емила Поста. Генеративне граматике биле су активни предмет математичке студије, као на пример Ноама Чомског, који их је користио у граматици свакодневног језика. Питер Наур, (АЛГОЛ 60, 1963) дефинисао је Бакусову нотацију као Бакусову нормалну форму и поједноставио је да би умањио класу коришћених карактера и, на предлог Доналда Кнута, његово име је додато као признање његовог доприноса. Кнут је демантовао његово првобитно замењивање Н за Нормална, говорећи да БНФ није нормална форма у било ком смислу. Граматике БНФ-а имају значајне сличности са правилима Панинијеве граматике, тако да се нотација често тумачи као Панини-Бакус форма. УводУ БНФ-у се користе следеће конвенције за записивање правила граматике:
Симболи који се никада не појављују на левој страни правила су терминали. ПримерКао пример, узмимо у обзир ову БНФ за поштанску адресу у САД: <поштанска-адреса> ::= <део-за-име> <улица> <зип-део>
<део-за-име> ::= <лични-део> <презиме> <опц-јр-део> <ЕОЛ>
| <лични-део> <део-за-име>
<лични-део> ::= <име> | <иницијали> "."
<улица> ::= <опц-бр-стана> <кућни-број> <улица> <ЕОЛ>
<зип-део> ::= <име-града> "," <државни-број> <поштански-број> <ЕОЛ>
<опц-јр-део> ::= „Ср." | „Јр." | <римски-број> | ""
Ово се преводи на енглески као:
Ваља приметити да многе ствари (као што су формат имена, описивање стана, поштанског броја и римских цифара) су овде остављене неодређене. Ако је потребно, она могу бити описана користећи додатна правила БНФ-а. Даља објашњењаСама синтакса БНФ-а може бити представљена БНФ-ом као следеће: <синтакса> ::= <правило> | <правило> <синтакса>
<правило> ::= <опц-белина> "<" <име-правила> ">" < опц-белина > "::="
< опц-белина > <израз> <крај-линије>
< опц-белина > ::= " " < опц-белина > | "" <!-- "" је празна ниска, тј. нема белине -->
<израз> ::= <листа> | <листа> "|" <израз>
<крај-линије> ::= < опц-белина > <ЕОЛ> | <крај-линије> <крај-линије>
<листа> ::= <терм> | <терм> < опц-белина > <листа>
<терм> ::= <литерал> | "<" <име-правила> ">"
<литерал> ::= '"' <текст> '"' | "'" <текст> "'" <!—у ствари, оригинални БНФ не користи наводнике -->
Ово симулира да белина није потребна за одговарајуће тумачење. <ЕОЛ> представља одговарајући опис краја линије (у ASCII запису, повратак на почетак реда и/или нови ред, зависно од оперативног система). <име-правила> и <текст> морају да буду замењени декларисаним именом/ознаком правила или дословним текстом. ВаријантеПостоје многе варијанте и проширења БНФ-а, или због једноставности и сажетости или да је прилагоде одређеном коришћењу. Једно од заједничких обележја многих варијанти је употреба регуларног израза, понављање операција Тумачење израза граматика надограђује се на БНФ и на нотације регуларног израза да би се формирала алтернативна класа формалних граматика, која је суштински аналитичка пре него генеративна по карактеру. Многе БНФ спецификације које су данас доступне путем Интернета намењене су да буду читљиве људима и оне су неформалне. Оне често укључују многа од следећих правила и проширења синтаксе:
Види још
Спољашње везе
Корисни страни линкови
|
Portal di Ensiklopedia Dunia