Backus-Naur Form: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 6:
== Introduzione ==
Una '''specifica BNF''' è un insieme di '''regole di derivazione''',
:<simbolo> ::= __espressione__
o nella forma equivalente:
dove <simbolo> (i caratteri < e > sono obbligatori) viene detto un '''simbolo nonterminale''' e __espressione__ è costituita da una o più sequenze di simboli '''terminali''' (vedi sotto) o nonterminali (identificati dal fatto di essere racchiusi tra < >); se le sequenze sono più di uno esse sono separate dalla barra verticale '|'. La regola esprime il fatto che il nonterminale a sinistra della regola può essere ''sostituito'' da una qualsiasi delle sequenze indicate sulla destra (come chiariremo a breve). Inoltre in una sequenza alcuni simboli o sottosequenze possono essere indicati come opzionali racchiudendoli fra parentesi quadre. ▼
:<simbolo> → __espressione__
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.
▲
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.
|