pp.tab revision da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968
#
# 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++ // \<newline> 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 # \<newline> ok for COMPATIBILITY catenation
SPLICESPACE # \<space>+<newline> == \<newline> for jcl
STRINGSPAN # <newline> 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