#include "keywords.h" #include #include #include static const char *const keywords[] = { #define KW(kw) #kw, #include "keywords.def" #undef KW }; static int compare_keywords(const void *a, const void *b) { const char *const *ea = a, *const *eb = b; return strcmp(*ea, *eb); } keyword_t lookup_keyword(const char *keyword) { const char *const *entry = bsearch( &keyword, keywords, ARRAY_SIZE(keywords), sizeof(const char *), compare_keywords ); if (!entry) return UNKNOWN_KEYWORD; return (keyword_t) (entry - keywords + 1); }