2 * C preprocessor line handling. This is shared between C, C++, and
3 * Objective-C highlighting rules.
6 state c_ppline extends CHighlight
11 /* Comments within a pre-processor line. */
20 reference_face (true);
22 reference_face (false);
24 call (c_ppline_include);
29 reference_face (true);
31 reference_face (false);
33 call (c_ppline_define);
37 (build-re '(undef if ifdef ifndef endif elif else line error pragma))
39 /\b(e(l(if|se)|ndif|rror)|if(|def|ndef)|line|pragma|undef)\b/ {
40 reference_face (true);
42 reference_face (false);
43 call (c_ppline_tokensequence);
46 /* An unknown pre-processor directive. */
47 /[a-zA-Z_][^ \t\n]*/ {
48 reference_face (true);
50 reference_face (false);
51 call (c_ppline_tokensequence);
60 state c_ppline_include extends CHighlight
67 call (c_ppline_comments_strings_chars);
74 call (c_ppline_comments_strings_chars);
77 /[a-zA-Z_][a-zA-Z_0-9]*/ {
78 variable_name_face (true);
80 variable_name_face (false);
81 call (c_ppline_comments_strings_chars);
90 state c_ppline_define extends CHighlight
92 /([a-zA-Z_][a-zA-Z_0-9]*)(\([^\)]*\))?/ {
93 if (strcmp ($2, "") != 0)
95 function_name_face (true);
97 function_name_face (false);
102 variable_name_face (true);
104 variable_name_face (false);
106 call (c_ppline_comments_strings_chars);
115 state c_ppline_comments_strings_chars extends CHighlight
122 comment_face (false);
124 /* String constants. */
131 /* Character constants. */
143 state c_ppline_tokensequence extends CHighlight
150 comment_face (false);
152 /* String constants. */
159 /* Character constants. */
165 /* defined() operators. */
166 /(defined)(\()([^\)]+)(\))/ {
167 reference_face (true);
169 reference_face (false);
172 variable_name_face (true);
174 variable_name_face (false);
178 /* Variable references. */
179 /\b[a-zA-Z_][a-zA-Z_0-9]*\b/ {
180 variable_name_face (true);
182 variable_name_face (false);