/*
*
* Glenn Fowler
* AT&T Research
*
* @(#)pp.tab (AT&T Labs Research) 2006-05-09
*
* C preprocessor tables and states
*
* + marks extensions to the standard
*
*/
static struct ppkeyword directives[] =
{
"define", DEFINE,
"elif", ELIF,
"else", ELSE,
"endif", ENDIF,
"+endmac", ENDMAC,
"error", ERROR,
"if", IF,
"ifdef", IFDEF,
"ifndef", IFNDEF,
"include", INCLUDE,
"+let", LET,
"line", LINE,
"+macdef", MACDEF,
"pragma", PRAGMA,
"+rename", RENAME,
"undef", UNDEF,
"+warning", WARNING,
0, 0
};
static struct ppkeyword options[] =
{
"allmultiple", X_ALLMULTIPLE,
"allpossible", X_ALLPOSSIBLE,
"builtin", X_BUILTIN,
"catliteral", X_CATLITERAL,
"cdir", X_CDIR,
"checkpoint", X_CHECKPOINT,
"chop", X_CHOP,
"compatibility", X_COMPATIBILITY,
"debug", X_DEBUG,
"elseif", X_ELSEIF,
"externalize", X_EXTERNALIZE,
"final", X_FINAL,
"hide", X_HIDE,
"headerexpand", X_HEADEREXPAND,
"headerexpandall", X_HEADEREXPANDALL,
"hosted", X_HOSTED,
"hostedtransition", X_HOSTEDTRANSITION,
"hostdir", X_HOSTDIR,
"id", X_ID,
"ignore", X_IGNORE,
"include", X_INCLUDE,
"initial", X_INITIAL,
"keyargs", X_KEYARGS,
"line", X_LINE,
"linebase", X_LINEBASE,
"linefile", X_LINEFILE,
"lineid", X_LINEID,
"linetype", X_LINETYPE,
"macref", X_MACREF,
"map", X_MAP,
"mapinclude", X_MAPINCLUDE,
"modern", X_MODERN,
"multiple", X_MULTIPLE,
"native", X_NATIVE,
"note", X_NOTE,
"opspace", X_OPSPACE,
"passthrough", X_PASSTHROUGH,
"pedantic", X_PEDANTIC,
"pluscomment", X_PLUSCOMMENT,
"plusplus", X_PLUSPLUS,
"plussplice", X_PLUSSPLICE,
"pragmaflags", X_PRAGMAFLAGS,
"pragmaexpand", X_PRAGMAEXPAND,
"predefined", X_PREDEFINED,
"prefix", X_PREFIX,
"preserve", X_PRESERVE,
"proto", X_PROTO,
"prototyped", X_PROTOTYPED,
"quote", X_QUOTE,
"readonly", X_READONLY,
"reguard", X_REGUARD,
"reserved", X_RESERVED,
"spaceout", X_SPACEOUT,
"splicecat", X_SPLICECAT,
"splicespace", X_SPLICESPACE,
"standard", X_STANDARD,
"statement", X_STATEMENT,
"strict", X_STRICT,
"stringspan", X_STRINGSPAN,
"stringsplit", X_STRINGSPLIT,
"system_header", X_SYSTEM_HEADER,
"test", X_TEST,
"text", X_TEXT,
"transition", X_TRANSITION,
"truncate", X_TRUNCATE,
"vendor", X_VENDOR,
"version", X_VERSION,
"warn", X_WARN,
"zeof", X_ZEOF,
0, 0
};
static struct ppkeyword predicates[] =
{
"defined", X_DEFINED,
"+exists", X_EXISTS,
"+included", X_INCLUDED,
"+match", X_MATCH,
"+noticed", X_NOTICED,
"+option", X_OPTION,
"sizeof", X_SIZEOF,
"+strcmp", X_STRCMP,
0, 0
};
static struct ppkeyword readonlys[] =
{
"defined", R_DEFINED,
0, 0
};
static struct ppkeyword variables[] =
{
"_Pragma", V__PRAGMA,
"+ARGC", V_ARGC,
"+BASE", V_BASE,
"DATE", V_DATE,
"FILE", V_FILE,
"+FUNCTION", V_FUNCTION,
"LINE", V_LINE,
"+PATH", V_PATH,
"+SOURCE", V_SOURCE,
"-STDC", V_STDC,
"TIME", V_TIME,
"+VERSION", V_VERSION,
"-default", V_DEFAULT,
"-directive", V_DIRECTIVE,
"-empty", V_EMPTY,
"-getenv", V_GETENV,
"-getmac", V_GETMAC,
"-getopt", V_GETOPT,
"-getprd", V_GETPRD,
"-iterate", V_ITERATE,
0, 0
};