]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/hlsl.xml
0f361c5a29303bd4b7509446e50249b9b72d82d3
[factor.git] / basis / xmode / modes / hlsl.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <MODE>\r
6 <!--\r
7 DirectX FX Files Syntax Highlighting (Edit Mode) for jEdit\r
8 Including: Preprocessor, HLSL and Shader Assembler up to shader version 3.0\r
9 \r
10 Author: Adam Sawicki\r
11 - Homepage: http://regedit.gamedev.pl/\r
12 - E-mail: sawickiap@poczta.onet.pl\r
13 - IRC: #warsztat @ PolNet\r
14 - Gadu-Gadu: 2272474\r
15 \r
16 -->\r
17 \r
18         <PROPS>\r
19                 <PROPERTY NAME="commentStart" VALUE="/*" />\r
20                 <PROPERTY NAME="commentEnd" VALUE="*/" />\r
21                 <PROPERTY NAME="lineComment" VALUE="//" />\r
22                 <PROPERTY NAME="wordBreakChars" VALUE=".,+-*/=&lt;&gt;?^&amp;[]{}" />\r
23                 \r
24                 <!-- Auto indent -->\r
25                 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
26                 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
27                 <PROPERTY NAME="indentNextLine" VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />\r
28                 <PROPERTY NAME="doubleBracketIndent" VALUE="false" />\r
29                 <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />\r
30         </PROPS>\r
31         \r
32         <RULES\r
33                 ESCAPE="\"\r
34                 IGNORE_CASE="FALSE"\r
35                 HIGHLIGHT_DIGITS="TRUE"\r
36                 DIGIT_RE="((0[xX][0-9a-fA-F]+|\d+)[uUIL]?|\d+([eE]\d*)?[hHfF]?)">\r
37                 \r
38                 <!-- C style comment -->\r
39                 <SPAN TYPE="COMMENT1">\r
40                         <BEGIN>/*</BEGIN>\r
41                         <END>*/</END>\r
42                 </SPAN>\r
43                 \r
44                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
45                         <BEGIN>"</BEGIN>\r
46                         <END>"</END>\r
47                 </SPAN>\r
48                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
49                         <BEGIN>'</BEGIN>\r
50                         <END>'</END>\r
51                 </SPAN>\r
52                 \r
53                 <!-- preprocessor statements -->\r
54                 <SEQ TYPE="KEYWORD2">##</SEQ>\r
55                 <SEQ TYPE="KEYWORD2">#@</SEQ>\r
56                 <EOL_SPAN TYPE="KEYWORD2" DELEGATE="Preprocessor">#</EOL_SPAN>\r
57                 \r
58                 <!-- asm -->\r
59                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">\r
60                         <BEGIN>asm</BEGIN>\r
61                         <END>}</END>\r
62                 </SPAN>\r
63                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">\r
64                         <BEGIN>ASM</BEGIN>\r
65                         <END>}</END>\r
66                 </SPAN>\r
67                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">\r
68                         <BEGIN>Asm</BEGIN>\r
69                         <END>}</END>\r
70                 </SPAN>\r
71                 <SPAN AT_WORD_START="TRUE" EXCLUDE_MATCH="FALSE" TYPE="KEYWORD1" DELEGATE="Asm">\r
72                         <BEGIN>asm_fragment</BEGIN>\r
73                         <END>}</END>\r
74                 </SPAN>\r
75                 \r
76                 <!-- C style comment -->\r
77                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>\r
78                 \r
79                 <!-- Operators - multi character -->\r
80                 <SEQ TYPE="OPERATOR">++</SEQ>\r
81                 <SEQ TYPE="OPERATOR">--</SEQ>\r
82                 <SEQ TYPE="OPERATOR">&amp;&amp;</SEQ>\r
83                 <SEQ TYPE="OPERATOR">||</SEQ>\r
84                 <SEQ TYPE="OPERATOR">==</SEQ>\r
85                 <SEQ TYPE="OPERATOR">::</SEQ>\r
86                 <SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>\r
87                 <SEQ TYPE="OPERATOR">&lt;&lt;=</SEQ>\r
88                 <SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>\r
89                 <SEQ TYPE="OPERATOR">&gt;&gt;=</SEQ>\r
90                 <SEQ TYPE="OPERATOR">...</SEQ>\r
91                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
92                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
93                 <SEQ TYPE="OPERATOR">!=</SEQ>\r
94                 <SEQ TYPE="OPERATOR">*=</SEQ>\r
95                 <SEQ TYPE="OPERATOR">/=</SEQ>\r
96                 <SEQ TYPE="OPERATOR">+=</SEQ>\r
97                 <SEQ TYPE="OPERATOR">-=</SEQ>\r
98                 <SEQ TYPE="OPERATOR">%=</SEQ>\r
99                 <SEQ TYPE="OPERATOR">&amp;=</SEQ>\r
100                 <SEQ TYPE="OPERATOR">|=</SEQ>\r
101                 <SEQ TYPE="OPERATOR">^=</SEQ>\r
102                 <SEQ TYPE="OPERATOR">-&gt;</SEQ>\r
103 \r
104                 <!-- Operators - single characters -->\r
105                 <SEQ TYPE="OPERATOR">}</SEQ>\r
106                 <SEQ TYPE="OPERATOR">{</SEQ>\r
107                 <SEQ TYPE="OPERATOR">+</SEQ>\r
108                 <SEQ TYPE="OPERATOR">-</SEQ>\r
109                 <SEQ TYPE="OPERATOR">*</SEQ>\r
110                 <SEQ TYPE="OPERATOR">/</SEQ>\r
111                 <SEQ TYPE="OPERATOR">%</SEQ>\r
112                 <SEQ TYPE="OPERATOR">=</SEQ>\r
113                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
114                 <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
115                 <SEQ TYPE="OPERATOR">!</SEQ>\r
116                 \r
117                 <!-- Function calls -->\r
118                 <MARK_PREVIOUS TYPE="FUNCTION" EXCLUDE_MATCH="TRUE">(</MARK_PREVIOUS>\r
119                 \r
120                 <!-- Swizzle operator for vectors/scalars (a.xyzw OR b.rgba), matrices (c._m00_m01 OR d._11_12) indexing -->\r
121                 <SEQ_REGEXP TYPE="OPERATOR" HASH_CHAR=".">.(([xyzw]{1,4})|([rgba]{1,4})|((_m[0123][0123])+)|((_[1234][1234])+))(?!\p{Alnum})</SEQ_REGEXP>\r
122                 \r
123                 <!-- Atomic, but complex types -->\r
124                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="bool">bool[1234](x[1234])?\b</SEQ_REGEXP>\r
125                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="int">int[1234](x[1234])?\b</SEQ_REGEXP>\r
126                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="half">half[1234](x[1234])?\b</SEQ_REGEXP>\r
127                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="float">float[1234](x[1234])?\b</SEQ_REGEXP>\r
128                 <SEQ_REGEXP TYPE="KEYWORD2" AT_WORD_START="TRUE" HASH_CHAR="double">double[1234](x[1234])?\b</SEQ_REGEXP>\r
129                 \r
130                 <!-- Semantics -->\r
131                 <SEQ_REGEXP TYPE="KEYWORD1" HASH_CHAR=":">:\s*(register\s*\(\w+(\s*\,\s*\w+\s*)?\)|\w+)</SEQ_REGEXP>\r
132                 \r
133                 <KEYWORDS>\r
134                         <!-- Control flow keywords -->\r
135                         <KEYWORD1>discard</KEYWORD1>\r
136                         <KEYWORD1>do</KEYWORD1>\r
137                         <KEYWORD1>else</KEYWORD1>\r
138                         <KEYWORD1>for</KEYWORD1>\r
139                         <KEYWORD1>if</KEYWORD1>\r
140                         <KEYWORD1>return</KEYWORD1>\r
141                         <KEYWORD1>typedef</KEYWORD1>\r
142                         <KEYWORD1>while</KEYWORD1>\r
143                         \r
144                         <!-- Other keywords -->\r
145                         <KEYWORD1>compile</KEYWORD1>\r
146                         <KEYWORD1>compile_fragment</KEYWORD1>\r
147                         <KEYWORD1>register</KEYWORD1>\r
148                         <KEYWORD1>sampler_state</KEYWORD1>\r
149                         <KEYWORD1>stateblock_state</KEYWORD1>\r
150                         <KEYWORD1>technique</KEYWORD1>\r
151                         <KEYWORD1>Technique</KEYWORD1>\r
152                         <KEYWORD1>TECHNIQUE</KEYWORD1>\r
153                         <KEYWORD1>pass</KEYWORD1>\r
154                         <KEYWORD1>Pass</KEYWORD1>\r
155                         <KEYWORD1>PASS</KEYWORD1>\r
156                         <KEYWORD1>decl</KEYWORD1>\r
157                         <KEYWORD1>Decl</KEYWORD1>\r
158                         <KEYWORD1>DECL</KEYWORD1>\r
159                         \r
160                         <!-- Atomic type keywords -->\r
161                         <KEYWORD2>void</KEYWORD2>\r
162                         <KEYWORD2>bool</KEYWORD2>\r
163                         <KEYWORD2>int</KEYWORD2>\r
164                         <KEYWORD2>half</KEYWORD2>\r
165                         <KEYWORD2>float</KEYWORD2>\r
166                         <KEYWORD2>double</KEYWORD2>\r
167                         <KEYWORD2>vector</KEYWORD2>\r
168                         <KEYWORD2>matrix</KEYWORD2>\r
169                         \r
170                         <!-- Object type keywords -->\r
171                         <KEYWORD3>string</KEYWORD3>\r
172                         <KEYWORD3>texture</KEYWORD3>\r
173                         <KEYWORD3>texture1D</KEYWORD3>\r
174                         <KEYWORD3>texture2D</KEYWORD3>\r
175                         <KEYWORD3>texture3D</KEYWORD3>\r
176                         <KEYWORD3>textureCUBE</KEYWORD3>\r
177                         <KEYWORD3>sampler</KEYWORD3>\r
178                         <KEYWORD3>sampler1D</KEYWORD3>\r
179                         <KEYWORD3>sampler2D</KEYWORD3>\r
180                         <KEYWORD3>sampler3D</KEYWORD3>\r
181                         <KEYWORD3>samplerCUBE</KEYWORD3>\r
182                         <KEYWORD3>pixelfragment</KEYWORD3>\r
183                         <KEYWORD3>vertexfragment</KEYWORD3>\r
184                         <KEYWORD3>pixelshader</KEYWORD3>\r
185                         <KEYWORD3>vertexshader</KEYWORD3>\r
186                         <KEYWORD3>stateblock</KEYWORD3>\r
187                         <KEYWORD3>struct</KEYWORD3>\r
188 \r
189                         <!-- Usage keywords -->\r
190                         <KEYWORD4>static</KEYWORD4>\r
191                         <KEYWORD4>uniform</KEYWORD4>\r
192                         <KEYWORD4>extern</KEYWORD4>\r
193                         <KEYWORD4>volatile</KEYWORD4>\r
194                         <KEYWORD4>inline</KEYWORD4>\r
195                         <KEYWORD4>shared</KEYWORD4>\r
196                         <KEYWORD4>const</KEYWORD4>\r
197                         <KEYWORD4>row_major</KEYWORD4>\r
198                         <KEYWORD4>column_major</KEYWORD4>\r
199                         <KEYWORD4>in</KEYWORD4>\r
200                         <KEYWORD4>inout</KEYWORD4>\r
201                         <KEYWORD4>out</KEYWORD4>                        \r
202                         \r
203                         <!-- Literals -->\r
204                         <LITERAL1>false</LITERAL1>\r
205                         <LITERAL1>true</LITERAL1>\r
206                         <LITERAL1>NULL</LITERAL1>\r
207                         \r
208                         <!-- Intrinsic functions -->\r
209                         <LITERAL2>abs</LITERAL2>\r
210                         <LITERAL2>acos</LITERAL2>\r
211                         <LITERAL2>all</LITERAL2>\r
212                         <LITERAL2>any</LITERAL2>\r
213                         <LITERAL2>asin</LITERAL2>\r
214                         <LITERAL2>atan</LITERAL2>\r
215                         <LITERAL2>atan2</LITERAL2>\r
216                         <LITERAL2>ceil</LITERAL2>\r
217                         <LITERAL2>clamp</LITERAL2>\r
218                         <LITERAL2>clip</LITERAL2>\r
219                         <LITERAL2>cos</LITERAL2>\r
220                         <LITERAL2>cosh</LITERAL2>\r
221                         <LITERAL2>cross</LITERAL2>\r
222                         <LITERAL2>D3DCOLORtoUBYTE4</LITERAL2>\r
223                         <LITERAL2>ddx</LITERAL2>\r
224                         <LITERAL2>ddy</LITERAL2>\r
225                         <LITERAL2>degrees</LITERAL2>\r
226                         <LITERAL2>determinant</LITERAL2>\r
227                         <LITERAL2>distance</LITERAL2>\r
228                         <LITERAL2>dot</LITERAL2>\r
229                         <LITERAL2>exp</LITERAL2>\r
230                         <LITERAL2>exp2</LITERAL2>\r
231                         <LITERAL2>faceforward</LITERAL2>\r
232                         <LITERAL2>floor</LITERAL2>\r
233                         <LITERAL2>fmod</LITERAL2>\r
234                         <LITERAL2>frac</LITERAL2>\r
235                         <LITERAL2>frexp</LITERAL2>\r
236                         <LITERAL2>fwidth</LITERAL2>\r
237                         <LITERAL2>isfinite</LITERAL2>\r
238                         <LITERAL2>isinf</LITERAL2>\r
239                         <LITERAL2>isnan</LITERAL2>\r
240                         <LITERAL2>ldexp</LITERAL2>\r
241                         <LITERAL2>length</LITERAL2>\r
242                         <LITERAL2>lerp</LITERAL2>\r
243                         <LITERAL2>lit</LITERAL2>\r
244                         <LITERAL2>log</LITERAL2>\r
245                         <LITERAL2>log10</LITERAL2>\r
246                         <LITERAL2>log2</LITERAL2>\r
247                         <LITERAL2>max</LITERAL2>\r
248                         <LITERAL2>min</LITERAL2>\r
249                         <LITERAL2>modf</LITERAL2>\r
250                         <LITERAL2>mul</LITERAL2>\r
251                         <LITERAL2>noise</LITERAL2>\r
252                         <LITERAL2>normalize</LITERAL2>\r
253                         <LITERAL2>pow</LITERAL2>\r
254                         <LITERAL2>radians</LITERAL2>\r
255                         <LITERAL2>reflect</LITERAL2>\r
256                         <LITERAL2>refract</LITERAL2>\r
257                         <LITERAL2>round</LITERAL2>\r
258                         <LITERAL2>rsqrt</LITERAL2>\r
259                         <LITERAL2>saturate</LITERAL2>\r
260                         <LITERAL2>sign</LITERAL2>\r
261                         <LITERAL2>sin</LITERAL2>\r
262                         <LITERAL2>sincos</LITERAL2>\r
263                         <LITERAL2>sinh</LITERAL2>\r
264                         <LITERAL2>smoothstep</LITERAL2>\r
265                         <LITERAL2>sqrt</LITERAL2>\r
266                         <LITERAL2>step</LITERAL2>\r
267                         <LITERAL2>tan</LITERAL2>\r
268                         <LITERAL2>tanh</LITERAL2>\r
269                         <LITERAL2>transpose</LITERAL2>\r
270                         \r
271                         <!-- Intrinsic functions - sampling -->\r
272                         <LITERAL3>tex1D</LITERAL3>\r
273                         <LITERAL3>tex1Dgrad</LITERAL3>\r
274                         <LITERAL3>tex1Dbias</LITERAL3>\r
275                         <LITERAL3>tex1Dgrad</LITERAL3>\r
276                         <LITERAL3>tex1Dlod</LITERAL3>\r
277                         <LITERAL3>tex1Dproj</LITERAL3>\r
278                         <LITERAL3>tex2D</LITERAL3>\r
279                         <LITERAL3>tex2D</LITERAL3>\r
280                         <LITERAL3>tex2Dbias</LITERAL3>\r
281                         <LITERAL3>tex2Dgrad</LITERAL3>\r
282                         <LITERAL3>tex2Dlod</LITERAL3>\r
283                         <LITERAL3>tex2Dproj</LITERAL3>\r
284                         <LITERAL3>tex3D</LITERAL3>\r
285                         <LITERAL3>tex3D</LITERAL3>\r
286                         <LITERAL3>tex3Dbias</LITERAL3>\r
287                         <LITERAL3>tex3Dgrad</LITERAL3>\r
288                         <LITERAL3>tex3Dlod</LITERAL3>\r
289                         <LITERAL3>tex3Dproj</LITERAL3>\r
290                         <LITERAL3>texCUBE</LITERAL3>\r
291                         <LITERAL3>texCUBE</LITERAL3>\r
292                         <LITERAL3>texCUBEbias</LITERAL3>\r
293                         <LITERAL3>texCUBEgrad</LITERAL3>\r
294                         <LITERAL3>texCUBElod</LITERAL3>\r
295                         <LITERAL3>texCUBEproj</LITERAL3>\r
296 \r
297                         <!-- Reserved but unused words -->\r
298                         <INVALID>auto</INVALID>\r
299                         <INVALID>break</INVALID>\r
300                         <INVALID>case</INVALID>\r
301                         <INVALID>catch</INVALID>\r
302                         <INVALID>char</INVALID>\r
303                         <INVALID>class</INVALID>\r
304                         <INVALID>const_cast</INVALID>\r
305                         <INVALID>continue</INVALID>\r
306                         <INVALID>default</INVALID>\r
307                         <INVALID>delete</INVALID>\r
308                         <INVALID>dynamic_cast</INVALID>\r
309                         <INVALID>enum</INVALID>\r
310                         <INVALID>explicit</INVALID>\r
311                         <INVALID>friend</INVALID>\r
312                         <INVALID>goto</INVALID>\r
313                         <INVALID>long</INVALID>\r
314                         <INVALID>mutable</INVALID>\r
315                         <INVALID>namespace</INVALID>\r
316                         <INVALID>new</INVALID>\r
317                         <INVALID>operator</INVALID>\r
318                         <INVALID>private</INVALID>\r
319                         <INVALID>protected</INVALID>\r
320                         <INVALID>public</INVALID>\r
321                         <INVALID>reinterpret_cast</INVALID>\r
322                         <INVALID>short</INVALID>\r
323                         <INVALID>signed</INVALID>\r
324                         <INVALID>sizeof</INVALID>\r
325                         <INVALID>static_cast</INVALID>\r
326                         <INVALID>switch</INVALID>\r
327                         <INVALID>template</INVALID>\r
328                         <INVALID>this</INVALID>\r
329                         <INVALID>throw</INVALID>\r
330                         <INVALID>try</INVALID>\r
331                         <INVALID>typename</INVALID>\r
332                         <INVALID>union</INVALID>\r
333                         <INVALID>unsigned</INVALID>\r
334                         <INVALID>using</INVALID>\r
335                         <INVALID>virtual</INVALID>\r
336                 </KEYWORDS>\r
337         </RULES>\r
338 \r
339         <RULES SET="Include" DEFAULT="KEYWORD2" />\r
340 \r
341         <RULES\r
342                 SET="Preprocessor"\r
343                 DEFAULT="KEYWORD2"\r
344                 IGNORE_CASE="FALSE"\r
345                 HIGHLIGHT_DIGITS="TRUE"\r
346                 DIGIT_RE="((0x[[:xdigit:]]+|[[:digit:]]+)[uUIL]?|[[:digit:]]+([eE][[:digit:]]*)?[hHfF]?)">\r
347 \r
348                 <!-- C style comment -->\r
349                 <SPAN TYPE="COMMENT1">\r
350                         <BEGIN>/*</BEGIN>\r
351                         <END>*/</END>\r
352                 </SPAN>\r
353                 \r
354                 <!-- this is a hack so that #include <net/if.h> does not get the if highlighted -->\r
355                 <EOL_SPAN TYPE="MARKUP" DELEGATE="Include">include</EOL_SPAN>\r
356                 \r
357                 <KEYWORDS>\r
358                         <!-- Directives -->\r
359                         <MARKUP>define</MARKUP>\r
360                         <MARKUP>elif</MARKUP>\r
361                         <MARKUP>else</MARKUP>\r
362                         <MARKUP>endif</MARKUP>\r
363                         <MARKUP>error</MARKUP>\r
364                         <MARKUP>if</MARKUP>\r
365                         <MARKUP>ifdef</MARKUP>\r
366                         <MARKUP>ifndef</MARKUP>\r
367                         <MARKUP>line</MARKUP>\r
368                         <MARKUP>pragma</MARKUP>\r
369                         <MARKUP>undef</MARKUP>\r
370                         \r
371                         <!-- Other -->\r
372                         <LITERAL1>pack_matrix</LITERAL1>\r
373                         <LITERAL1>warning</LITERAL1>\r
374                         <LITERAL1>def</LITERAL1>\r
375                         <LITERAL1>defined</LITERAL1>\r
376                         <LITERAL1>D3DX</LITERAL1>\r
377                         <LITERAL1>D3DX_VERSION</LITERAL1>\r
378                         <LITERAL1>DIRECT3D</LITERAL1>\r
379                         <LITERAL1>DIRECT3D_VERSION</LITERAL1>\r
380                         <LITERAL1>__FILE__</LITERAL1>\r
381                         <LITERAL1>__LINE__</LITERAL1>\r
382                 </KEYWORDS>\r
383         </RULES>\r
384 \r
385         <RULES SET="Asm"\r
386                 DEFAULT="NULL"\r
387                 IGNORE_CASE="FALSE"\r
388                 HIGHLIGHT_DIGITS="TRUE"\r
389                 DIGIT_RE="((0x[[:xdigit:]]+|[[:digit:]]+)[uUIL]?|[[:digit:]]+([eE][[:digit:]]*)?[hHfF]?)">\r
390                 \r
391                 <!-- Starting... -->\r
392                 <SEQ TYPE="OPERATOR">{</SEQ>\r
393 \r
394                 <!-- Comments -->\r
395                 <SPAN TYPE="COMMENT1">\r
396                         <BEGIN>/*</BEGIN>\r
397                         <END>*/</END>\r
398                 </SPAN>\r
399                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>\r
400                 <EOL_SPAN TYPE="COMMENT2">;</EOL_SPAN>\r
401 \r
402                 <!-- Operators -->\r
403                 <SEQ TYPE="OPERATOR">+</SEQ>\r
404                 <SEQ TYPE="OPERATOR">-</SEQ>\r
405                 <SEQ TYPE="OPERATOR">,</SEQ>\r
406 \r
407                 <!-- Swizzle operator -->\r
408                 <SEQ_REGEXP TYPE="OPERATOR" HASH_CHAR=".">.(([xyzw]{1,4}))</SEQ_REGEXP>\r
409                 \r
410                 <!-- Instruction -->\r
411                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="abs">abs(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
412                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="add">add(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
413                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="bem">bem(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
414                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="break_comp">break_comp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
415                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="breakp">breakp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
416                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="callnz">callnz(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
417                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="cmp">cmp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
418                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="cnd">cnd(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
419                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="crs">crs(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
420                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dp2add">dp2add(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
421                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dp3">dp3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
422                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dp4">dp4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
423                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dst">dst(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
424                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dsx">dsx(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
425                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="dsy">dsy(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
426                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="else">else(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
427                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="endif">endif(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
428                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="endloop">endloop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
429                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="endrep">endrep(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
430                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="exp">exp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
431                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="frc">frc(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
432                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="if">if(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
433                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="label">label(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
434                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="lit">lit(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
435                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="logp">logp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
436                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="loop">loop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
437                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="lrp">lrp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
438                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m3x2">m3x2(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
439                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m3x3">m3x3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
440                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m3x4">m3x4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
441                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m4x3">m4x3(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
442                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="m4x4">m4x4(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
443                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mad">mad(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
444                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mov">mov(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
445                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="max">max(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
446                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="min">min(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
447                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mova">mova(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
448                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="mul">mul(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
449                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="nop">nop(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
450                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="nrm">nrm(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
451                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="phase">phase(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
452                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="pow">pow(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
453                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="rcp">rcp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
454                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="rep">rep(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
455                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="ret">ret(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
456                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="rsq">rsq(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
457                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="setp_comp">setp_comp(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
458                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sge">sge(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
459                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sgn">sgn(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
460                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sincos">sincos(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
461                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="slt">slt(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
462                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="sub">sub(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
463                 <!-- (seen in preshader -->\r
464                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="FUNCTION" HASH_CHAR="neg">neg(_pp|_sat|_x2|_x4|_x8|_bx2|_d2|_d4|_d8)*\b</SEQ_REGEXP>\r
465                 \r
466                 <!-- Texturing instruction -->\r
467                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD2" HASH_CHAR="tex">tex\w*</SEQ_REGEXP>\r
468                 \r
469                 <!-- Main instruction -->\r
470                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="ps">ps\w*</SEQ_REGEXP>\r
471                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="vs">vs\w*</SEQ_REGEXP>\r
472                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="def">def\w*</SEQ_REGEXP>\r
473                 <SEQ_REGEXP AT_WORD_START="TRUE" TYPE="KEYWORD1" HASH_CHAR="dcl">dcl\w*</SEQ_REGEXP>\r
474 \r
475                 <KEYWORDS>\r
476                 </KEYWORDS>\r
477         </RULES>\r
478 </MODE>\r
479 \r