EBNF
La EBNF (Extended Backus-Naur form) è una delle varianti più conosciute della BNF (Backus-Naur form). Essa è la sua forma estesa (il termine può trarre in inganno, in quanto la descrizione di un dato linguaggio redatta utilizzando la EBNF sarà tipicamente meno estesa della descrizione dello stesso utilizzando solo la BNF).
La EBNF è definita come standard internazionale da ISO-14977[1], ma ad esempio il W3C utilizza una EBNF differente[2] per definire la sintassi XML: sebbene le espansioni rispetto alla BNF siano più o meno le stesse, i caratteri utilizzati per individuarle non sono universalmente condivisi.
Sintassi
[modifica | modifica wikitesto]La seguente tabella riassume le principali innovazioni rispetto alla BNF, evidenziando il fatto che l'EBNF è migliore dal punto di vista della leggibilità e della sinteticità, ma non amplia l'insieme dei linguaggi che si può produrre:
Descrizione | Con la sola BNF[3] | Con l'EBNF (1)[4] | Con l'EBNF (2) | Con l'EBNF (3) |
---|---|---|---|---|
Simbolo o gruppo di simboli opzionale | ε|a[5] | (a)? | {a}? | [a] |
Simbolo o gruppo di simboli ripetuto una o più volte | A:=a|Aa | (a)+ | {a}+ | {a} |
Simbolo o gruppo di simboli ripetuto zero o più volte | A:=ε|Aa | (a)* | {a}* | {[a]} |
Note
[modifica | modifica wikitesto]- ^ Specifiche dell'EBNF, rilasciate dall'ISO (file pdf zippato).
- ^ EBNF W3C Archiviato il 3 dicembre 2003 in Internet Archive..
- ^ la seconda colonna, a differenza delle successive, riporta delle produzioni, utilizzabili in maniera ricorsiva; è proprio per ridurre all'essenziale il numero di produzioni che è stata introdotta la EBNF.
- ^ le ultime 3 colonne riportano sistemi di notazioni effettivamente utilizzati, talvolta indipendentemente l'uno dall'altro, altre volte anche mescolati (tipicamente il 2 e il 3), anche se in alcuni casi mescolarli può complicare molto la loro interpretazione.
- ^ "ε" rappresenta la stringa nulla
Altri progetti
[modifica | modifica wikitesto]- Wikimedia Commons contiene immagini o altri file su EBNF
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Articolo "EBNF: A Notation to Describe Syntax", di Richard E. Pattis, che descrive le funzioni e la sintassi di EBNF
- (EN) Articolo "BNF and EBNF: What are they and how do they work?", di Lars Marius Garshol
- (EN) Articolo "The Naming of Parts", di John E. Simpson
- (EN) Citazioni da CiteSeer, su citeseer.ist.psu.edu.