Я хочу проанализировать заголовочный файл, чтобы получить все постоянные макросы, такие как:
#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'?
Пожалуйста, предложите какой-нибудь лучший подход.