1 /*
2  * BEGIN illumos section
3  *   This is an unstable interface; changes may be made
4  *   without notice.
5  * END illumos section
6  */
7 /***********************************************************************
8 *                                                                      *
9 *               This software is part of the ast package               *
10 *          Copyright (c) 1986-2011 AT&T Intellectual Property          *
11 *                      and is licensed under the                       *
12 *                 Eclipse Public License, Version 1.0                  *
13 *                    by AT&T Intellectual Property                     *
14 *                                                                      *
15 *                A copy of the License is available at                 *
16 *          http://www.eclipse.org/org/documents/epl-v10.html           *
17 *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
18 *                                                                      *
19 *              Information and Software Systems Research               *
20 *                            AT&T Research                             *
21 *                           Florham Park NJ                            *
22 *                                                                      *
23 *                 Glenn Fowler <gsf@research.att.com>                  *
24 *                                                                      *
25 ***********************************************************************/
26 #pragma prototyped
27 /*
28  * Glenn Fowler
29  * AT&T Research
30  *
31  * preprocessor C language keyword token values
32  * handles classic, ANSI and C++
33  * additional non-standard keyword tokens are
34  * crammed into T_NOISE and T_X_*
35  */
36 
37 #ifndef _PPKEY_H
38 #define _PPKEY_H
39 
40 /*
41  * NOTE: preserve the ranges for is*()
42  */
43 
44 #define ppisnoise(x)	((x)>=T_NOISE&&(x)<T_KEYWORD)
45 
46 /*
47  * classic
48  */
49 
50 #define T_AUTO		(T_TOKEN+0)
51 #define T_BREAK		(T_TOKEN+1)
52 #define T_CASE		(T_TOKEN+2)
53 #define T_CHAR		(T_TOKEN+3)
54 #define T_CONTINUE	(T_TOKEN+4)
55 #define T_DEFAULT	(T_TOKEN+5)
56 #define T_DO		(T_TOKEN+6)
57 #define T_DOUBLE_T	(T_TOKEN+7)
58 #define T_ELSE		(T_TOKEN+8)
59 #define T_EXTERN	(T_TOKEN+9)
60 #define T_FLOAT_T	(T_TOKEN+10)
61 #define T_FOR		(T_TOKEN+11)
62 #define T_GOTO		(T_TOKEN+12)
63 #define T_IF		(T_TOKEN+13)
64 #define T_INT		(T_TOKEN+14)
65 #define T_LONG		(T_TOKEN+15)
66 #define T_REGISTER	(T_TOKEN+16)
67 #define T_RETURN	(T_TOKEN+17)
68 #define T_SHORT		(T_TOKEN+18)
69 #define T_SIZEOF	(T_TOKEN+19)
70 #define T_STATIC	(T_TOKEN+20)
71 #define T_STRUCT	(T_TOKEN+21)
72 #define T_SWITCH	(T_TOKEN+22)
73 #define T_TYPEDEF	(T_TOKEN+23)
74 #define T_UNION		(T_TOKEN+24)
75 #define T_UNSIGNED	(T_TOKEN+25)
76 #define T_WHILE		(T_TOKEN+26)
77 
78 /*
79  * ANSI
80  */
81 
82 #define T_CONST		(T_TOKEN+27)
83 #define T_ENUM		(T_TOKEN+28)
84 #define T_SIGNED	(T_TOKEN+29)
85 #define T_VOID		(T_TOKEN+30)
86 #define T_VOLATILE	(T_TOKEN+31)
87 
88 /*
89  * C++
90  */
91 
92 #define T_ASM		(T_TOKEN+32)
93 #define T_BOOL		(T_TOKEN+33)
94 #define T_CATCH		(T_TOKEN+34)
95 #define T_CLASS		(T_TOKEN+35)
96 #define T_CONST_CAST	(T_TOKEN+36)
97 #define T_DELETE	(T_TOKEN+37)
98 #define T_DYNAMIC_CAST	(T_TOKEN+38)
99 #define T_EXPLICIT	(T_TOKEN+39)
100 #define T_FALSE		(T_TOKEN+40)
101 #define T_FRIEND	(T_TOKEN+41)
102 #define T_INLINE	(T_TOKEN+42)
103 #define T_MUTABLE	(T_TOKEN+43)
104 #define T_NAMESPACE	(T_TOKEN+44)
105 #define T_NEW		(T_TOKEN+45)
106 #define T_OPERATOR	(T_TOKEN+46)
107 #define T_OVERLOAD	(T_TOKEN+47)
108 #define T_PRIVATE	(T_TOKEN+48)
109 #define T_PROTECTED	(T_TOKEN+49)
110 #define T_PUBLIC	(T_TOKEN+50)
111 #define T_REINTERPRET_CAST (T_TOKEN+51)
112 #define T_STATIC_CAST	(T_TOKEN+52)
113 #define T_TEMPLATE	(T_TOKEN+53)
114 #define T_THIS		(T_TOKEN+54)
115 #define T_THROW		(T_TOKEN+55)
116 #define T_TRUE		(T_TOKEN+56)
117 #define T_TRY		(T_TOKEN+57)
118 #define T_TYPEID	(T_TOKEN+58)
119 #define T_USING		(T_TOKEN+59)
120 #define T_VIRTUAL	(T_TOKEN+60)
121 #define T_WCHAR_T	(T_TOKEN+61)
122 
123 /*
124  * future
125  */
126 
127 #define T_INT64		(T_TOKEN+62)
128 
129 /*
130  * non-standard
131  */
132 
133 #define T_BUILTIN	(T_TOKEN+63)
134 #define T_NOISES	(T_TOKEN+64)
135 #define T_NOISE		(T_TOKEN+65)
136 #define T_X_GROUP	(T_TOKEN+66)
137 #define T_X_LINE	(T_TOKEN+67)
138 #define T_X_STATEMENT	(T_TOKEN+68)
139 
140 /*
141  * first available keyword token value
142  */
143 
144 #define T_KEYWORD	(T_TOKEN+69)
145 
146 /*
147  * implementation globals
148  */
149 
150 extern struct ppkeyword	ppkey[];
151 
152 #endif
153