Backus Shape - Naura

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 4. april 2016; checks kræver 8 redigeringer .

Backus form - Naur (abbr. BNF , Backus  - Naura form ) er et formelt syntaksbeskrivelsessystem , hvor nogle syntaktiske kategorier er sekventielt defineret gennem andre kategorier. BNF bruges til at beskrive kontekstfri formelle grammatikker . Der er en udvidet form Backus - Naura , der kun adskiller sig i mere rummelige designs.

Bruges til at beskrive syntaksen af ​​programmeringssprog, data, protokoller (f.eks. i RFC -dokumenter ) osv. (både grammatik og almindeligt ordforråd, da almindelige grammatikker er en delmængde af kontekstfrie ).

Beskrivelse

Terminologien i denne artikel kan afvige fra den traditionelle.

BNF-konstruktionen definerer et begrænset antal symboler ( ikke -terminaler ). Derudover definerer den reglerne for udskiftning af et tegn med en sekvens af bogstaver (terminaler) og symboler. Processen med at opnå en bogstavkæde kan defineres i etaper: i begyndelsen er der et tegn (tegn er normalt omgivet af vinkelparenteser, og deres navn indeholder ingen information). Så er dette symbol erstattet af en eller anden række af bogstaver og symboler, ifølge en af ​​reglerne. Derefter gentages processen (ved hvert trin erstattes et af tegnene med en sekvens ifølge reglen). Til sidst opnås en kæde, der består af bogstaver og ikke indeholder symboler. Det betyder, at den resulterende streng kan udledes af starttegnet.

BNF-konstruktionen består af flere sætninger af formen

<tegn, der skal defineres> ::= <sidste1> | <last.2> | . . . | <last.n>

beskriver reglerne. En sådan regel betyder, at et tegn <определяемый символ>kan erstattes af en af ​​sekvenserne <посл.n>. Definitionens tegn ser normalt ud som ::=eller →, men andre variationer er mulige.

Nogle specialtegn, såsom <пусто>, betyder en eller anden sekvens (i dette tilfælde en tom).

Konstruktionseksempler

<rightseq> ::= <tom> | (<rightseq>) | <rightlast><rightlast>

Dette er en simpel konstruktion, der kun består af én regel, der siger, at et tegn <правпосл>kan erstattes enten af ​​et tomt mellemrum eller af det samme tegn <правпосл>omgivet af parenteser, eller af to tegn i <правпосл>træk.

Beskrivelse ifaf PASCAL-sprogoperatøren i udvidet BNF:

<betinget operator if> ::= hvis <boolesk udtryk> derefter <operator> [else <operator>] <boolesk udtryk> ::= "IKKE" <boolesk udtryk> | <boolesk udtryk> <logisk operation> <boolesk udtryk> | <udtryk> <sammenligningsoperator> <udtryk> <logisk operation> ::= "ELLER" | "OG" <udtryk> ::= <variabel> | <streng> | <karakter> <sammenligningsoperation> ::= "=" | " < " | " > " …