]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xmode/modes/idl.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / idl.xml
index 65b7fc535c2e329cf1f96ed654b721702a05e2d8..3b9a5cca0bcece095c060f0a827499a7f80790ba 100644 (file)
-<?xml version="1.0"?>\r
-\r
-<!DOCTYPE MODE SYSTEM "xmode.dtd">\r
-\r
-<!-- IDL mode, by Slava Pestov\r
-     based on Java mode by Mike Dillon and IDLTokenMarker by Juha Lindfors -->\r
-<MODE>\r
-       <PROPS>\r
-               <PROPERTY NAME="indentOpenBrackets" VALUE="{" />\r
-               <PROPERTY NAME="indentCloseBrackets" VALUE="}" />\r
-               <PROPERTY NAME="commentStart" VALUE="/*" />\r
-               <PROPERTY NAME="commentEnd" VALUE="*/" />\r
-               <PROPERTY NAME="boxComment" VALUE="*" />\r
-               <PROPERTY NAME="lineComment" VALUE="//" />\r
-       </PROPS>\r
-       <RULES ESCAPE="\" IGNORE_CASE="FALSE">\r
-               <!-- C style comment -->\r
-               <SPAN TYPE="COMMENT1">\r
-                       <BEGIN>/*</BEGIN>\r
-                       <END>*/</END>\r
-               </SPAN>\r
-\r
-               <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>"</BEGIN>\r
-                       <END>"</END>\r
-               </SPAN>\r
-               <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
-                       <BEGIN>'</BEGIN>\r
-                       <END>'</END>\r
-               </SPAN>\r
-\r
-               <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>\r
-\r
-               <!-- some of these should be marked OPERATOR -->\r
-               <!-- <SEQ TYPE="NULL">)</SEQ>\r
-               <SEQ TYPE="NULL">=</SEQ>\r
-               <SEQ TYPE="NULL">!</SEQ>\r
-               <SEQ TYPE="NULL">&gt;=</SEQ>\r
-               <SEQ TYPE="NULL">&lt;=</SEQ>\r
-               <SEQ TYPE="NULL">+</SEQ>\r
-               <SEQ TYPE="NULL">-</SEQ>\r
-               <SEQ TYPE="NULL">/</SEQ>\r
-               <SEQ TYPE="NULL">*</SEQ>\r
-               <SEQ TYPE="NULL">&gt;</SEQ>\r
-               <SEQ TYPE="NULL">&lt;</SEQ>\r
-               <SEQ TYPE="NULL">%</SEQ>\r
-               <SEQ TYPE="NULL">&amp;</SEQ>\r
-               <SEQ TYPE="NULL">|</SEQ>\r
-               <SEQ TYPE="NULL">^</SEQ>\r
-               <SEQ TYPE="NULL">~</SEQ>\r
-               <SEQ TYPE="NULL">.</SEQ>\r
-               <SEQ TYPE="NULL">,</SEQ>\r
-               <SEQ TYPE="NULL">;</SEQ>\r
-               <SEQ TYPE="NULL">]</SEQ>\r
-               <SEQ TYPE="NULL">[</SEQ>\r
-               <SEQ TYPE="NULL">?</SEQ> -->\r
-\r
-               <SEQ TYPE="OPERATOR">}</SEQ>\r
-               <SEQ TYPE="OPERATOR">{</SEQ>\r
-               <SEQ TYPE="OPERATOR">:</SEQ>\r
-\r
-               <!-- Function calls -->\r
-               <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>\r
-               <SEQ TYPE="OPERATOR">)</SEQ>\r
-\r
-               <KEYWORDS>\r
-                       <KEYWORD3>any</KEYWORD3>\r
-                       <KEYWORD1>attribute</KEYWORD1>\r
-                       <KEYWORD3>boolean</KEYWORD3>\r
-                       <KEYWORD1>case</KEYWORD1>\r
-                       <KEYWORD3>char</KEYWORD3>\r
-                       <KEYWORD1>const</KEYWORD1>\r
-                       <KEYWORD1>context</KEYWORD1>\r
-                       <KEYWORD1>default</KEYWORD1>\r
-                       <KEYWORD3>double</KEYWORD3>\r
-                       <KEYWORD3>enum</KEYWORD3>\r
-                       <KEYWORD1>exception</KEYWORD1>\r
-                       <LITERAL2>FALSE</LITERAL2>\r
-                       <KEYWORD1>fixed</KEYWORD1>\r
-                       <KEYWORD3>float</KEYWORD3>\r
-                       <KEYWORD1>in</KEYWORD1>\r
-                       <KEYWORD1>inout</KEYWORD1>\r
-                       <KEYWORD1>interface</KEYWORD1>\r
-                       <KEYWORD3>long</KEYWORD3>\r
-                       <KEYWORD1>module</KEYWORD1>\r
-                       <KEYWORD3>Object</KEYWORD3>\r
-                       <KEYWORD3>octet</KEYWORD3>\r
-                       <KEYWORD1>oneway</KEYWORD1>\r
-                       <KEYWORD1>out</KEYWORD1>\r
-                       <KEYWORD1>raises</KEYWORD1>\r
-                       <KEYWORD1>readonly</KEYWORD1>\r
-                       <KEYWORD3>sequence</KEYWORD3>\r
-                       <KEYWORD3>short</KEYWORD3>\r
-                       <KEYWORD3>string</KEYWORD3>\r
-                       <KEYWORD3>struct</KEYWORD3>\r
-                       <KEYWORD1>switch</KEYWORD1>\r
-                       <LITERAL2>TRUE</LITERAL2>\r
-                       <KEYWORD3>typedef</KEYWORD3>\r
-                       <KEYWORD3>unsigned</KEYWORD3>\r
-                       <KEYWORD3>union</KEYWORD3>\r
-                       <KEYWORD3>void</KEYWORD3>\r
-                       <KEYWORD3>wchar</KEYWORD3>\r
-                       <KEYWORD3>wstring</KEYWORD3>\r
-               </KEYWORDS>\r
-       </RULES>\r
-</MODE>\r
+<?xml version="1.0"?>
+
+<!DOCTYPE MODE SYSTEM "xmode.dtd">
+
+<!-- IDL mode, by Slava Pestov
+     based on Java mode by Mike Dillon and IDLTokenMarker by Juha Lindfors -->
+<MODE>
+       <PROPS>
+               <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
+               <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
+               <PROPERTY NAME="commentStart" VALUE="/*" />
+               <PROPERTY NAME="commentEnd" VALUE="*/" />
+               <PROPERTY NAME="boxComment" VALUE="*" />
+               <PROPERTY NAME="lineComment" VALUE="//" />
+       </PROPS>
+       <RULES IGNORE_CASE="FALSE">
+        <EOL_SPAN TYPE="KEYWORD2"
+                                 AT_WHITESPACE_END="TRUE"
+                                 DELEGATE="PREPROCESSOR">#</EOL_SPAN>
+               <IMPORT DELEGATE="LEX" />
+       </RULES>
+
+       <RULES SET="LEX" IGNORE_CASE="FALSE">
+
+               <IMPORT DELEGATE="c::COMMENTS" />
+
+               <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
+                       <BEGIN>"</BEGIN>
+                       <END>"</END>
+               </SPAN>
+               <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
+                       <BEGIN>'</BEGIN>
+                       <END>'</END>
+               </SPAN>
+
+               <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
+
+               <!-- some of these should be marked OPERATOR -->
+               <!--
+               <SEQ TYPE="NULL">!</SEQ>
+               <SEQ TYPE="NULL">&gt;=</SEQ>
+               <SEQ TYPE="NULL">&lt;=</SEQ>
+               <SEQ TYPE="NULL">+</SEQ>
+               <SEQ TYPE="NULL">-</SEQ>
+               <SEQ TYPE="NULL">/</SEQ>
+               <SEQ TYPE="NULL">*</SEQ>
+               <SEQ TYPE="NULL">%</SEQ>
+               <SEQ TYPE="NULL">&amp;</SEQ>
+               <SEQ TYPE="NULL">|</SEQ>
+               <SEQ TYPE="NULL">^</SEQ>
+               <SEQ TYPE="NULL">~</SEQ>
+               <SEQ TYPE="NULL">.</SEQ>
+               <SEQ TYPE="NULL">,</SEQ>
+               <SEQ TYPE="NULL">;</SEQ>
+               <SEQ TYPE="NULL">]</SEQ>
+               <SEQ TYPE="NULL">[</SEQ>
+               <SEQ TYPE="NULL">?</SEQ> -->
+
+               <SEQ TYPE="OPERATOR">}</SEQ>
+               <SEQ TYPE="OPERATOR">{</SEQ>
+               <SEQ TYPE="OPERATOR">:</SEQ>
+               <SEQ TYPE="OPERATOR">&gt;</SEQ>
+               <SEQ TYPE="OPERATOR">&lt;</SEQ>
+               <SEQ TYPE="OPERATOR">=</SEQ>
+
+
+               <!-- Function calls -->
+               <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
+               <SEQ TYPE="OPERATOR">)</SEQ>
+
+               <KEYWORDS>
+                       <KEYWORD3>any</KEYWORD3>
+                       <KEYWORD1>attribute</KEYWORD1>
+                       <KEYWORD3>boolean</KEYWORD3>
+                       <KEYWORD1>case</KEYWORD1>
+                       <KEYWORD3>char</KEYWORD3>
+                       <KEYWORD1>const</KEYWORD1>
+                       <KEYWORD1>context</KEYWORD1>
+                       <KEYWORD1>default</KEYWORD1>
+                       <KEYWORD3>double</KEYWORD3>
+                       <KEYWORD3>enum</KEYWORD3>
+                       <KEYWORD1>exception</KEYWORD1>
+                       <LITERAL2>FALSE</LITERAL2>
+                       <KEYWORD1>fixed</KEYWORD1>
+                       <KEYWORD3>float</KEYWORD3>
+                       <KEYWORD1>in</KEYWORD1>
+                       <KEYWORD1>inout</KEYWORD1>
+                       <KEYWORD1>interface</KEYWORD1>
+                       <KEYWORD3>long</KEYWORD3>
+                       <KEYWORD1>module</KEYWORD1>
+                       <KEYWORD3>Object</KEYWORD3>
+                       <KEYWORD3>octet</KEYWORD3>
+                       <KEYWORD1>oneway</KEYWORD1>
+                       <KEYWORD1>out</KEYWORD1>
+                       <KEYWORD1>raises</KEYWORD1>
+                       <KEYWORD1>readonly</KEYWORD1>
+                       <KEYWORD3>sequence</KEYWORD3>
+                       <KEYWORD3>short</KEYWORD3>
+                       <KEYWORD3>string</KEYWORD3>
+                       <KEYWORD3>struct</KEYWORD3>
+                       <KEYWORD1>switch</KEYWORD1>
+                       <LITERAL2>TRUE</LITERAL2>
+                       <KEYWORD3>typedef</KEYWORD3>
+                       <KEYWORD3>unsigned</KEYWORD3>
+                       <KEYWORD3>union</KEYWORD3>
+                       <KEYWORD3>void</KEYWORD3>
+                       <KEYWORD3>wchar</KEYWORD3>
+                       <KEYWORD3>wstring</KEYWORD3>
+               </KEYWORDS>
+       </RULES>
+
+    <!-- Preprocessor specific rules. This is borrowed from the C mode,
+            since the IDL spec says the preprocessor is compatible with the
+                C++ standard. -->
+    <RULES SET="PREPROCESSOR"
+        IGNORE_CASE="FALSE"
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
+
+        <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="INCLUDE">include\b</EOL_SPAN_REGEXP>
+        <EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>
+        <EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="LEX">endif\b</EOL_SPAN_REGEXP>
+        <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="c::CONDITION">elif\b</EOL_SPAN_REGEXP>
+        <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="c::CONDITION">if\b</EOL_SPAN_REGEXP>
+
+        <IMPORT DELEGATE="LEX"/>
+
+        <!-- Directives -->
+        <KEYWORDS>
+            <MARKUP>ifdef</MARKUP>
+            <MARKUP>ifndef</MARKUP>
+            <MARKUP>else</MARKUP>
+            <MARKUP>undef</MARKUP>
+            <MARKUP>warning</MARKUP>
+        </KEYWORDS>
+    </RULES>
+
+    <RULES SET="INCLUDE"
+        IGNORE_CASE="FALSE"
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
+        <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
+            <BEGIN>&lt;</BEGIN>
+            <END>&gt;</END>
+        </SPAN>
+        <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
+            <BEGIN>"</BEGIN>
+            <END>"</END>
+        </SPAN>
+        <IMPORT DELEGATE="LEX"/>
+    </RULES>
+
+    <RULES SET="DEFINE"
+        IGNORE_CASE="FALSE"
+        HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
+        <SEQ TYPE="OPERATOR">#</SEQ>
+        <IMPORT DELEGATE="LEX"/>
+    </RULES>
+
+</MODE>