> For the complete documentation index, see [llms.txt](https://swift.unicorndonkeys.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://swift.unicorndonkeys.com/riferimento-del-linguaggio/informazioni-sul-riferimento-del-linguaggio.md).

# Informazioni sul riferimento del linguaggio (About the Language Reference)

Impara a leggere la notazione usata dalla grammatica formale.

Questa parte del libro descrive la grammatica formale del linguaggio di programmazione Swift. La grammatica qui descritta ha lo scopo di aiutarti a comprendere il linguaggio in modo più dettagliato, piuttosto che di permetterti di implementare direttamente un parser o un compilatore.

Il linguaggio Swift è relativamente piccolo, perché molti tipi, funzioni e operatori comuni che compaiono praticamente ovunque nel codice Swift sono in realtà definiti nella libreria standard di Swift. Sebbene questi tipi, funzioni e operatori non facciano parte del linguaggio Swift in sé, sono usati ampiamente nelle discussioni e negli esempi di codice di questa parte del libro.

## Come leggere la grammatica <a href="#come-leggere-la-grammatica" id="come-leggere-la-grammatica"></a>

La notazione usata per descrivere la grammatica formale del linguaggio di programmazione Swift segue alcune convenzioni:

* Una freccia (→) è usata per contrassegnare le produzioni grammaticali e si può leggere come "può consistere di".
* Le categorie sintattiche sono indicate da testo in *corsivo* e compaiono su entrambi i lati di una regola di produzione grammaticale.
* Le parole e la punteggiatura letterali sono indicate da testo in **`grassetto a spaziatura fissa`** e compaiono solo sul lato destro di una regola di produzione grammaticale.
* Le produzioni grammaticali alternative sono separate da barre verticali (|). Quando le produzioni alternative sono troppo lunghe per essere lette facilmente, vengono suddivise in più regole di produzione grammaticale su nuove righe.
* In alcuni casi, del testo in carattere normale è usato per descrivere il lato destro di una regola di produzione grammaticale.
* Le categorie sintattiche e i letterali opzionali sono contrassegnati da un punto interrogativo finale, *?*.

A titolo di esempio, la grammatica di un blocco getter-setter è definita come segue:

{% hint style="info" %}
**Grammatica di un blocco getter-setter:**

*getter-setter-block* → **`{`** *getter-clause* *setter-clause?* **`}`** | **`{`** *setter-clause* *getter-clause* **`}`**
{% endhint %}

Questa definizione indica che un blocco getter-setter può consistere di una clausola getter seguita da una clausola setter opzionale, racchiuse tra parentesi graffe, *oppure* di una clausola setter seguita da una clausola getter, racchiuse tra parentesi graffe. La produzione grammaticale qui sopra equivale alle due produzioni seguenti, in cui le alternative sono scritte esplicitamente:

{% hint style="info" %}
**Grammatica di un blocco getter-setter:**

*getter-setter-block* → **`{`** *getter-clause* *setter-clause?* **`}`**\
*getter-setter-block* → **`{`** *setter-clause* *getter-clause* **`}`**
{% endhint %}
