我聽說有一些使用C++編寫的類/庫可用於解析C/C++代碼。我需要的是從源文件中讀取所有函數並對它們進行比較,以瞭解它們之間的區別。我真的不知道我該怎麼做到這一點。我可以使用的只是頭文件/庫/類和沒有軟件解決方案。使用C++解析C++函數?
回答
解析C++語法並不是一項簡單的任務。然而,爲了不重新發明輪子(解析C++語法工具必須已經做對了嗎?),您可以使用lex和bison與已定義的C++解析器,如:http://www.computing.surrey.ac.uk/research/dsrg/fog/CxxGrammar.y 然後根據您的需要修改它。我想你還需要lex和bison的基礎知識。從例如這個: http://aquamentus.com/flex_bison.html
祝你好運!
考慮到當今C++的複雜性,它不可能成功。 +請參閱[C++ faq](http://isocpp.org/wiki/faq/compiler-dependencies#yaccable-grammar) – 2015-03-19 19:14:20
@DmitryLedentsov您可能是對的,另一方面,據我所知C++可以被感知作爲一種上下文無關的語法,因此如果沒有一個開源社區遲早會提供它,yacc-able C++語法就可以創建。 「 – 2015-03-19 19:35:35
」據我所知C++可以被視爲一個上下文無關的語法「No. – 2015-03-20 11:37:51
看到:
這看起來不錯,但是否可以將clang作爲頭文件包含在我的項目中使用?我沒有找到如何在MSVS 2008左右。 – user3416803 2015-03-19 10:16:30
@ user3416803:否。您還需要鏈接libclang。 – MSalters 2015-03-19 14:07:02
@ user3416803問題仍然存在,你想做什麼,爲什麼,你是否真的需要這樣做?你想通過區分C++源代碼來實現什麼? – 2015-03-19 14:12:43
- 1. C函數解析順序
- 2. 函數無法解析C++
- 3. eclipse C/C函數'printf'無法解析
- 4. 使用C++解析數據
- 5. 解析使用C
- 6. C++函數調用路由解析器
- 7. C - 解析文本和調用函數
- 8. 解析用C
- 9. 解析用C++
- 10. 解析用C
- 11. Objective-C解析函數重載
- 12. 解析器字符串C#函數
- 13. 日食C++函數無法解析
- 14. 解析C#中的JSON函數
- 15. C++虛函數解析問題
- 16. 在Python中解析C函數
- 17. C++模板函數的解析
- 18. 從C++中的vtable函數解析
- 19. 用C解析JSON數組#
- 20. 解析Twitter的使用C
- 21. 解析XML和使用C#
- 22. 使用C++解析EXI
- 23. 使用c的HTML解析#
- 24. 使用Objective-C解析JSON
- 25. C#使用javascript解析html
- 26. 解析值了使用C#
- 27. JSON解析使用C#
- 28. c#使用XPathDocument解析html
- 29. JSON解析使用C#
- 30. 在C++中使用C-Strings解析URL
您正在尋找這樣的事情:http://stackoverflow.com/questions/10912349/similar-code-detector? – 2015-03-19 09:24:22
不完全是,但是,非常接近它。我需要寫我自己的工具。我需要的是從2個源文件獲取函數名稱,並比較它們之間是否存在變化。但我真的不知道如何正確地做到這一點。 – user3416803 2015-03-19 09:29:50
只是爲了確定,你的意思是*在你自己的C++代碼*中做這件事,而不僅僅是一般? (因爲這裏有相當不錯的diff工具...) – DevSolar 2015-03-19 09:41:34