微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

生成PHP源文件的AST

如何解决生成PHP源文件的AST

| 我想将PHP文件解析为AST(最好是嵌套的指令数组)。 我基本上想转换像
f($a,$b + 1)
变成像
array( \'function_call\',array(
        array( \'var\',\'$a\' ),array( \'expression\',array(
                array( \'binary_operation\',\'+\',array (\'var\',\'$b\'),array( \'int\',\'1\' )
                )
            )
        )
    )
)
是否有任何内置的PHP库或第三方库(最好是PHP)可以让我做到这一点?     

解决方法

        我发现没有现有的解析器后,就实现了一个PHP解析器。它将PHP代码解析为节点树。     ,        嘻哈(音乐 您可以使用Facebook的HHVM转储AST。
apt-get install hhvm

# parse specified file and dump the AST
hhvm --parse arg  
这适用于HipHop(旧的PHP至C ++编译器)-早在2013年就开始了! 虚拟机 更新2015 不支持3ѭ。 您会得到一个错误:
HHVM The \'parse\' command line option is not supported.
参见https://github.com/facebook/hhvm/blob/c494c3a145008f65d349611eb2d09d0c33f1ab23/hphp/runtime/base/program_functions.cpp#L1111 功能请求再次支持CLI选项:https://github.com/facebook/hhvm/issues/4615 PHP 7 PHP 7将具有AST,请参阅相关的RFC。 有两个扩展,它们提供访问权限并公开由PHP 7生成的AST: https://github.com/nikic/php-ast https://github.com/sgolemon/astkit     ,        Pfff是用于解析和处理PHP代码的OCaml库。有关更多详细信息,请参见Pfff手册。     ,        不,没有内置此类功能。但是您可以使用令牌生成器来创建它。     ,        好吧,您可以查看解析和打印PHP代码以及生成PHP代码(来自解析器令牌)的答案:基本上可以将PEAR的PHP_Beautifier包(位于http://pear.php.net/package/PHP_Beautifier进行扩展)您想要什么,但听起来好像需要一些繁重的工作。 而且,如果您不受PHP的限制,那么http://www.eclipse.org/pdt/articles/ast/PHP_AST.html会带您使用Eclipse PHP模块的AST解析器。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。