1*4887Schin /* 2*4887Schin * 3*4887Schin * Glenn Fowler 4*4887Schin * AT&T Research 5*4887Schin * 6*4887Schin * @(#)pp.tab (AT&T Labs Research) 2006-05-09 7*4887Schin * 8*4887Schin * C preprocessor tables and states 9*4887Schin * 10*4887Schin * + marks extensions to the standard 11*4887Schin * 12*4887Schin */ 13*4887Schin 14*4887Schin static struct ppkeyword directives[] = 15*4887Schin { 16*4887Schin "define", DEFINE, 17*4887Schin "elif", ELIF, 18*4887Schin "else", ELSE, 19*4887Schin "endif", ENDIF, 20*4887Schin "+endmac", ENDMAC, 21*4887Schin "error", ERROR, 22*4887Schin "if", IF, 23*4887Schin "ifdef", IFDEF, 24*4887Schin "ifndef", IFNDEF, 25*4887Schin "include", INCLUDE, 26*4887Schin "+let", LET, 27*4887Schin "line", LINE, 28*4887Schin "+macdef", MACDEF, 29*4887Schin "pragma", PRAGMA, 30*4887Schin "+rename", RENAME, 31*4887Schin "undef", UNDEF, 32*4887Schin "+warning", WARNING, 33*4887Schin 0, 0 34*4887Schin }; 35*4887Schin 36*4887Schin static struct ppkeyword options[] = 37*4887Schin { 38*4887Schin "allmultiple", X_ALLMULTIPLE, 39*4887Schin "allpossible", X_ALLPOSSIBLE, 40*4887Schin "builtin", X_BUILTIN, 41*4887Schin "catliteral", X_CATLITERAL, 42*4887Schin "cdir", X_CDIR, 43*4887Schin "checkpoint", X_CHECKPOINT, 44*4887Schin "chop", X_CHOP, 45*4887Schin "compatibility", X_COMPATIBILITY, 46*4887Schin "debug", X_DEBUG, 47*4887Schin "elseif", X_ELSEIF, 48*4887Schin "externalize", X_EXTERNALIZE, 49*4887Schin "final", X_FINAL, 50*4887Schin "hide", X_HIDE, 51*4887Schin "headerexpand", X_HEADEREXPAND, 52*4887Schin "headerexpandall", X_HEADEREXPANDALL, 53*4887Schin "hosted", X_HOSTED, 54*4887Schin "hostedtransition", X_HOSTEDTRANSITION, 55*4887Schin "hostdir", X_HOSTDIR, 56*4887Schin "id", X_ID, 57*4887Schin "ignore", X_IGNORE, 58*4887Schin "include", X_INCLUDE, 59*4887Schin "initial", X_INITIAL, 60*4887Schin "keyargs", X_KEYARGS, 61*4887Schin "line", X_LINE, 62*4887Schin "linebase", X_LINEBASE, 63*4887Schin "linefile", X_LINEFILE, 64*4887Schin "lineid", X_LINEID, 65*4887Schin "linetype", X_LINETYPE, 66*4887Schin "macref", X_MACREF, 67*4887Schin "map", X_MAP, 68*4887Schin "mapinclude", X_MAPINCLUDE, 69*4887Schin "modern", X_MODERN, 70*4887Schin "multiple", X_MULTIPLE, 71*4887Schin "native", X_NATIVE, 72*4887Schin "note", X_NOTE, 73*4887Schin "opspace", X_OPSPACE, 74*4887Schin "passthrough", X_PASSTHROUGH, 75*4887Schin "pedantic", X_PEDANTIC, 76*4887Schin "pluscomment", X_PLUSCOMMENT, 77*4887Schin "plusplus", X_PLUSPLUS, 78*4887Schin "plussplice", X_PLUSSPLICE, 79*4887Schin "pragmaflags", X_PRAGMAFLAGS, 80*4887Schin "pragmaexpand", X_PRAGMAEXPAND, 81*4887Schin "predefined", X_PREDEFINED, 82*4887Schin "prefix", X_PREFIX, 83*4887Schin "preserve", X_PRESERVE, 84*4887Schin "proto", X_PROTO, 85*4887Schin "prototyped", X_PROTOTYPED, 86*4887Schin "quote", X_QUOTE, 87*4887Schin "readonly", X_READONLY, 88*4887Schin "reguard", X_REGUARD, 89*4887Schin "reserved", X_RESERVED, 90*4887Schin "spaceout", X_SPACEOUT, 91*4887Schin "splicecat", X_SPLICECAT, 92*4887Schin "splicespace", X_SPLICESPACE, 93*4887Schin "standard", X_STANDARD, 94*4887Schin "statement", X_STATEMENT, 95*4887Schin "strict", X_STRICT, 96*4887Schin "stringspan", X_STRINGSPAN, 97*4887Schin "stringsplit", X_STRINGSPLIT, 98*4887Schin "system_header", X_SYSTEM_HEADER, 99*4887Schin "test", X_TEST, 100*4887Schin "text", X_TEXT, 101*4887Schin "transition", X_TRANSITION, 102*4887Schin "truncate", X_TRUNCATE, 103*4887Schin "vendor", X_VENDOR, 104*4887Schin "version", X_VERSION, 105*4887Schin "warn", X_WARN, 106*4887Schin "zeof", X_ZEOF, 107*4887Schin 0, 0 108*4887Schin }; 109*4887Schin 110*4887Schin static struct ppkeyword predicates[] = 111*4887Schin { 112*4887Schin "defined", X_DEFINED, 113*4887Schin "+exists", X_EXISTS, 114*4887Schin "+included", X_INCLUDED, 115*4887Schin "+match", X_MATCH, 116*4887Schin "+noticed", X_NOTICED, 117*4887Schin "+option", X_OPTION, 118*4887Schin "sizeof", X_SIZEOF, 119*4887Schin "+strcmp", X_STRCMP, 120*4887Schin 0, 0 121*4887Schin }; 122*4887Schin 123*4887Schin static struct ppkeyword readonlys[] = 124*4887Schin { 125*4887Schin "defined", R_DEFINED, 126*4887Schin 0, 0 127*4887Schin }; 128*4887Schin 129*4887Schin static struct ppkeyword variables[] = 130*4887Schin { 131*4887Schin "_Pragma", V__PRAGMA, 132*4887Schin "+ARGC", V_ARGC, 133*4887Schin "+BASE", V_BASE, 134*4887Schin "DATE", V_DATE, 135*4887Schin "FILE", V_FILE, 136*4887Schin "+FUNCTION", V_FUNCTION, 137*4887Schin "LINE", V_LINE, 138*4887Schin "+PATH", V_PATH, 139*4887Schin "+SOURCE", V_SOURCE, 140*4887Schin "-STDC", V_STDC, 141*4887Schin "TIME", V_TIME, 142*4887Schin "+VERSION", V_VERSION, 143*4887Schin "-default", V_DEFAULT, 144*4887Schin "-directive", V_DIRECTIVE, 145*4887Schin "-empty", V_EMPTY, 146*4887Schin "-getenv", V_GETENV, 147*4887Schin "-getmac", V_GETMAC, 148*4887Schin "-getopt", V_GETOPT, 149*4887Schin "-getprd", V_GETPRD, 150*4887Schin "-iterate", V_ITERATE, 151*4887Schin 0, 0 152*4887Schin }; 153