Backus-Naur Form: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Riga 1:
La '''BNF''' ('''Backus-Naur Form''' o '''Backus Normal Form''') è una [[metasintassi]], ovvero un [[formalismo]] attraverso cui è possibile descrivere la [[sintassi (informatica)|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 [[linguaggio di programmazione|linguaggi di programmazione]], dei [[protocollo di rete|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 [[grammatica libera dal contesto|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 [[linguaggio di programmazione|linguaggi di programmazione]] (e più in particolare della realizzazione di [[compilatore|compilatori]]).
 
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 [[linguaggio di programmazione|linguaggi di programmazione]] (e più in particolare della realizzazione di [[compilatore|compilatori]]).
 
== Introduzione ==