Title: Linguaggi di Programmazione Primo Semestre / 02 - Grammatiche

Q: ## Tre dimensioni dei linguaggi
A: - **sintassi** → la **correttezza** di una frase/le regole di formazione delle frasi (relazione tra segni), ci sono 2 aspetti fondamentali:
    - aspetto lessicale → parole che si possono usare (uso un **dizionario**)
    - aspetto grammaticale → come costruire frasi corrette tramite il lessico
- **semantica** → il **significato** di una frase (relazione tra segni e significato)
    - è importante sapere la lingua di appartenenza della parola
- **pragmatica** → l'**utilizzo** che viene fatto delle frasi/in che modo viene usata la lingua/il contesto in cui usare certe frasi (relazione tra segni, significato e utente)
Se si parla di linguaggi di programmazione si aggiunge:
- l'**implementazione** → come **eseguire** una frase corretta sintatticamente corretta, rispettandone la semantica

Q: Def: lessico
A: L' elemento base del lessico è:
- l'alfabeto → un insieme tipicamente finito di caratteri con cui costruisco:
    - il lessico ***→*** insieme di *sequenze finite* (parole) costruite con lettere con cui costruisco:
        - frasi → un insieme di *sequenze finite* costruite con parole
A* è un insieme infinito contabilie, perchè può esssere ordinato

## Definizione Lunghezza, concatenazione, sottostringa

Definizione: Prefisso,Suffisso, potenza n-esima

## Operazioni sui linguaggi, complemtento, unione, intersezione e concatenazione

## Potenza e stella di Kleene di un linguaggio

## Cardinalità di un linguaggio

## 2 Techiniche per il riconoscimento del linguaggio corretto

Q: Esprimere una grammatica come BNF e come regola di inferenza
A: Notazione che serve per rappresentare le grammatiche dei linguaggi di programmazione
esempio:
di solito però utilizziamo una grammatica che viene espressa nel seguente modo
si dividono in caratteri:
- simboli terniali : sono simboli che non sono ricorsinvi
- simboli non terminali : sono simboli ricorsivi
Si può scrivere anche come regole di inferenza

## Def : Grammatica Libera dal Contesto

## Def: Linguaggio generato da una grammatica, derivazioni

## Def: Alberi di derivazione e albero sintattico

Q: Definizione di linguaggio e grammatica ambigua
A: Osservazioni:
- a non tutte le grammatiche è possibile togliere l'ambiguità

Q: ## Def: Linguaggio libero
A: è un linguaggio che può essere generato da una grammatica libera

Q: Prep: unione di due linguaggi liberi e non ambigui
A: L'unione di due linguaggi liberi è sicuramente un linguaggio libero
ma non è detto che il linguaggio risultante sia non ambiguo

Q: Def: Sintassi Concreta
A: grammatica non ambigua che fa uso di zucchero sintattico

Q: Risolvere le ambiguità
A: Ci sono vari modi per risolvere le ambiguità,un esempio che abbiamo visto in classe per esempio, prima dava un ordine agli operatori, ma come conseguenza aveva che non era più possibile creare tutti gli alberi sintattici.
Così per ottenere quasi lo stesso linguaggio abbiamo aggiunto le parentesi, che sono terminali ausiliari che servono per l'albero di derivazione e per dare una precedenza, ma vengono ingorati nel albero sintattico.

Def: Sintassi astratta