3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
5 <!-- Extension of cplusplus.xml to add CUDA specific syntax. -->
8 <PROPERTY NAME="commentStart" VALUE="/*" />
9 <PROPERTY NAME="commentEnd" VALUE="*/" />
10 <PROPERTY NAME="lineComment" VALUE="//" />
11 <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
15 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
16 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
17 <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />
18 <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />
19 <PROPERTY NAME="indentNextLine"
20 VALUE="(?!^\s*(#|//)).*(\b(if|while|for)\s*\(.*\)|\b(else|do)\b)[^{;]*$" />
21 <PROPERTY NAME="unindentThisLine"
22 VALUE="^\s*((case\b.*|[\p{Alpha}_][\p{Alnum}_]*)\s*:(?!:)).*$" />
23 <PROPERTY NAME="electricKeys" VALUE=":" />
27 ESCAPE="\" IGNORE_CASE="FALSE"
28 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
29 <EOL_SPAN TYPE="KEYWORD2" AT_WHITESPACE_END="TRUE" DELEGATE="CPP">#</EOL_SPAN>
31 <IMPORT DELEGATE="LEX"/>
32 <IMPORT DELEGATE="CORE"/>
35 <!-- Core C++ language -->
37 ESCAPE="\" IGNORE_CASE="FALSE"
38 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
40 <IMPORT DELEGATE="c::LEX"/>
41 <IMPORT DELEGATE="c++::LEX"/>
43 <SEQ TYPE="OPERATOR"><<<</SEQ>
44 <SEQ TYPE="OPERATOR">>>></SEQ>
47 <!-- Extra CUDA keywords -->
49 ESCAPE="\" IGNORE_CASE="FALSE"
50 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
52 <IMPORT DELEGATE="c::CORE"/>
53 <IMPORT DELEGATE="c++::CORE"/>
56 <KEYWORD1>__device__</KEYWORD1>
57 <KEYWORD2>__host__</KEYWORD2>
58 <KEYWORD2>__global__</KEYWORD2>
59 <KEYWORD2>__local__</KEYWORD2>
60 <KEYWORD2>__constant__</KEYWORD2>
61 <KEYWORD2>__shared__</KEYWORD2>
62 <KEYWORD1>__inline__</KEYWORD1>
63 <KEYWORD1>__restrict__</KEYWORD1>
64 <KEYWORD4>blockIdx</KEYWORD4>
65 <KEYWORD4>threadIdx</KEYWORD4>
66 <KEYWORD4>gridDim</KEYWORD4>
67 <KEYWORD4>blockDim</KEYWORD4>
68 <KEYWORD3>char1</KEYWORD3>
69 <KEYWORD3>char2</KEYWORD3>
70 <KEYWORD3>char3</KEYWORD3>
71 <KEYWORD3>char4</KEYWORD3>
72 <KEYWORD3>uchar1</KEYWORD3>
73 <KEYWORD3>uchar2</KEYWORD3>
74 <KEYWORD3>uchar3</KEYWORD3>
75 <KEYWORD3>uchar4</KEYWORD3>
76 <KEYWORD3>short1</KEYWORD3>
77 <KEYWORD3>short2</KEYWORD3>
78 <KEYWORD3>short3</KEYWORD3>
79 <KEYWORD3>short4</KEYWORD3>
80 <KEYWORD3>ushort1</KEYWORD3>
81 <KEYWORD3>ushort2</KEYWORD3>
82 <KEYWORD3>ushort3</KEYWORD3>
83 <KEYWORD3>ushort4</KEYWORD3>
84 <KEYWORD3>int1</KEYWORD3>
85 <KEYWORD3>int2</KEYWORD3>
86 <KEYWORD3>int3</KEYWORD3>
87 <KEYWORD3>int4</KEYWORD3>
88 <KEYWORD3>uint1</KEYWORD3>
89 <KEYWORD3>uint2</KEYWORD3>
90 <KEYWORD3>uint3</KEYWORD3>
91 <KEYWORD3>uint4</KEYWORD3>
92 <KEYWORD3>long1</KEYWORD3>
93 <KEYWORD3>long2</KEYWORD3>
94 <KEYWORD3>long3</KEYWORD3>
95 <KEYWORD3>long4</KEYWORD3>
96 <KEYWORD3>ulong1</KEYWORD3>
97 <KEYWORD3>ulong2</KEYWORD3>
98 <KEYWORD3>ulong3</KEYWORD3>
99 <KEYWORD3>ulong4</KEYWORD3>
100 <KEYWORD3>longlong1</KEYWORD3>
101 <KEYWORD3>longlong2</KEYWORD3>
102 <KEYWORD3>longlong3</KEYWORD3>
103 <KEYWORD3>longlong4</KEYWORD3>
104 <KEYWORD3>ulonglong1</KEYWORD3>
105 <KEYWORD3>ulonglong2</KEYWORD3>
106 <KEYWORD3>ulonglong3</KEYWORD3>
107 <KEYWORD3>ulonglong4</KEYWORD3>
108 <KEYWORD3>float1</KEYWORD3>
109 <KEYWORD3>float2</KEYWORD3>
110 <KEYWORD3>float3</KEYWORD3>
111 <KEYWORD3>float4</KEYWORD3>
112 <KEYWORD3>double1</KEYWORD3>
113 <KEYWORD3>double2</KEYWORD3>
114 <KEYWORD3>double3</KEYWORD3>
115 <KEYWORD3>double4</KEYWORD3>
116 <KEYWORD3>dim1</KEYWORD3>
117 <KEYWORD3>dim2</KEYWORD3>
118 <KEYWORD3>dim3</KEYWORD3>
119 <KEYWORD3>dim4</KEYWORD3>
120 <KEYWORD3>texture</KEYWORD3>
124 <!-- Preprocessor specific rules -->
126 ESCAPE="\" IGNORE_CASE="FALSE"
127 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
129 <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="c::INCLUDE">include\b</EOL_SPAN_REGEXP>
130 <EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>
131 <EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="c::LEX">endif\b</EOL_SPAN_REGEXP>
132 <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="c::CONDITION">elif\b</EOL_SPAN_REGEXP>
133 <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="c::CONDITION">if\b</EOL_SPAN_REGEXP>
135 <IMPORT DELEGATE="LEX"/>
139 <MARKUP>ifdef</MARKUP>
140 <MARKUP>ifndef</MARKUP>
141 <MARKUP>else</MARKUP>
142 <MARKUP>error</MARKUP>
143 <MARKUP>line</MARKUP>
144 <MARKUP>pragma</MARKUP>
145 <MARKUP>undef</MARKUP>
146 <MARKUP>warning</MARKUP>
150 <!-- After #define directive -->
151 <!-- Almost same as the normal code,
152 except two additional operators # and ##. -->
154 ESCAPE="\" IGNORE_CASE="FALSE"
155 HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
156 <SEQ TYPE="OPERATOR">#</SEQ>
157 <IMPORT DELEGATE="LEX"/>
158 <IMPORT DELEGATE="CORE"/>