18.5 tokenize -- Elaboratore di simboli per il sorgente Python

Il modulo tokenize fornisce uno scanner lessicale per il codice sorgente Python, implementato in Python. Lo scanner di questo modulo restituisce sia commenti che simboli, rendendolo utile nell'implementazione di stampe in forma elegante, inclusi decoratori per schermate a video.

Il punto di partenza iniziale è un generatore:

generate_tokens( readline)
Il generatore generate_tokens() richiede un argomento, readline, che deve essere un oggetto richiamabile, il quale fornisce la medesima interfaccia del metodo readline() incluso negli oggetti file built-in (vedete la sezione 2.3.9). Ogni chiamata alla funzione dovrebbe restituire una riga di input sotto forma di stringa.

Il generatore produce tuple di 5 elementi con questi membri: il tipo di simbolo; la stringa del simbolo; una tupla formata da 2 elementi (srow, scol) di numeri interi che specificano riga e colonna nel codice in cui il simbolo inizia; una tupla formata da 2 elementi (erow, ecol) di numeri interi che specificano riga e colonna nel codice in cui il simbolo finisce; e la riga in cui viene trovato il simbolo. La riga passata è quella logica; sono comprese le righe di continuazione. Nuovo nella versione 2.2.

Per retrocompatibilità viene mantenuto un vecchio punto di partenza:

tokenize( readline[, tokeneater])
la funzione tokenize() accetta due parametri: uno che rappresenta il flusso in input ed uno che fornisce un meccanismo di output per tokenize().

Il primo parametro, readline, deve essere un oggetto richiamabile che fornisce la stessa interfaccia del metodo readline() incluso negli oggetti file built-in (vedete la sezione 2.3.9). Ogni chiamata alla funzione dovrebbe restituire una riga di input sotto forma di stringa.

Il secondo parametro, tokeneater, deve essere anch'esso un oggetto richiamabile. Viene chiamato una volta per ogni simbolo, con cinque argomenti che corrispondono alle tuple generate da generate_tokens().

Tutte le costanti provenienti dal modulo token vengono esportate anche da tokenize, inoltre ci sono due valori aggiuntivi di tipi di simbolo che possono venire passati alla funzione tokeneater da tokenize():

COMMENT
Valore di simbolo utilizzato per indicare un commento.
NL
Valore di simbolo utilizzato per indicare un fine riga non terminante. Il simbolo NEWLINE indica la fine di una riga logica di codice Python; i simboli NL vengono generati quando una riga logica di codice continua su più righe fisiche.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.