将Hack代码解析为抽象语法树

时间:2016-12-20 09:44:16

标签: abstract-syntax-tree static-analysis hacklang transpiler php-parser

我希望将我的Hack代码分解为抽象语法树。请告诉我可用的工具/库/ github存储库,它将帮助我将Hack代码解析为AST。 我找到了" h2tp" (破解Facebook编写的PHP转换器),但它并没有将代码解析为AST。我也尝试了this project,它可以满足我的需求,但它不能识别许多操作符,并且需要进行大量的返工,这需要花费很多时间。

2 个答案:

答案 0 :(得分:1)

hhast(HHAST:低级AST库)使您可以执行此操作,您可以像这样调用hh_parse:hh_parse --full-fidelity-json $file | jq

取自(https://github.com/hhvm/hhast/blob/master/docs/ast-lib.md

答案 1 :(得分:0)

HHVM本身提供了许多工具来转储PHP文件的结构。但是,AST转储已删除:https://github.com/facebook/hhvm/issues/1268

您可以做的是转储HHVM汇编语言:http://hhvm.com/blog/6323/the-journey-of-a-thousand-bytecodes

HHVM还有一个可以帮助的PHP转换器:https://docs.hhvm.com/hack/tools/transpiler

您也可以尝试将此扩展程序移植到HHVM:https://github.com/nikic/php-ast