BNF

Fra Wikipedia, den frie encyklopædi

Backus-Naur form (BNF-form) er en metasyntax, dvs. en formel måde at beskrive formelle sprog.

BNF er en meget udbredt notation til at beskrive grammatikken af programmeringsprog. De fleste lærebøger om teorien bag programmering beskriver programmeringssprog i BNF.

I BNF bruges nogle få simple symboler, som alle kan skrives på en skrivemaskine. Der bruges følgende symboler:

  • < > markerer et begreb, der ikke er beskrevet til bunds.
  • | bruges som "eller".
  •  ::= læses som "består af".

Begreber, der er kendte, skrives som de er.

[redigér] Overblik

BNF er opkaldt efter John Backus og danskeren Peter Naur. De var pionerer i datalogi med speciale i design af compilere. BNF har klare ligheder med Paninis regler for grammatik, og BNF bliver derfor også nogle gange omtalt som Panini-Backus-formen. BNF blev oprindeligt lavet for at kunne beskrive reglerne i ALGOL 60.

[redigér] Eksempel

Beskrivelse af heltal.

<heltal> ::= <positivt heltal> | <nul> | <negativt heltal>
<positivt heltal> ::= <positivt ciffer> | <positivt heltal> <ciffer>
<nul> ::= 0
<negativt heltal> ::= - <positivt heltal>
<ciffer> ::= <positivt ciffer> | <nul>
<positivt ciffer> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

Som det fremgår af eksemplet beskrives gentagelser rekursivt. I eksemplet er et positivt heltal beskrevet som et positivt ciffer eller et positivt heltal efterfulgt af et ciffer. Eksempelt viser også nogle af begrænsningerne i BNF. Opremsning af beslægtede værdier er omstændig, og valgfrie elementer er ikke markerede som sådanne. EBNF løser disse problemer.

Denne it-artikel er kun påbegyndt. Hvis du ved mere om emnet, kan du hjælpe Wikipedia ved at udvide den.