Backus-Naur Form

La BNF (Backus-Naur Form o Backus Normal Form) è una metasintassi, ovvero un formalismo attraverso cui è possibile descrivere la sintassi di linguaggi formali (il prefisso meta ha proprio a che vedere con la natura circolare di questa definizione). Si tratta di uno strumento molto usato per descrivere in modo preciso e non ambiguo la sintassi dei linguaggi di programmazione, dei protocolli di rete e così via, benché non manchino in letteratura esempi di sue applicazioni a contesti anche non informatici e addirittura non tecnologici. La BNF viene usata nella maggior parte dei testi sulla teoria dei linguaggi di programmazione e in molti testi introduttivi su specifici linguaggi.

In termini formali, la BNF può essere vista come un formalismo per descrivere grammatiche libere dal contesto. La BNF fu proposta da John Backus nel corpo della definizione del linguaggio di programmazione ALGOL. L'acronimo BNF era inizialmente inteso come Backus Normal Form ("forma normale di Backus"); su suggerimento di Donald Knuth, fu in seguito riletto come Backus-Naur Form, in onore di Peter Naur, un altro membro del comitato ALGOL e pioniere dei linguaggi di programmazione (e più in particolare della realizzazione di compilatori).