0
A
回答
1
嘗試使用pyparsing,而不是...
from pyparsing import *
# define the structure of a macro definition (the empty term is used
# to advance to the next non-whitespace character)
macroDef = "#define" + Word(alphas+"_",alphanums+"_").setResultsName("macro") + \
empty + restOfLine.setResultsName("value")
with open('myheader.h', 'r') as f:
res = macroDef.scanString(f.read())
print [tokens.macro for tokens, startPos, EndPos in res]
myheader.h看起來是這樣的:
#define MACRO1 42
#define lang_init() c_init()
#define min(X, Y) ((X) < (Y) ? (X) : (Y))
輸出:
['MACRO1', 'lang_init', 'min']
的setResultsName允許你調用的部分你希望成爲會員。因此,爲了您的答案,我們做了tokes.macro,但我們也可以輕鬆訪問該值。我把這個例子中的一部分,從Paul McGuire's example here
您可以瞭解更多關於pyparsing here
希望這有助於
相關問題
- 1. 解析C頭文件,以確定所有的宏定義
- 2. 評估C++頭文件中的所有宏
- 3. 包含由宏定義的頭文件
- 4. 如何在生成文件中定義頭文件中的宏
- 5. 查找定義C函數的頭文件
- 6. 在C++中查找所有目錄中的所有文件
- 7. 如何檢查Makefile中c文件中定義的宏?
- 8. C++重定義 - 頭文件
- 9. 查找所有頭文件和源文件依賴關係的工具C
- 10. 有關宏定義和頭文件的錯誤
- 11. C++查找所有.wav文件
- 12. (C#)如何讀取文件夾中的所有文件以查找特定行?
- 13. 在標準中定義的C++頭文件<string>的宏_STRING_是?
- 14. 根據指定的頭文件在C中擴展宏
- 15. C++中的宏可以定義宏嗎?
- 16. 基於宏的C++頭文件選擇
- 17. 重新定義的類C++頭文件
- 18. 如何在MATLAB中查找目錄中的所有.c文件?
- 19. 在ClearCase中查找具有特定版本的所有文件
- 20. 打印所有已定義的宏
- 21. 僅使用宏在頭文件中定義靜態變量
- 22. 爲什麼不建議在頭文件中定義宏?
- 23. 查找原始文件中定義的所有消息的描述符
- 24. C/C++編譯器如何找到頭文件中原型的定義?
- 25. 查找具有特定文本文件的所有計算機
- 26. 處理c文件中定義的變量而非頭文件
- 27. 查找給定包所定義的所有選項
- 28. C++頭文件說,變量未定義:
- 29. C++頭文件和類定義問題
- 30. 包含自定義頭文件(ANSI C)
在最簡單的形式,你可以使用grep能不?什麼是確切的用例?也就是說,當你說要列出所有的宏定義時,你的意思是CPP的方式是否意味着你只想列出它們? –
我知道pycparser使用cpp,我設法得到c文件中的結構定義列表。但是我找不到在h文件中獲取所有#define宏的方法。現在,我只是用python解析頭文件,但這不是我想要的。謝謝。 – user1587140