]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/cuda.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / cuda.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- Extension of cplusplus.xml to add CUDA specific syntax. -->
6 <MODE>
7     <PROPS>
8         <PROPERTY NAME="commentStart" VALUE="/*" />
9         <PROPERTY NAME="commentEnd" VALUE="*/" />
10         <PROPERTY NAME="lineComment" VALUE="//" />
11         <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />
12
13
14         <!-- Auto indent -->
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=":" />
24     </PROPS>
25
26     <RULES
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>
30
31         <IMPORT DELEGATE="LEX"/>
32         <IMPORT DELEGATE="CORE"/>
33     </RULES>
34
35     <!-- Core C++ language -->
36     <RULES SET="LEX"
37         ESCAPE="\" IGNORE_CASE="FALSE"
38         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
39
40         <IMPORT DELEGATE="c::LEX"/>
41         <IMPORT DELEGATE="c++::LEX"/>
42
43         <SEQ TYPE="OPERATOR">&lt;&lt;&lt;</SEQ>
44         <SEQ TYPE="OPERATOR">&gt;&gt;&gt;</SEQ>
45     </RULES>
46
47     <!-- Extra CUDA keywords -->
48     <RULES SET="CORE"
49         ESCAPE="\" IGNORE_CASE="FALSE"
50         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
51
52         <IMPORT DELEGATE="c::CORE"/>
53         <IMPORT DELEGATE="c++::CORE"/>
54
55         <KEYWORDS>
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>
121         </KEYWORDS>
122     </RULES>
123
124     <!-- Preprocessor specific rules -->
125     <RULES SET="CPP"
126         ESCAPE="\" IGNORE_CASE="FALSE"
127         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
128
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>
134
135         <IMPORT DELEGATE="LEX"/>
136
137         <!-- Directives -->
138         <KEYWORDS>
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>
147         </KEYWORDS>
148     </RULES>
149
150     <!-- After #define directive -->
151     <!-- Almost same as the normal code,
152         except two additional operators # and ##. -->
153     <RULES SET="DEFINE"
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"/>
159     </RULES>
160
161 </MODE>
162