Analizzatore lessicale: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pil56-bot (discussione | contributi)
smistamento lavoro sporco
Descrizione più precisa delle componenti di un token. Riferimenti alle espressioni regolari per la generazione degli analizzatori lessicali.
Riga 4:
Quindi il compito di un analizzatore lessicale è di analizzare uno stream di caratteri in input e produrre in uscita uno stream di ''token''.
 
Il ''token'' è un elemento che ha un tiponome, il ''token name,'' e un valore, tipicamente il [[lessema]] ma può trattarsi anche di un insieme di informazioni elementari come il tipo del numero o il punto del programma in cui è definito.
I ''token'' costituiscono gli elementi base su cui andrà ad operare un [[analizzatore sintattico]].
 
Riga 10:
 
== Funzionamento ==
Come scritto prima l'analizzatore lessicale individua i ''token'' attraverso i pattern, prendiamodefiniti attraverso delle [[espressioni regolari]]. Prendiamo ad esempio questi pattern:
<code>
cifra = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
numero = cifra cifra*
operatore = + | - | x | /
</code>
 
Riga 49:
Da notare come gli spazi bianchi vengano saltati.
 
Per effettuare questo lavoro gli analizzatori lessicali si basano su un [[automa a stati finiti deterministico]], strettamente collegati alle [[espressioni regolari]]. Si parte da uno stato iniziale, e ci si sposta negli altri stati in base al carattere in ingresso sino a quando non si raggiunge uno stato di accettazione nel quale si può inviare il ''token'' in output.
Ad esempio per il nostro modello avremmo un automa simile al seguente: