我试图通过使用pycparser获取c头文件中所有宏定义的列表。
如果可能的话,请你帮我解决这个问题吗?
感谢。
答案 0 :(得分:2)
尝试使用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
希望这有帮助