Я пытаюсь получить список всех макроопределений в файле заголовка c с помощью pycparser.Найти все макроопределение в файле заголовка c
Можете ли вы, пожалуйста, помочь мне по этому вопросу, если это возможно?
Спасибо.
Я пытаюсь получить список всех макроопределений в файле заголовка c с помощью pycparser.Найти все макроопределение в файле заголовка c
Можете ли вы, пожалуйста, помочь мне по этому вопросу, если это возможно?
Спасибо.
Попробуйте использовать 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
Надеются, что это помогает
В простейшей форме вы можете использовать Grep может не так ли? Какой конкретный вариант использования? То есть, когда вы говорите, что хотите перечислить все макроопределения, вы имеете в виду то, как CPP будет или вы имеете в виду, что просто хотите их перечислить? –
Я знаю, что pycparser использует cpp, и мне удалось получить список описаний структур в файле c. однако я не мог найти способ получить все макросы #define в h-файле. Пока я просто разбираю файл заголовка с помощью python, но это не то, что я хочу. Благодарю. – user1587140