Analisi lessicale

In questo articolo approfondiremo l'affascinante mondo di Analisi lessicale, esplorandone le origini, il suo impatto sulla società odierna e la sua rilevanza in vari campi. Dalle sue origini ad oggi, Analisi lessicale ha svolto un ruolo fondamentale nella storia dell'umanità, influenzando sia a livello culturale che tecnologico. In questa direzione analizzeremo in modo approfondito la sua evoluzione, le sue implicazioni e come ha plasmato il nostro modo di comprendere il mondo. Inoltre, approfondiremo le sue possibili implicazioni future, offrendo una visione ampia e complessa di questo intrigante fenomeno che continua a catturare l’attenzione di milioni di persone in tutto il mondo.

L'analisi lessicale è la conversione di un testo in una sequenza di token significativi (in senso semantico o sintattico) appartenenti a categorie definite da un programma apposito detto analizzatore lessicale o lexer. In caso di lingue naturali, queste categorie sono nomi, verbi o aggettivi, mentre in un linguaggio di programmazione sono identificatori, operatori, tipi di dato o simboli come parentesi.

La divisione in token lessicali è affine al tipo usato nei modelli linguistici grandi (LLM) ma con due differenze: mentre l'analisi lessicale si basa su una grammatica, l'analisi degli LLM è probabilistica. In più, quest'ultima effettua un secondo passaggio che converte i token in valori numerici.

Tipicamente l'analisi lessicale interviene nella parte di front end della compilazione e precede l'analisi sintattica.

Esempio

Ad esempio, dato in ingresso il seguente codice:

Programma Pippo
  intero i = 1;
end Pippo

Il flusso di token prodotto sarà il seguente:

Tipo Lessema (valore)
letterale Programma
identificatore Pippo
letterale intero
identificatore i
uguale =
numero 1
punto e virgola ;
letterale end
identificatore Pippo

Da notare che alcuni token potrebbero fare a meno del valore (lessema) (ad esempio il simbolo equal), poiché già indicati dalla tipologia.

Lo strumento che si occupa dell'analisi lessicale è l'analizzatore lessicale, a volte chiamato scanner o lexer.

Bibliografia