]> gitweb.factorcode.org Git - factor.git/commitdiff
xmode.modes: add cuda xmode
authorJoe Groff <arcata@gmail.com>
Wed, 9 Jun 2010 00:08:51 +0000 (17:08 -0700)
committerJoe Groff <arcata@gmail.com>
Wed, 9 Jun 2010 00:08:51 +0000 (17:08 -0700)
basis/xmode/modes/catalog
basis/xmode/modes/cuda.xml [new file with mode: 0644]

index f4300b456bbed8fd605b0d4118451ffdd9d54867..390e5279a5f55c6cc8afa9b0ded1f6666d125dae 100644 (file)
                                FILE_NAME_GLOB="*.{cfm,dbm,cfc}" />\r
 \r
 <MODE NAME="c++"               FILE="cplusplus.xml"\r
-                               FILE_NAME_GLOB="*.{cc,cpp,hh,hpp,cxx}" />\r
+                               FILE_NAME_GLOB="*.{cc,cpp,hh,hpp,cxx,inl,mm}" />\r
+\r
+<MODE NAME="cuda"              FILE="cuda.xml"\r
+                               FILE_NAME_GLOB="*.{cu,gpu,cuh}" />\r
 \r
 <MODE NAME="c#"                        FILE="csharp.xml"\r
                                FILE_NAME_GLOB="*.cs" />\r
diff --git a/basis/xmode/modes/cuda.xml b/basis/xmode/modes/cuda.xml
new file mode 100644 (file)
index 0000000..865ac89
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>\r
+\r
+<!DOCTYPE MODE SYSTEM "xmode.dtd">\r
+\r
+<!-- Extension of cplusplus.xml to add CUDA specific syntax. -->\r
+<MODE>\r
+    <PROPS>\r
+        <PROPERTY NAME="commentStart" VALUE="/*" />\r
+        <PROPERTY NAME="commentEnd" VALUE="*/" />\r
+        <PROPERTY NAME="lineComment" VALUE="//" />\r
+        <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />\r
+\r
+\r
+        <!-- Auto indent -->\r
+        <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
+        <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
+        <PROPERTY NAME="unalignedOpenBrackets" VALUE="(" />\r
+        <PROPERTY NAME="unalignedCloseBrackets" VALUE=")" />\r
+        <PROPERTY NAME="indentNextLine"\r
+            VALUE="(?!^\s*(#|//)).*(\b(if|while|for)\s*\(.*\)|\b(else|do)\b)[^{;]*$" />\r
+        <PROPERTY NAME="unindentThisLine"\r
+            VALUE="^\s*((case\b.*|[\p{Alpha}_][\p{Alnum}_]*)\s*:(?!:)).*$" />\r
+        <PROPERTY NAME="electricKeys" VALUE=":" />\r
+    </PROPS>\r
+\r
+    <RULES\r
+        ESCAPE="\" IGNORE_CASE="FALSE"\r
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">\r
+        <EOL_SPAN TYPE="KEYWORD2" AT_WHITESPACE_END="TRUE" DELEGATE="CPP">#</EOL_SPAN>\r
+\r
+        <IMPORT DELEGATE="LEX"/>\r
+        <IMPORT DELEGATE="CORE"/>\r
+    </RULES>\r
+\r
+    <!-- Core C++ language -->\r
+    <RULES SET="LEX"\r
+        ESCAPE="\" IGNORE_CASE="FALSE"\r
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">\r
+\r
+        <IMPORT DELEGATE="c::LEX"/>\r
+        <IMPORT DELEGATE="c++::LEX"/>\r
+\r
+        <SEQ TYPE="OPERATOR">&lt;&lt;&lt;</SEQ>\r
+        <SEQ TYPE="OPERATOR">&gt;&gt;&gt;</SEQ>\r
+    </RULES>\r
+\r
+    <!-- Extra CUDA keywords -->\r
+    <RULES SET="CORE"\r
+        ESCAPE="\" IGNORE_CASE="FALSE"\r
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">\r
+\r
+        <IMPORT DELEGATE="c::CORE"/>\r
+        <IMPORT DELEGATE="c++::CORE"/>\r
+\r
+        <KEYWORDS>\r
+            <KEYWORD1>__device__</KEYWORD1>\r
+            <KEYWORD2>__host__</KEYWORD2>\r
+            <KEYWORD2>__global__</KEYWORD2>\r
+            <KEYWORD2>__local__</KEYWORD2>\r
+            <KEYWORD2>__constant__</KEYWORD2>\r
+            <KEYWORD2>__shared__</KEYWORD2>\r
+            <KEYWORD1>__inline__</KEYWORD1>\r
+            <KEYWORD1>__restrict__</KEYWORD1>\r
+            <KEYWORD4>blockIdx</KEYWORD4>\r
+            <KEYWORD4>threadIdx</KEYWORD4>\r
+            <KEYWORD4>gridDim</KEYWORD4>\r
+            <KEYWORD4>blockDim</KEYWORD4>\r
+            <KEYWORD3>char1</KEYWORD3>\r
+            <KEYWORD3>char2</KEYWORD3>\r
+            <KEYWORD3>char3</KEYWORD3>\r
+            <KEYWORD3>char4</KEYWORD3>\r
+            <KEYWORD3>uchar1</KEYWORD3>\r
+            <KEYWORD3>uchar2</KEYWORD3>\r
+            <KEYWORD3>uchar3</KEYWORD3>\r
+            <KEYWORD3>uchar4</KEYWORD3>\r
+            <KEYWORD3>short1</KEYWORD3>\r
+            <KEYWORD3>short2</KEYWORD3>\r
+            <KEYWORD3>short3</KEYWORD3>\r
+            <KEYWORD3>short4</KEYWORD3>\r
+            <KEYWORD3>ushort1</KEYWORD3>\r
+            <KEYWORD3>ushort2</KEYWORD3>\r
+            <KEYWORD3>ushort3</KEYWORD3>\r
+            <KEYWORD3>ushort4</KEYWORD3>\r
+            <KEYWORD3>int1</KEYWORD3>\r
+            <KEYWORD3>int2</KEYWORD3>\r
+            <KEYWORD3>int3</KEYWORD3>\r
+            <KEYWORD3>int4</KEYWORD3>\r
+            <KEYWORD3>uint1</KEYWORD3>\r
+            <KEYWORD3>uint2</KEYWORD3>\r
+            <KEYWORD3>uint3</KEYWORD3>\r
+            <KEYWORD3>uint4</KEYWORD3>\r
+            <KEYWORD3>long1</KEYWORD3>\r
+            <KEYWORD3>long2</KEYWORD3>\r
+            <KEYWORD3>long3</KEYWORD3>\r
+            <KEYWORD3>long4</KEYWORD3>\r
+            <KEYWORD3>ulong1</KEYWORD3>\r
+            <KEYWORD3>ulong2</KEYWORD3>\r
+            <KEYWORD3>ulong3</KEYWORD3>\r
+            <KEYWORD3>ulong4</KEYWORD3>\r
+            <KEYWORD3>longlong1</KEYWORD3>\r
+            <KEYWORD3>longlong2</KEYWORD3>\r
+            <KEYWORD3>longlong3</KEYWORD3>\r
+            <KEYWORD3>longlong4</KEYWORD3>\r
+            <KEYWORD3>ulonglong1</KEYWORD3>\r
+            <KEYWORD3>ulonglong2</KEYWORD3>\r
+            <KEYWORD3>ulonglong3</KEYWORD3>\r
+            <KEYWORD3>ulonglong4</KEYWORD3>\r
+            <KEYWORD3>float1</KEYWORD3>\r
+            <KEYWORD3>float2</KEYWORD3>\r
+            <KEYWORD3>float3</KEYWORD3>\r
+            <KEYWORD3>float4</KEYWORD3>\r
+            <KEYWORD3>double1</KEYWORD3>\r
+            <KEYWORD3>double2</KEYWORD3>\r
+            <KEYWORD3>double3</KEYWORD3>\r
+            <KEYWORD3>double4</KEYWORD3>\r
+            <KEYWORD3>dim1</KEYWORD3>\r
+            <KEYWORD3>dim2</KEYWORD3>\r
+            <KEYWORD3>dim3</KEYWORD3>\r
+            <KEYWORD3>dim4</KEYWORD3>\r
+            <KEYWORD3>texture</KEYWORD3>\r
+        </KEYWORDS>\r
+    </RULES>\r
+\r
+    <!-- Preprocessor specific rules -->\r
+    <RULES SET="CPP"\r
+        ESCAPE="\" IGNORE_CASE="FALSE"\r
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">\r
+\r
+        <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="c::INCLUDE">include\b</EOL_SPAN_REGEXP>\r
+        <EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>\r
+        <EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="c::LEX">endif\b</EOL_SPAN_REGEXP>\r
+        <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="c::CONDITION">elif\b</EOL_SPAN_REGEXP>\r
+        <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="c::CONDITION">if\b</EOL_SPAN_REGEXP>\r
+\r
+        <IMPORT DELEGATE="LEX"/>\r
+\r
+        <!-- Directives -->\r
+        <KEYWORDS>\r
+            <MARKUP>ifdef</MARKUP>\r
+            <MARKUP>ifndef</MARKUP>\r
+            <MARKUP>else</MARKUP>\r
+            <MARKUP>error</MARKUP>\r
+            <MARKUP>line</MARKUP>\r
+            <MARKUP>pragma</MARKUP>\r
+            <MARKUP>undef</MARKUP>\r
+            <MARKUP>warning</MARKUP>\r
+        </KEYWORDS>\r
+    </RULES>\r
+\r
+    <!-- After #define directive -->\r
+    <!-- Almost same as the normal code,\r
+        except two additional operators # and ##. -->\r
+    <RULES SET="DEFINE"\r
+        ESCAPE="\" IGNORE_CASE="FALSE"\r
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">\r
+        <SEQ TYPE="OPERATOR">#</SEQ>\r
+        <IMPORT DELEGATE="LEX"/>\r
+        <IMPORT DELEGATE="CORE"/>\r
+    </RULES>\r
+\r
+</MODE>\r
+\r