Generar AST de un archivo fuente PHP
parsing lexer (5)
Bueno, puede ver las respuestas de Parsing e Impresión de código PHP y Generación de código PHP (de Parser Tokens) : básicamente, el paquete PHP_Beautifier de PEAR en http://pear.php.net/package/PHP_Beautifier puede extenderse para hacer lo que quiera , pero suena como que requiere un trabajo pesado.
Y si no está limitado a PHP, http://www.eclipse.org/pdt/articles/ast/PHP_AST.html guiará a través del uso del analizador AST del módulo PHP de Eclipse.
Quiero analizar un archivo fuente PHP, en un AST (preferiblemente como una matriz de instrucciones anidadas).
Básicamente quiero convertir cosas como
f($a, $b + 1)
en algo como
array( ''function_call'',
array(
array( ''var'', ''$a'' ),
array( ''expression'',
array(
array( ''binary_operation'',
''+'',
array (''var'', ''$b''),
array( ''int'', ''1'' )
)
)
)
)
)
¿Hay alguna biblioteca PHP incorporada o bibliotecas de terceros (preferiblemente en PHP) que me permitan hacer esto?
He implementado un analizador PHP después de que descubrí que no había un analizador existente . Analiza el código PHP en un árbol de nodos.
No, no hay tal característica incorporada. Pero puedes usar el Tokenizer para crearlo.
Pfff es una biblioteca OCaml para analizar y manipular el código PHP. Consulte el manual de Pfff para más detalles.
Hip hop
Puedes usar el HHVM de Facebook para volcar el AST.
apt-get install hhvm
# parse specified file and dump the AST
hhvm --parse arg
Esto funcionó para HipHop (el antiguo compilador de PHP a C ++) - ¡en los días de 2013!
H HVM
Actualización 2015
--parse
no es compatible.
Recibirá un error: HHVM The ''parse'' command line option is not supported.
Solicitud de funciones para volver a admitir la opción CLI: https://github.com/facebook/hhvm/issues/4615
PHP 7
PHP 7 tendrá un AST, vea el RFC relacionado.
Hay dos extensiones, que proporcionan acceso y exponen el AST generado por PHP 7: