2012-01-09 110 views
2

这基本上是my first Question的第二部分,它是关于制作源代码的浏览器。阅读教程后,我发现我需要解析PHP文件和Build AST,并从那里我将有我需要的符号。然而,寻找日子并没有为我如何做到这一点带来任何益处。有没有关于构建PHP AST的任何教程或问题? 对不起,如果它在某个地方回答,我的搜索没有任何用处!Flex /野牛PHP AST生成

回答

2

您可以看看PHP如何执行它:https://svn.php.net/repository/php/php-src/trunk/Zend/zend_language_parser.y。请注意,尽管PHP使用re2c而不是flex(语法在./zend_language_scanner.l中)。

+0

我已经看过文件并阅读了野牛和flex手册,但它很复杂!有没有你认识的教程,或者可以解释一下? – 2012-01-12 21:51:46

+1

@Stefano flex和野牛的教程?在手册中介绍了他们的概念。另一方面,如果想在另一个问题中加入一个完整的“代码浏览器”,则是我能想象的最复杂的工作之一。我会在编写扫描器之后开始抛出zend_language_parser.y中的所有操作,这些操作应该为您提供验证解析器,然后为“类”,方法定义等插入操作。但在95%的案例中,成为一个令人满意的ctags客户可能会更有效率。 – 2012-01-13 01:28:16

+0

你好,我去了ctags路由,它不支持PHP很好,我不知道该成员或方法属于哪一类。如果你知道我不走这条路。这是我的最后一招! – 2012-01-13 03:00:53

1

在2017年有稳定和强大的工具 - PHP-Parser

它允许TOKEN解析和AST源代码解析。

这是AST code generation example


如果你找C扩展,将允许它,检查nikic/ast

+0

不幸的是我看不到任何文档在PHP之外使用它。 – 2017-07-09 15:49:04

+0

我建议在那里提问。我认为@nikic能够比你更多地帮助你。 – 2017-07-09 16:16:38

+0

谢谢指出 – 2017-07-10 05:41:23