[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
In molti documenti si usa la «notazione BNF» per mostrare la sintassi di qualcosa, particolarmente quando si tratta della descrizione formale dei linguaggi di programmazione. La sigla BNF sta per Backus Naur form, a ricordare che si tratta di una notazione introdotta da John Backus e Peter Naur, tra il 1959 e il 1960.
La notazione BNF utilizza pochi simboli per attribuire un significato a ciò che descrive:
|
A titolo di esempio, viene mostrata la definizione di una lettera dell'alfabeto latino, suddividendo il problema, definendo cosa sono le lettere latine minuscole e cosa sono le lettere latine maiuscole:
<lettera_alfabeto_latino> ::= <lettera_alfabeto_latino_maiuscola> | <lettera_alfabeto_latino_minuscola> |
<lettera_alfabeto_latino_maiuscola> ::= A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
<lettera_alfabeto_latino_minuscola> ::= a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
Di fatto, la notazione BNF viene usata estendendo leggermente la simbologia, per semplificarne la lettura ed evitare ambiguità, ma a volte la simbologia viene anche cambiata leggermente.
|
Segue un esempio molto semplice, dove si vede l'uso delle parentesi quadre, graffe e dei puntini di sospensione, per descrivere un'istruzione condizionale di un certo linguaggio, senza però entrare troppo nel dettaglio:
<istruzione_condizionale> ::= IF <espressione_logica> THEN <sequenza_di_istruzioni> [ ELSE <sequenza_di_istruzioni> ] END FI <sequenza_di_istruzioni> ::= { <istruzione> | <commento> | <riga_bianca> }... |
Segue lo stesso esempio, modificato in modo da evidenziare i nomi di categoria, evitando così l'uso delle parentesi angolari:
istruzione_condizionale ::= IF espressione_logica THEN sequenza_di_istruzioni [ ELSE sequenza_di_istruzioni ] END FI sequenza_di_istruzioni ::= { istruzione | commento | riga_bianca }... |
Th. Estier, What is BNF notation?
<http://cui.unige.ch/db-research/Enseignement/analyseinfo/AboutBNF.html>
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome notazione_bnf.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]