Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il linguaggio di Backus-Naur

Vediamo come editare programmi formalmente corretti
Vediamo come editare programmi formalmente corretti
Link copiato negli appunti

Prima di andare avanti permettetemi di affermare che uno degli aspetti più importanti quando si sviluppa un programma è quello di poter (e saper) scrivere correttamente un programma. Da quando sono nati i linguaggi di programmazione sono stati scritti libri e sono stati fatti corsi e seminari sul "come" scrivere programmi sensati. Quindi questa lezione e la prossima trattano (in maniera volutamente poco approfondita) il linguaggio di Backus-Naur e l'indentazione, il primo utile per scrivere programmi formalmente corretti ed il secondo importante per organizzare in maniera chiara il codice scritto.

Quando si esamina un linguaggio di programmazione occorre considerare due aspetti, la sintassi e la semantica: la prima rappresenta le regole che permettono di scrivere in maniera corretta le frasi del linguaggio, la seconda specifica il significato delle frasi, distinguendo tra quelle che hanno un significato e quelle che, invece, non ne hanno.
Per definire questi due aspetti occorre utilizzare un metalinguaggio, la cui definizione per la semantica risulta assai complessa, mentre per la sintassi il metalinguaggio è in genere costituito da un insieme di notazioni (non ambigue), simboliche o grafiche, che possono essere spiegate facilmente con il linguaggio naturale.
Nella fattispecie parleremo del linguaggio di Backus-Naur (BNF, Backus-Naur Form) utilizzato a livello internazionale nel campo della programmazione per definire la sintassi dei linguaggi. Quella che presentiamo qui è solamente una piccola infarinatura sul funzionamento e sulle ampie possibilità descrittive di questo linguaggio.

Per spiegare il corretto funzionamento prendiamo un piccolo sottoinsieme della lingua italiana scritta, in cui la sintassi del linguaggio è definita da alcune regole, ognuna delle quali descrive una struttura (o categoria sintattica). Proviamo a formalizzare la sintassi di una frase, attenendoci alla struttura seguente:


frase:
   soggetto  verbo  .
soggetto:
   articolo  nome
articolo:
  one of

   il  la


nome:
  one of

   cane  gatto  fiume  macchina  prato


verbo:
  one of

   corre  beve  salta


Queste regole stabiliscono che una frase deve essere obbligatoriamente formata da un articolo, un nome, un verbo e dal segno di interpunzione "."; questo naturalmente vale per le regole che abbiamo definito, le quali possono essere estese anche in vari modi, vediamo sotto qualche esempio:

Elemento Opzionale - Un elemento opzionale viene generalmente contraddistinto dal pedice opt e indica appunto che tale elemento non è indispensabile per la costruzione di una "frase".


frase:
   soggetto  aggettivo
 opt  verbo  .

Elemento Ripetuto (o Ricorsivo) - A volte abbiamo bisogno che alcuni elementi si ripetano in maniera ricorsiva, questo per poter definire più elementi dello stesso tipo uno dopo l'altro.


frase:
   soggetto  verbo  complemento-list
 opt  .

complemento-list:
   complemento
   complemento  complemento-list

complemento:
   articolo  nome
   preposizione  nome

Tale lista rappresenta una lista generica, ma esiste anche la lista separata da una virgola, il cui nome termina con il suffisso -clist, dove c rappresenta il termine inglese comma (virgola). Ripetendo l'esempio precedente


frase:
   soggetto  verbo  complemento-clist
 opt  .

complemento-clist:
   complemento
   complemento  ,  complemento-clist

complemento:
   articolo  nome
   preposizione  nome

Elemento Incompleto - Quando abbiamo una lista di regole in forma incompleta, sarà usata l'espressione "...more..." per indicare che alcune alternative sono state omesse, secondo lo schema seguente:


element:
   alternative


   ... more ...

A questo punto possiamo proporre la nuova sintassi estesa, basandoci su ciò che abbiamo appena illustrato:


frase:
   soggetto  verbo  complemento-list
 opt  .
soggetto:
   articolo  aggettivo
 opt  nome
articolo:
  one of

   il  la


aggettivo:
  one of

   mio  tuo


nome:
  one of

   cane  gatto  fiume  macchina  prato


verbo:
  one of

   corre  beve  salta


complemento-list:
   complemento
   complemento  complemento-list
complemento:
   articolo  nome
   preposizione  nome
preposizione:
  one of

   nella  sul


Proviamo a costruire alcune frasi con questa sintassi:

  • Il mio cane corre sul prato.
  • Il tuo gatto salta sulla macchina.
  • Il fiume beve sul mio cane.
  • Il tuo prato corre nella macchina.

Come possiamo vedere tutte le frasi sono "sintatticamente" corrette, ma solo le prime due sono corrette dal punto di vista semantico. Questa è la cosa a cui il programmatore deve fare più attenzione, infatti un compilatore è in grado di trovare tutti gli errori sintattici, ma difficilmente individuerà una struttura programmativa senza senso, come ad esempio un ciclo che non finisce, sintatticamente corretto ma errore grave da evitare per il corretto funzionamento del programma e per una futura modifica del codice da parte di un'altra persona.
Quindi studiare la sintassi è indubbiamente molto utile e il linguaggio di Backus-Naur permette di comprendere le regole essenziali per scrivere un programma, ma il buonsenso e l'organizzazione logica di un programma sono cose che difficilmente si possono insegnare tramite un libro, ma si acquisiscono programmando giorno dopo giorno.

Questa lezione è liberamente tratta dal libro "Introduzione alla Programmazione ed elementi di strutture dati con il linguaggio C++" - A.Domenici, G.Frosini


Ti consigliamo anche