]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/idl.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / idl.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- IDL mode, by Slava Pestov
6      based on Java mode by Mike Dillon and IDLTokenMarker by Juha Lindfors -->
7 <MODE>
8         <PROPS>
9                 <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
10                 <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
11                 <PROPERTY NAME="commentStart" VALUE="/*" />
12                 <PROPERTY NAME="commentEnd" VALUE="*/" />
13                 <PROPERTY NAME="boxComment" VALUE="*" />
14                 <PROPERTY NAME="lineComment" VALUE="//" />
15         </PROPS>
16         <RULES IGNORE_CASE="FALSE">
17         <EOL_SPAN TYPE="KEYWORD2"
18                                   AT_WHITESPACE_END="TRUE"
19                                   DELEGATE="PREPROCESSOR">#</EOL_SPAN>
20                 <IMPORT DELEGATE="LEX" />
21         </RULES>
22
23         <RULES SET="LEX" IGNORE_CASE="FALSE">
24
25                 <IMPORT DELEGATE="c::COMMENTS" />
26
27                 <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
28                         <BEGIN>"</BEGIN>
29                         <END>"</END>
30                 </SPAN>
31                 <SPAN TYPE="LITERAL1" ESCAPE="\" NO_LINE_BREAK="TRUE">
32                         <BEGIN>'</BEGIN>
33                         <END>'</END>
34                 </SPAN>
35
36                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
37
38                 <!-- some of these should be marked OPERATOR -->
39                 <!--
40                 <SEQ TYPE="NULL">!</SEQ>
41                 <SEQ TYPE="NULL">&gt;=</SEQ>
42                 <SEQ TYPE="NULL">&lt;=</SEQ>
43                 <SEQ TYPE="NULL">+</SEQ>
44                 <SEQ TYPE="NULL">-</SEQ>
45                 <SEQ TYPE="NULL">/</SEQ>
46                 <SEQ TYPE="NULL">*</SEQ>
47                 <SEQ TYPE="NULL">%</SEQ>
48                 <SEQ TYPE="NULL">&amp;</SEQ>
49                 <SEQ TYPE="NULL">|</SEQ>
50                 <SEQ TYPE="NULL">^</SEQ>
51                 <SEQ TYPE="NULL">~</SEQ>
52                 <SEQ TYPE="NULL">.</SEQ>
53                 <SEQ TYPE="NULL">,</SEQ>
54                 <SEQ TYPE="NULL">;</SEQ>
55                 <SEQ TYPE="NULL">]</SEQ>
56                 <SEQ TYPE="NULL">[</SEQ>
57                 <SEQ TYPE="NULL">?</SEQ> -->
58
59                 <SEQ TYPE="OPERATOR">}</SEQ>
60                 <SEQ TYPE="OPERATOR">{</SEQ>
61                 <SEQ TYPE="OPERATOR">:</SEQ>
62                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
63                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
64                 <SEQ TYPE="OPERATOR">=</SEQ>
65
66
67                 <!-- Function calls -->
68                 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
69                 <SEQ TYPE="OPERATOR">)</SEQ>
70
71                 <KEYWORDS>
72                         <KEYWORD3>any</KEYWORD3>
73                         <KEYWORD1>attribute</KEYWORD1>
74                         <KEYWORD3>boolean</KEYWORD3>
75                         <KEYWORD1>case</KEYWORD1>
76                         <KEYWORD3>char</KEYWORD3>
77                         <KEYWORD1>const</KEYWORD1>
78                         <KEYWORD1>context</KEYWORD1>
79                         <KEYWORD1>default</KEYWORD1>
80                         <KEYWORD3>double</KEYWORD3>
81                         <KEYWORD3>enum</KEYWORD3>
82                         <KEYWORD1>exception</KEYWORD1>
83                         <LITERAL2>FALSE</LITERAL2>
84                         <KEYWORD1>fixed</KEYWORD1>
85                         <KEYWORD3>float</KEYWORD3>
86                         <KEYWORD1>in</KEYWORD1>
87                         <KEYWORD1>inout</KEYWORD1>
88                         <KEYWORD1>interface</KEYWORD1>
89                         <KEYWORD3>long</KEYWORD3>
90                         <KEYWORD1>module</KEYWORD1>
91                         <KEYWORD3>Object</KEYWORD3>
92                         <KEYWORD3>octet</KEYWORD3>
93                         <KEYWORD1>oneway</KEYWORD1>
94                         <KEYWORD1>out</KEYWORD1>
95                         <KEYWORD1>raises</KEYWORD1>
96                         <KEYWORD1>readonly</KEYWORD1>
97                         <KEYWORD3>sequence</KEYWORD3>
98                         <KEYWORD3>short</KEYWORD3>
99                         <KEYWORD3>string</KEYWORD3>
100                         <KEYWORD3>struct</KEYWORD3>
101                         <KEYWORD1>switch</KEYWORD1>
102                         <LITERAL2>TRUE</LITERAL2>
103                         <KEYWORD3>typedef</KEYWORD3>
104                         <KEYWORD3>unsigned</KEYWORD3>
105                         <KEYWORD3>union</KEYWORD3>
106                         <KEYWORD3>void</KEYWORD3>
107                         <KEYWORD3>wchar</KEYWORD3>
108                         <KEYWORD3>wstring</KEYWORD3>
109                 </KEYWORDS>
110         </RULES>
111
112     <!-- Preprocessor specific rules. This is borrowed from the C mode,
113              since the IDL spec says the preprocessor is compatible with the
114                  C++ standard. -->
115     <RULES SET="PREPROCESSOR"
116         IGNORE_CASE="FALSE"
117         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
118
119         <EOL_SPAN_REGEXP HASH_CHAR="include" TYPE="MARKUP" DELEGATE="INCLUDE">include\b</EOL_SPAN_REGEXP>
120         <EOL_SPAN_REGEXP HASH_CHAR="define" TYPE="MARKUP" DELEGATE="DEFINE">define\b</EOL_SPAN_REGEXP>
121         <EOL_SPAN_REGEXP HASH_CHAR="endif" TYPE="MARKUP" DELEGATE="LEX">endif\b</EOL_SPAN_REGEXP>
122         <EOL_SPAN_REGEXP HASH_CHAR="elif" TYPE="MARKUP" DELEGATE="c::CONDITION">elif\b</EOL_SPAN_REGEXP>
123         <EOL_SPAN_REGEXP HASH_CHAR="if" TYPE="MARKUP" DELEGATE="c::CONDITION">if\b</EOL_SPAN_REGEXP>
124
125         <IMPORT DELEGATE="LEX"/>
126
127         <!-- Directives -->
128         <KEYWORDS>
129             <MARKUP>ifdef</MARKUP>
130             <MARKUP>ifndef</MARKUP>
131             <MARKUP>else</MARKUP>
132             <MARKUP>undef</MARKUP>
133             <MARKUP>warning</MARKUP>
134         </KEYWORDS>
135     </RULES>
136
137     <RULES SET="INCLUDE"
138         IGNORE_CASE="FALSE"
139         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
140         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
141             <BEGIN>&lt;</BEGIN>
142             <END>&gt;</END>
143         </SPAN>
144         <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
145             <BEGIN>"</BEGIN>
146             <END>"</END>
147         </SPAN>
148         <IMPORT DELEGATE="LEX"/>
149     </RULES>
150
151     <RULES SET="DEFINE"
152         IGNORE_CASE="FALSE"
153         HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[0-9][0-9a-zA-Z]*">
154         <SEQ TYPE="OPERATOR">#</SEQ>
155         <IMPORT DELEGATE="LEX"/>
156     </RULES>
157
158 </MODE>