Un linguaggio di programmazione, per essere definito ha bisogno di 3 cose:
- Alfabeto: insieme FINITO e NON VUOTO di simboli (caratteri).
- Concatenazione: operare sui simboli di un’alfabeto, creando stringhe.
- Stringa: si ottiene dalla concatenazione di un insieme di simboli.
Le cose che invece devono essere dichiarate in un linguaggio sono:
- SINTASSI: definita con la BNF
- SEMANTICA STATICA (tempo di compilazione): controlli da svolgere prima di eseguire il codice
- SEMANTICA DINAMICA (tempo di esecuzione): controlli da svolgere durante l’esecuzione.
Jacopini-Bohm afferma che è possibile definire qualsiasi linguaggio con sole 3 istruzioni:
- Sequenza: ordine di scrittura delle istruzioni concatenate da ( $;$ )
- Selezione: scelta tra due o più alternative ( if )
- Iterazione: ripetizione di una sequenza di istruzioni ( while )
Il linguaggio-L può quindi essere definito con soli questi comandi:
C ::= nil | Id = E | C;C | if (E) {C} [else {C}] | while (E) {C} | D;C
Tipi di dato
TIPI BASE:
OPERAZIONI:
- Int, Double (+, -, *, /, <, <, =)
- Bool (AND, OR, NOT)
- String (concatenazione)