EBNF

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

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]

  1. ^ Specifiche dell'EBNF, rilasciate dall'ISO (file pdf zippato).
  2. ^ EBNF W3C Archiviato il 3 dicembre 2003 in Internet Archive..
  3. ^ 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.
  4. ^ 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.
  5. ^ "ε" rappresenta la stringa nulla

Altri progetti[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]