2 * C preprocessor line handling. This is shared between C, C++, and
3 * Objective-C highlighting rules.
8 state c_ppline extends CHighlight
10 /* Comments within a pre-processor line. */
19 reference_face (true);
21 reference_face (false);
23 call (c_ppline_include);
28 reference_face (true);
30 reference_face (false);
32 call (c_ppline_define);
36 (build-re '(undef if ifdef ifndef endif elif else line error pragma))
38 /\b(e(l(if|se)|ndif|rror)|if(|def|ndef)|line|pragma|undef)\b/ {
39 reference_face (true);
41 reference_face (false);
42 call (c_ppline_tokensequence);
45 /* An unknown pre-processor directive. */
46 /[a-zA-Z_][^ \t\n]*/ {
47 reference_face (true);
49 reference_face (false);
50 call (c_ppline_tokensequence);
59 state c_ppline_include extends CHighlight
66 call (c_ppline_comments_strings_chars);
73 call (c_ppline_comments_strings_chars);
76 /[a-zA-Z_][a-zA-Z_0-9]*/ {
77 variable_name_face (true);
79 variable_name_face (false);
80 call (c_ppline_comments_strings_chars);
89 state c_ppline_define extends CHighlight
91 /([a-zA-Z_][a-zA-Z_0-9]*)(\([^\)]*\))?/ {
92 if (strcmp ($2, "") != 0)
94 function_name_face (true);
96 function_name_face (false);
101 variable_name_face (true);
103 variable_name_face (false);
105 call (c_ppline_comments_strings_chars);
114 state c_ppline_comments_strings_chars extends CHighlight
121 comment_face (false);
123 /* String constants. */
130 /* Character constants. */
142 state c_ppline_tokensequence extends CHighlight
149 comment_face (false);
151 /* String constants. */
158 /* Character constants. */
164 /* defined() operators. */
165 /(defined)(\()([^\)]+)(\))/ {
166 reference_face (true);
168 reference_face (false);
171 variable_name_face (true);
173 variable_name_face (false);
177 /* Variable references. */
178 /\b[a-zA-Z_][a-zA-Z_0-9]*\b/ {
179 variable_name_face (true);
181 variable_name_face (false);