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