Backus forma - Naur (röv. BNF , Backus - Naura forma ) egy formális szintaxisleíró rendszer , amelyben egyes szintaktikai kategóriák egymás után más kategóriákon keresztül vannak meghatározva . A BNF a kontextusmentes formális nyelvtan leírására szolgál . Létezik egy kiterjesztett Backus - Naura forma , amely csak a tágasabb kivitelben különbözik.
Programozási nyelvek, adatok, protokollok (például RFC dokumentumokban ) stb. szintaxisának leírására szolgál (mind a nyelvtan, mind a reguláris szókincs, mivel a reguláris nyelvtan a kontextusmentes nyelvtanok egy részhalmaza ).
A cikk terminológiája eltérhet a hagyományostól.
A BNF konstrukció véges számú szimbólumot ( nem terminálokat ) határoz meg. Ezenkívül meghatározza a karakterek valamilyen betűsorozattal (terminálokkal) és szimbólumokkal való helyettesítésének szabályait. A betűlánc megszerzésének folyamata szakaszosan definiálható: kezdetben egy karakter (a karakterek általában szögletes zárójelben vannak, és a nevük nem hordoz semmilyen információt). Ezután ezt a szimbólumot valamilyen betű- és szimbólumsorozat váltja fel, az egyik szabály szerint. Ezután a folyamat megismétlődik (minden lépésben az egyik karaktert egy sorozat helyettesíti, a szabály szerint). A végén egy láncot kapunk, amely betűkből áll, és nem tartalmaz szimbólumokat. Ez azt jelenti, hogy a kapott karakterlánc levezethető a kezdő karakterből.
A BNF konstrukció az űrlap több mondatából áll
<definiálandó karakter> ::= <utolsó1> | <utolsó.2> | . . . | <utolsó.n>a szabályok leírása. Egy ilyen szabály azt jelenti, hogy egy karakter <определяемый символ>helyettesíthető valamelyik sorozattal <посл.n>. A definíció jele általában úgy néz ki, mint ::=vagy →, de más változatok is lehetségesek.
Egyes speciális karakterek, például a <пусто>, valamilyen sorozatot jelentenek (ebben az esetben egy üreset).
Ez egy egyszerű konstrukció, amely csak egy szabályból áll, és kimondja, hogy egy karakter <правпосл>helyettesíthető üres szóközzel, vagy ugyanazzal <правпосл>a zárójelbe tett karakterrel, vagy két karakterrel <правпосл>egymás után.
A PASCAL nyelvi operátor leírása ifa kiterjesztett BNF-ben:
<feltételes operátor if> ::= if <logikai kifejezés>, majd <operátor> [else <operátor>] <logikai kifejezés> ::= "NEM" <logikai kifejezés> | <logikai kifejezés> <logikai művelet> <logikai kifejezés> | <kifejezés> <összehasonlító operátor> <kifejezés> <logikai művelet> ::= "VAGY" | "ÉS" <kifejezés> ::= <változó> | <karakterlánc> | <karakter> <összehasonlítási művelet> ::= "=" | " < " | " > " …