这适用于您提供的示例输入文件,但我很确定我需要更多的测试才能说这通常适用于 c 语法:
>>> s = """int mynum = 12;
...
... // Timers
... VAR_IN_SECTION(task_timers, .mem_layout)
... timers_t timers[DSP_NUM_TASK_TIMERS];"""
>>>
>>> import re
>>> re.findall(r'\w+[ \t]+(\w+)',s)
['mynum', 'timers']
上面发布的答案不会获得指针:
int *p;
拿起那些,也许调整一下正则表达式:
>>> re.findall(r'\w+[ \t]+(?:\*\s*)?(\w+)',s)
['mynum', 'timers', 'p']
使用 C,你不能寻找各种类型(int
, float
, double
, char
...),因为事物总是可以被 typedef'd 并且你也有struct
(和union
?)它们也可以这样工作......更不用说任何一点,你可以#include "anyfile.c"
——作为一个程序员,这将是一件非常讨厌的事情,但这是可能的。我认为c99
你也可以在任何你想要的地方声明变量(例如在宏中)。你也想收拾那些吗?换句话说,要正确执行此操作,您需要一个完整的 c 解析器来为您完成繁重的工作