Title: Linguaggi di Programmazione Primo Semestre / 03 - Compilatori

Q: Vincoli sintattici contestuali
A: Non sono esprimibili da grammatiche libere
Ci sono due soluzioni:
- usare grammatiche dipendenti dal contesto, il controllo \(w\in L(G) \) richiede un tempo esponenziale sull'input
- usare controlli ad hoc: come l'analisi semantica nei compilatori

Q: sintassi , pragmatica e semantica nei linguaggi di programmmazione
A: nei linguaggi di programmazione, la sintassi e semantica si definiscono:
- sintassi : quello che si descrive con la BNF
- semantica: tutto il resto tra cui i vincoli contestuali
- pragmatica: insieme di "regole/best practice"
- implementazione: scrivere un compilatore o interprete

Q: semantica statica e dinamica
A: semantica statica sono i check che possono essere fatti dal senza eseguire il programma, mentre la semantica dinamica dipende dall'input dell'utente.
Per la semantica dinamica bisogna quindi creare un modello matematico che descriva il comportamento del programma indipendentemente dall'architettura su cui viene utilizzato(l'implementazione del linguaggio deve seguire questa specifica)

Q: Struttura di un compilatore
A: - Analisi lessicale : guarda la correttezza delle parole
- Analisi Sintattica: cerca di capire se queste parole creano un elemento del linguaggio generato dalla grammatica
- Analisi semantica (statica)

Analisi Lessicale

Analisi Sintattica

Analisi Semantica

Esempio di compilazione dell'istruzione

Sistema di transazione

Q: Semantica delle espressioni aritmetiche
A: dove restituiscire il valore della variabile
itera sul sottotermine primo finchè non diventa un valore
dove m è un numero
dove m e m' sono numeri
gli scambia perchè non si possono avere numeri negativi in questo linguaggio

Q: Definizione dela Funzione Eval, rispetto alla disciplina di valutazione
A: Eval si può devinire anche con la disciplina di valutazione mettendola al pedice

Equivalenza tra espressioni

Q: Disciplina di Valutazione
A: Le valutazoni delle espressioni possono essere
- P = parallele
- S = sinistra
- D = destra
e sono valutate in modo
- E = esterno
- I = interno

Def: sintassi linguaggio di programmazione

Definizione: Semantica aritmetica

Teorema e dim: Determinatezza relazione di transizione

Semantica Espressioni booleane

Definizione Semantica dei comandi