|
|
|
La libreria di riferimento di Python |
|
|
|
18.1.2 Conversione di oggetti AST
Gli oggetti AST, indipendentemente dall'input usato per crearli,
possono venire convertiti in alberi di analisi rappresentati come
alberi di liste o tuple, oppure possono venire compilati in
oggetti di codice eseguibile. Alberi di analisi possono venire
estratti con o senza le informazioni sul numero di riga.
ast2list( |
ast[, line_info]) |
-
Questa funzione accetta un oggetto AST dal chiamante come parametro
ast e restituisce una lista Python che rappresenta
l'albero di analisi equivalente. La rappresentazione della lista risultante può
essere usata per l'ispezione o per la creazione di un nuovo albero
di analisi sotto forma di lista. Questa funzione non fallisce finché è
disponibile memoria per costruire la rappresentazione della lista. Se
l'albero di analisi verrà usato soltanto per l'ispezione, si dovrebbe invece utilizzare
ast2tuple() per ridurre il consumo e la frammentazione
della memoria. Quando viene richiesta la rappresentazione della
lista, questa funzione è significativamente più veloce rispetto al
recupero della rappresentazione sotto forma di tupla e la conversione di
questa in liste annidate.
Se line_info è vero, l'informazione relativa
al numero di riga verrà inclusa per tutti i simboli terminali come
terzo elemento della lista che rappresenta il simbolo. Notate che il
numero di riga fornito specifica la riga sulla quale il simbolo
termina. Questa informazione viene omessa se l'opzione ha un
valore falso o viene omessa.
ast2tuple( |
ast[, line_info]) |
-
Questa funzione accetta dal chiamante un oggetto AST come
parametro ast e restituisce una tupla Python che rappresenta
l'albero di analisi equivalente. A parte restituire una tupla
invece di una lista, questa funzione è identica ad
ast2list().
Se line_info è vero, l'informazione relativa al
numero di riga verrà inclusa per tutti i simboli terminali come
terzo elemento della lista che rappresenta il simbolo. Questa
informazione viene omessa se l'opzione ha valore falso o viene omessa.
compileast( |
ast[, filename = '<ast>' ]) |
-
Il compilatore di bytecode Python può venire invocato su un oggetto AST
per produrre oggetti di codice che possano essere utilizzati come
parti di un'istruzione exec o di una chiamata alla funzione
built-in eval(). Questa funzione
fornisce l'interfaccia al compilatore, passando l'albero di analisi
interno dal parametro ast al parser, usando il nome del file
sorgente specificato dal parametro filename. Il valore
predefinito fornito per filename indica che il sorgente era un
oggetto AST.
Compilare un oggetto AST può generare eccezioni relative alla
compilazione; un esempio sarebbe un'eccezione SyntaxError
provocata dall'albero di analisi per del f(0)
: questa istruzione
viene considerata corretta all'interno della grammatica formale di
Python, ma non lo è come costrutto del linguaggio. L'eccezione
SyntaxError sollevata per questa condizione viene
di solito realmente generata dal compilatore bytecode di Python,
il che è la ragione per cui possa venire sollevata a questo punto dal
modulo parser. La maggior parte delle cause degli errori di
compilazione possono essere diagnosticate sistematicamente ispezionando
l'albero di analisi.
|
|
|
La libreria di riferimento di Python |
|
|
|
Release 2.3.4, documentation updated on 21. maggio 2005.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.