これはあなたが与えたサンプル入力ファイルで機能しますが、これが一般的な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']
int
C では、さまざまな型 ( 、float
、double
、 ...)を探すことはできませんchar
。なぜなら、物事は常に typedef される可能性があり、そのように機能するstruct
(およびunion
?) もあるからです。 、あなたはできます#include "anyfile.c"
- これはプログラマーとして行うにはかなり厄介なことですが、可能です。c99
変数はどこでも宣言できると思います (例: マクロ)。あなたもそれらを拾いたいですか?つまり、これを正しく行うには、面倒な作業を行う完全な c パーサーが必要です。