在c头文件中查找所有宏定义

时间:2013-06-19 03:56:16

标签: c parsing pycparser

我试图通过使用pycparser获取c头文件中所有宏定义的列表。

如果可能的话,请你帮我解决这个问题吗?

感谢。

1 个答案:

答案 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

希望这有帮助