我想分析的头文件,以获取所有恒宏象:解析C头文件,以确定所有的宏定义
#define ARRSIZE 10
#define WORDSIZE 32
#define TOTALSIZE (ARRSIZE * WORDSIZE)
,并创建一个列表和数组,如:
# define XARRSIZE 0
# define XWORDSIZE 1
# define XTOTALSIZE 2
int table[] = {ARRSIZE, WORDSIZE, TOTALSIZE}
// Now, table[XWORDSIZE] will fetch value of WORDSIZE.
所以,我想忽略以下内容:
- 所有评论。
- 结构(C
struct
)声明。 extern
函数声明。typedef
s。
一种方法可以使用lex和yacc编写解析器。但是,这个任务似乎更简单。有没有办法使用'cpp'等工具遍历头文件中的所有常量宏?
请提出任何更好的方法。
宏总是与'#定义MACRONAME'开始。这听起来不像分析会很困难(只要你不关心'#ifdef'内的东西等等)。 – 2012-04-02 10:48:56
@OliCharlesworth不要忘记多行宏。 – 2012-04-02 10:49:55
你可以在[lex](http://en.wikipedia.org/wiki/Lex_%28software%29)和[yacc](http://en.wikipedia.org/wiki/Yacc)中实现它)解析器。 – 2012-04-02 10:50:03