2012-01-09 141 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