# # Glenn Fowler # AT&T Research # # @(#)pp.tab (AT&T Labs Research) 2006-05-09 # # C preprocessor tables and states # # + marks extensions to the standard # %keywords "static struct ppkeyword directives" define elif else endif +endmac error if ifdef ifndef include +let line +macdef pragma +rename undef +warning %keywords "static struct ppkeyword options" prefix=X_ index=optindex last=last_option allmultiple allpossible builtin catliteral cdir checkpoint chop compatibility debug elseif externalize final hide headerexpand headerexpandall hosted hostedtransition hostdir id ignore include initial keyargs line linebase linefile lineid linetype macref map mapinclude modern multiple native note opspace passthrough pedantic pluscomment plusplus plussplice pragmaflags pragmaexpand predefined prefix preserve proto prototyped quote readonly reguard reserved spaceout splicecat splicespace standard statement strict stringspan stringsplit system_header test text transition truncate vendor version warn zeof %keywords "static struct ppkeyword predicates" prefix=X_ index=optindex defined +exists +included +match +noticed +option sizeof +strcmp %keywords "static struct ppkeyword readonlys" prefix=R_ defined %flags # state : coupled, high frequency ADD # add pp.addbuf into output buffer COLLECTING # collecting macro call arguments COMPATIBILITY # compatibility (Reiser) dialect COMPILE # tokenize for compiler CONDITIONAL # processing #[el]if directive DEFINITION # processing macro definition DIRECTIVE # processing directive DISABLE # disable macro evaluation EOF2NL # pass eof as newline token ESCAPE # \ -> \\ in QUOTE|SQUOTE FILEPOP # 0 on IN_FILE pop - no popin HEADER # processing include statement HIDDEN # hidden lines encountered JOINING # joining adjacent strings NEWLINE # last non-space was newline NOEXPAND # no macro expansions or disables NOSPACE # don't pass space+ as token NOTEXT # don't output text NOVERTICAL # vertical space invalid PASSEOF # pass EOF as 0 without pop PASSTHROUGH # ppcpp expands # lines only QUOTE # processing "..." token SKIPCONTROL # skip until # control or EOF SKIPMACRO # disable next macro SPACEOUT # output spaces in STANDALONE SQUOTE # processing '...' token STANDALONE # output tokens on stdout STRICT # strict implementation STRIP # strip quotes from T_STRING and T_CHARCONST SYNCLINE # output line sync soon TRANSITION # on the COMPATIBILITY boundary WARN # note obnoxious incompatibilities %flags # mode : coupled, low frequency ALLMULTIPLE # all files can be included more than once BUILTIN # mark macro definitions builtin CATLITERAL # concatenate adjacent "..." DUMP # do a checkpoint dump EXPOSE # expose hidden macros EXTERNALIZE # set PROTO_EXTERNALIZE FILEDEPS # output file dependencies GENDEPS # missings FILEDEPS are generated HEADERDEPS # <...> too for FILEDEPS HOSTED # hosted include file HOSTEDTRANSITION # hosted include files get __STDC__=0 INACTIVE # inactive conditional branch INIT # initialization phase LOADING # loading a checkpoint file MARKC # last ppsearch() file was in C language MARKHOSTED # last ppsearch() file was hosted MARKMACRO # mark macro to disable later PEDANTIC # pedantic non-hosted non-standard warnings READONLY # mark macro definitions readonly RELAX # relax complaints for this directive %flags # options : uncoupled, low frequency ALLPOSSIBLE # ignore top level conditionals DEFINITIONS # output macro definitions ELSEIF # #else if|ifdef|ifndef ok FINAL # final hosted macro value HEADEREXPAND # HEADEREXPANDALL but macro args not expanded HEADEREXPANDALL # expanded < does not quote #include macros IGNORELINE # ignore #line until first file arg INITIAL # initial hosted macro value KEEPNOTEXT # keep NOTEXT setting KEYARGS # name=value macro arguments MODERN # generate modern output (\a instead of \007) NATIVE # report native paths NOHASH # don't hash PP_COMPILE T_ID's NOISE # convert T_X_* to T_NOISES NOISEFILTER # filter (ignore) NOISE NOPROTO # disable ppproto() PLUSCOMMENT # enable C++ comments PLUSPLUS # preprocess for C++ PLUSSPLICE # C++ // \ does not splice PRAGMAEXPAND # expand #pragma args PREDEFINED # mark macro definitions predefined PREDEFINITIONS # output predefined macro definitions PREFIX # prefix include for compatibility PRESERVE # preserve input layout PROTOTYPED # force all input to be prototyped REGUARD # emit header guard define at file pop SPLICECAT # \ ok for COMPATIBILITY catenation SPLICESPACE # \+ == \ for jcl STRINGSPAN # in string ok STRINGSPLIT # "...\\n..." => "..."\n"..." TRUNCATE # truncate identifiers ZEOF # ^Z anywhere in file => EOF %keywords "static struct ppkeyword variables" prefix=V_ index=optindex _Pragma +ARGC +BASE DATE FILE +FUNCTION LINE +PATH +SOURCE -STDC TIME +VERSION -default -directive -empty -getenv -getmac -getopt -getprd -iterate