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. */
14 call (c_ppline_comment);
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);
62 state c_ppline_include extends CHighlight
69 call (c_ppline_comments_strings_chars);
76 call (c_ppline_comments_strings_chars);
79 /[a-zA-Z_][a-zA-Z_0-9]*/ {
80 variable_name_face (true);
82 variable_name_face (false);
83 call (c_ppline_comments_strings_chars);
95 state c_ppline_define extends CHighlight
97 /([a-zA-Z_][a-zA-Z_0-9]*)(\([^\)]*\))?/ {
98 if (strcmp ($2, "") != 0)
100 function_name_face (true);
102 function_name_face (false);
107 variable_name_face (true);
109 variable_name_face (false);
111 call (c_ppline_comments_strings_chars);
123 state c_ppline_comments_strings_chars extends CHighlight
129 call (c_ppline_comment);
130 comment_face (false);
132 /* String constants. */
139 /* Character constants. */
154 state c_ppline_tokensequence extends CHighlight
160 call (c_ppline_comment);
161 comment_face (false);
163 /* String constants. */
170 /* Character constants. */
176 /* defined() operators. */
177 /(defined)(\()([^\)]+)(\))/ {
178 reference_face (true);
180 reference_face (false);
183 variable_name_face (true);
185 variable_name_face (false);
189 /* Variable references. */
190 /\b[a-zA-Z_][a-zA-Z_0-9]*\b/ {
191 variable_name_face (true);
193 variable_name_face (false);
204 /* Comments within pre-processor directives need escaped newlines. */
205 state c_ppline_comment extends c_comment {