Backus Shape - Naura

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2016. április 4-én felülvizsgált verziótól ; az ellenőrzések 8 szerkesztést igényelnek .

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

Leírás

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

Építési példák

  • Íme egy példa egy BNF-konstrukcióra, amely szabályos zárójelsorozatokat ír le :
<rightseq> ::= <üres> | (<rightseq>) | <rightlast><rightlast>

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> ::= "=" | " < " | " > " …