Analizzatore lessicale: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m removed Category:Paradigmi di programmazione; added Category:Analisi lessicale usando HotCat |
sistemo prosa |
||
| (3 versioni intermedie di 3 utenti non mostrate) | |||
Riga 1:
{{F|programmazione|febbraio 2013}}
Un '''analizzatore lessicale'''
Il ''token'' è un elemento che ha un nome
== Funzionamento ==▼
▲Il ''token'' è un elemento che ha un nome, 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.
L'individuazione di ''token'' all'interno di
▲L'individuazione di ''token'' all'interno di uno stream di caratteri è effettuata attraverso [[pattern]] (schemi, modelli).
▲== Funzionamento ==
cifra = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0
numero = cifra cifra*
operatore = + | - | x | /
Il simbolo ''*'', asterisco, indica che l'elemento che lo precede può essere ripetuto zero o più volte.▼
▲
Il modello sopra specifica che una cifra è un numero da 1 a 0, mentre un numero è composto da una o più cifre; un operatore è invece il segno più, meno, per e diviso. Secondo questo modello, la stringa <code>123 + 141 / 725</code> produrrà la seguente sequenza di ''token'', trascurando gli spazi.
{|
! Tipo
! Lessema (valore
|-
| numero
Riga 47 ⟶ 34:
|}
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
[[File:Automa di un analizzatore lessicale.png]]
▲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.
Si inizia dallo stato iniziale (1), e in base al carattere in arrivo ci si può spostare allo stato 2 o al 4. Se arriva una cifra ci si sposterà al 2, e rimarremmo qui finché non arriva qualcosa di diverso da una cifra, in tal caso passeremo allo stato 3. In questo stato, stato di riconoscimento, produrremmo il ''token'', in questo caso di tipo numero, e lo invieremo in uscita. Dopo il riconoscimento si tornerà allo stato iniziale sempre con lo stesso valore di prima.
{| border="1"
! Carattere
! Stato
! Azione
|-
Riga 120 ⟶ 104:
*[[Analisi sintattica]]
*[[Compilatore]]
{{Portale|informatica}}
[[Categoria:Analisi lessicale]]
| |||