20 {
"\n",
"PP_NEWLINE"},
21 {
"#define",
"PP_DEFINE"},
23 {
"#undef",
"PP_UNDEF"},
24 {
"#ifdef",
"PP_IFDEF"},
25 {
"#ifndef",
"PP_IFNDEF"},
26 {
"#elif",
"PP_ELIF"},
27 {
"#else",
"PP_ELSE"},
28 {
"#endif",
"PP_ENDIF"},
29 {
"#include",
"PP_INCLUDE"},
30 {
"defined",
"PP_DEFINED"},
35 {
"%",
"PP_PERCENT" },
38 {
"bitand",
"PP_AND" },
42 {
"compl",
"PP_TILDE" },
49 {
"not_eq",
"PP_NE" },
52 {
"&&",
"PP_ANDAND" },
54 {
"?",
"PP_QUESTION" },
56 {
"##",
"PP_HASHHASH"},
57 {
"%:%:",
"PP_HASHHASH"},
60 {
"\'",
"PP_SINGLEQUOTE"},
61 {
" ",
"PP_WHITESPACE" },
62 {
"\t",
"PP_WHITESPACE" },
63 {
"//",
"PP_CPP_COMMENT" },
64 {
"/*",
"PP_C_COMMENT" },
65 {
"\\",
"PP_BACKSLASH" },
80 {
"<::",
"LANGLE_SCOPE" },
92 {
"dynamic_cast",
"DYNAMIC_CAST" },
93 {
"static_cast",
"STATIC_CAST" },
94 {
"reinterpret_cast",
"REINTERPRET_CAST" },
95 {
"const_cast",
"CONST_CAST" },
96 {
"typeid",
"TYPEID" },
98 {
"template",
"TEMPLATE" },
101 {
"catch",
"CATCH" },
102 {
"typedef",
"TYPEDEF" },
103 {
"friend",
"FRIEND" },
104 {
"class",
"CLASS" },
105 {
"namespace",
"NAMESPACE" },
107 {
"struct",
"STRUCT" },
108 {
"union",
"UNION" },
109 {
"virtual",
"VIRTUAL" },
110 {
"private",
"PRIVATE" },
111 {
"protected",
"PROTECTED" },
112 {
"public",
"PUBLIC" },
113 {
"export",
"EXPORT" },
115 {
"register",
"REGISTER" },
116 {
"extern",
"EXTERN" },
117 {
"mutable",
"MUTABLE" },
119 {
"using",
"USING" },
120 {
"inline",
"INLINE" },
121 {
"explicit",
"EXPLICIT" },
122 {
"static",
"STATIC" },
123 {
"const",
"CONST" },
124 {
"volatile",
"VOLATILE" },
125 {
"operator",
"OPERATOR" },
126 {
"sizeof",
"SIZEOF" },
128 {
"delete",
"DELETE" },
140 {
"compl",
"TILDE" },
144 {
"-=",
"MINUS_EQ" },
146 {
"/=",
"SLASH_EQ" },
147 {
"%=",
"PERCENT_EQ" },
153 {
">>=",
"GTGT_EQ" },
154 {
"<<=",
"LTLT_EQ" },
165 {
"->*",
"ARROW_STAR" },
168 {
"wchar",
"WCHAR" },
170 {
"short",
"SHORT" },
173 {
"signed",
"SIGNED" },
174 {
"unsigned",
"UNSIGNED" },
175 {
"float",
"FLOAT" },
176 {
"double",
"DOUBLE" },
179 {
"default",
"DEFAULT" },
182 {
"switch",
"SWITCH" },
183 {
"while",
"WHILE" },
186 {
"break",
"BREAK" },
187 {
"continue",
"CONTINUE" },
189 {
"return",
"RETURN" },
190 {
"Q_OBJECT",
"Q_OBJECT_TOKEN" },
191 {
"Q_NAMESPACE",
"Q_NAMESPACE_TOKEN" },
192 {
"Q_NAMESPACE_EXPORT",
"Q_NAMESPACE_EXPORT_TOKEN" },
193 {
"Q_GADGET",
"Q_GADGET_TOKEN" },
194 {
"Q_GADGET_EXPORT",
"Q_GADGET_EXPORT_TOKEN" },
195 {
"Q_PROPERTY",
"Q_PROPERTY_TOKEN" },
196 {
"QT_ANONYMOUS_PROPERTY",
"QT_ANONYMOUS_PROPERTY_TOKEN" },
197 {
"Q_PLUGIN_METADATA",
"Q_PLUGIN_METADATA_TOKEN" },
198 {
"Q_ENUMS",
"Q_ENUMS_TOKEN" },
199 {
"Q_ENUM",
"Q_ENUM_TOKEN" },
200 {
"Q_ENUM_NS",
"Q_ENUM_NS_TOKEN" },
201 {
"Q_FLAGS",
"Q_FLAGS_TOKEN" },
202 {
"Q_FLAG",
"Q_FLAG_TOKEN" },
203 {
"Q_FLAG_NS",
"Q_FLAG_NS_TOKEN" },
204 {
"Q_DECLARE_FLAGS",
"Q_DECLARE_FLAGS_TOKEN" },
205 {
"Q_DECLARE_INTERFACE",
"Q_DECLARE_INTERFACE_TOKEN" },
206 {
"Q_DECLARE_METATYPE",
"Q_DECLARE_METATYPE_TOKEN" },
207 {
"Q_DECLARE_EXTENSION_INTERFACE",
"Q_DECLARE_INTERFACE_TOKEN" },
208 {
"Q_SETS",
"Q_FLAGS_TOKEN" },
209 {
"Q_CLASSINFO",
"Q_CLASSINFO_TOKEN" },
210 {
"Q_INTERFACES",
"Q_INTERFACES_TOKEN" },
211 {
"signals",
"SIGNALS" },
212 {
"slots",
"SLOTS" },
213 {
"Q_SIGNALS",
"Q_SIGNALS_TOKEN" },
214 {
"Q_SLOTS",
"Q_SLOTS_TOKEN" },
215 {
"Q_PRIVATE_SLOT",
"Q_PRIVATE_SLOT_TOKEN" },
216 {
"QT_MOC_COMPAT",
"Q_MOC_COMPAT_TOKEN" },
217 {
"Q_INVOKABLE",
"Q_INVOKABLE_TOKEN" },
218 {
"Q_SIGNAL",
"Q_SIGNAL_TOKEN" },
219 {
"Q_SLOT",
"Q_SLOT_TOKEN" },
220 {
"Q_SCRIPTABLE",
"Q_SCRIPTABLE_TOKEN" },
221 {
"Q_PRIVATE_PROPERTY",
"Q_PRIVATE_PROPERTY_TOKEN" },
222 {
"QT_ANONYMOUS_PRIVATE_PROPERTY",
"QT_ANONYMOUS_PRIVATE_PROPERTY_TOKEN" },
223 {
"Q_REVISION",
"Q_REVISION_TOKEN" },
224 {
"Q_MOC_INCLUDE",
"Q_MOC_INCLUDE_TOKEN" },
227 {
"\'",
"SINGLEQUOTE" },
228 {
" ",
"WHITESPACE" },
229 {
"\t",
"WHITESPACE" },
231 {
"##",
"PP_HASHHASH" },
232 {
"\\",
"BACKSLASH" },
233 {
"//",
"CPP_COMMENT" },
234 {
"/*",
"C_COMMENT" },
241 return ((
s >=
'a' &&
s <=
'z')
242 || (
s >=
'A' &&
s <=
'Z')
243 ||
s ==
'_' ||
s ==
'$'
249 return ((
s >=
'a' &&
s <=
'z')
250 || (
s >=
'A' &&
s <=
'Z')
251 || (
s >=
'0' &&
s <=
'9')
252 ||
s ==
'_' ||
s ==
'$'
282 const char *
ident =
nullptr;
284 ident = pre?
"PP_CHARACTER" :
"CHARACTER";
285 else if (*lexem ==
'#')
286 ident = pre?
"PP_HASH" :
"HASH";
292 const char *
t =
nullptr;
296 t = pre?
"PP_INCOMPLETE":
"INCOMPLETE";
331 for (
c =
'a';
c <=
'z'; ++
c)
333 for (
c =
'A';
c <=
'Z'; ++
c)
340 for (
c =
'0';
c <=
'9'; ++
c)
348 for (
c =
'0';
c <=
'9'; ++
c)
357 for (
c = 0;
c < 128; ++
c)
369 states[
i].nextindex = ++transindex;
378 for (k = 0; k <
states.size(); ++k) {
383 for (
c = 0;
c < 128; ++
c) {
396 printf(
"static const short %skeyword_trans[][128] = {\n",
401 printf(
"%s {",
i?
",\n":
"");
402 for (
c = 0;
c < 128; ++
c)
405 (!
c ||
c%16)?
"":
"\n ",
412 printf(
"static const struct\n{\n"
418 "} %skeywords[] = {\n",
423 printf(
"%s {%s, %d, %d, %d, %s}",
436 printf(
"// auto generated\n"
437 "// DO NOT EDIT.\n\n");
static const Keyword keywords[]
bool is_ident_char(char s)
void makeTable(const Keyword keywords[])
bool is_ident_start(char s)
static const Keyword pp_keywords[]
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
bool operator==(const State &o) const