這基本上是my first Question的第二部分,它是關於製作源代碼的瀏覽器。閱讀教程後,我發現我需要解析PHP文件和Build AST,並從那裏我將有我需要的符號。然而,尋找日子並沒有爲我如何做到這一點帶來任何益處。有沒有關於構建PHP AST的任何教程或問題? 對不起,如果它在某個地方回答,我的搜索沒有任何用處!Flex /野牛PHP AST生成
回答
您可以看看PHP如何執行它:https://svn.php.net/repository/php/php-src/trunk/Zend/zend_language_parser.y。請注意,儘管PHP使用re2c而不是flex(語法在./zend_language_scanner.l中)。
在2017年有穩定和強大的工具 - PHP-Parser。
它允許TOKEN解析和AST源代碼解析。
這是AST code generation example。
如果你找C擴展,將允許它,檢查nikic/ast。
不幸的是我看不到任何文檔在PHP之外使用它。 – 2017-07-09 15:49:04
我建議在那裏提問。我認爲@nikic能夠比你更多地幫助你。 – 2017-07-09 16:16:38
謝謝指出 – 2017-07-10 05:41:23
- 1. Flex和野牛
- 2. YACC(野牛)AST簡化
- 3. 簡單的Flex /野牛C++
- 4. 使用Flex /野牛
- 5. 的CMake和Flex /野牛
- 6. 循環使用Flex /野牛
- 7. 野牛回傳得到的AST
- 8. Flex和野牛計算器
- 9. flex與野牛計算器
- 10. 野牛/ Flex如果語句
- 11. 故障使用Flex /野牛
- 12. 野牛/ flex解析器進入eclipse
- 13. 問題與野牛和flex計算器
- 14. 嵌入其他語言的Flex /野牛
- 15. 使用Flex(法)和野牛(YACC)
- 16. 從flex傳遞值到野牛
- 17. 的Flex /野牛EOF傳播VS文件
- 18. flex和野牛:錯誤的輸出
- 19. 北美野牛和flex分段錯誤
- 20. 的Flex /野牛語法錯誤
- 21. Flex /野牛目標不存在
- 22. 野牛(和flex)編碼約定
- 23. 的Flex /野牛 - 啓動條件
- 24. Flex /野牛多通類解析
- 25. 從flex返回屬性到野牛
- 26. 解析使用flex和野牛的塊
- 27. 使用flex和野牛的問題
- 28. 野牛的Flex不能訪問第一個令牌野牛規則部分
- 29. 與野牛生成的文件的循環依賴解析
- 30. 劈裂野牛
我已經看過文件並閱讀了野牛和flex手冊,但它很複雜!有沒有你認識的教程,或者可以解釋一下? – 2012-01-12 21:51:46
@Stefano flex和野牛的教程?在手冊中介紹了他們的概念。另一方面,如果想在另一個問題中加入一個完整的「代碼瀏覽器」,則是我能想象的最複雜的工作之一。我會在編寫掃描器之後開始拋出zend_language_parser.y中的所有操作,這些操作應該爲您提供驗證解析器,然後爲「類」,方法定義等插入操作。但在95%的案例中,成爲一個令人滿意的ctags客戶可能會更有效率。 – 2012-01-13 01:28:16
你好,我去了ctags路由,它不支持PHP很好,我不知道該成員或方法屬於哪一類。如果你知道我不走這條路。這是我的最後一招! – 2012-01-13 03:00:53