Da Wikipedia, l'enciclopedia libera.
La BNF (Backus-Naur Form o Backus Normal Form) è una metasintassi, ovvero un formalismo attraverso il quale è 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 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 durante la 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).
Introduzione
Una specifica BNF è un insieme di regole di derivazione, ciascuna espressa nella forma:
o nella forma equivalente:
Le due forme sono assolutamente equivalenti. La prima forma (che verrà utilizzata nel seguito) utilizza caratteri ASCII standard ed è quella più utilizzata per scrivere grammatiche che devono essere utilizzate dai calcolatori e lette in file di testo. La seconda forma è meno utilizzabile nella pratica ma è comune nei testi e negli articoli di informatica teorica in quanto meglio esprime l'operazione di derivazione delle stringhe di un linguaggio a causa dell'applicazione delle regole di derivazione.
Nelle regole di derivazione
I simboli che non appaiono mai a sinistra di una regola di derivazione sono detti terminali. I terminali sono in un certo senso il punto di arrivo, perché rappresentano elementi che si troveranno effettivamente in un testo scritto secondo le regole sintattiche che la specifica BNF descrive. I simboli nonterminali, viceversa, sono strumenti utilizzati esclusivamente dalla BNF e sono racchiusi tra <>; si può dire che essi rappresentano gli elementi astratti della grammatica.
2 commenti:
any news coming ?
I should email my pal about this.
Posta un commento