1 <?xml version="1.0"?>
\r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
6 <!-- Syntax highlighting mode for the Inform language. You can find out more about inform at
\r
7 http://www.gnelson.demon.co.uk/inform.html
\r
8 And an inform language guide at
\r
9 http://www.gnelson.demon.co.uk/dman/index.html
\r
13 <PROPERTY NAME="commentStart" VALUE="/*" />
\r
14 <PROPERTY NAME="commentEnd" VALUE="*/" />
\r
16 <PROPERTY NAME="lineComment" VALUE="!" />
\r
17 <PROPERTY NAME="wordBreakChars" VALUE=",+-=<>/?^&*" />
\r
19 <!-- Auto indent -->
\r
20 <PROPERTY NAME="indentOpenBrackets" VALUE="{[" />
\r
21 <PROPERTY NAME="indentCloseBrackets" VALUE="}]" />
\r
22 <PROPERTY NAME="indentNextLine"
\r
23 VALUE="\s*(((if|while)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />
\r
24 <!-- set this to 'true' if you want to use GNU coding style -->
\r
25 <PROPERTY NAME="doubleBracketIndent" VALUE="false" />
\r
27 <PROPERTY NAME="filenameGlob" VALUE="*.(inf|h)" />
\r
32 HIGHLIGHT_DIGITS="TRUE"
\r
33 DIGIT_RE="(\$[\p{XDigit}]|[\p{Digit}])">
\r
34 <EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN>
\r
36 <!-- strings can span lines -->
\r
37 <SPAN TYPE="LITERAL1" DELEGATE="InformInnerText">
\r
41 <SPAN TYPE="LITERAL2">
\r
46 <!-- preprocessor statements -->
\r
47 <EOL_SPAN TYPE="KEYWORD2">#</EOL_SPAN>
\r
48 <EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN>
\r
50 <!-- special sequences that require special highlighting -->
\r
51 <SEQ TYPE="OPERATOR">=</SEQ>
\r
52 <SEQ TYPE="OPERATOR">==</SEQ>
\r
53 <SEQ TYPE="OPERATOR">>=</SEQ>
\r
54 <SEQ TYPE="OPERATOR"><=</SEQ>
\r
55 <SEQ TYPE="OPERATOR">~=</SEQ>
\r
56 <SEQ TYPE="OPERATOR">+</SEQ>
\r
57 <SEQ TYPE="OPERATOR">-</SEQ>
\r
58 <SEQ TYPE="OPERATOR">$</SEQ>
\r
59 <SEQ TYPE="OPERATOR">/</SEQ>
\r
60 <SEQ TYPE="OPERATOR">*</SEQ>
\r
61 <SEQ TYPE="OPERATOR">></SEQ>
\r
62 <SEQ TYPE="OPERATOR"><</SEQ>
\r
63 <SEQ TYPE="OPERATOR">%</SEQ>
\r
64 <SEQ TYPE="OPERATOR">&</SEQ>
\r
65 <SEQ TYPE="OPERATOR">|</SEQ>
\r
66 <SEQ TYPE="OPERATOR">^</SEQ>
\r
67 <SEQ TYPE="OPERATOR">~</SEQ>
\r
68 <SEQ TYPE="OPERATOR">}</SEQ>
\r
69 <SEQ TYPE="OPERATOR">{</SEQ>
\r
70 <SEQ TYPE="OPERATOR">]</SEQ>
\r
71 <SEQ TYPE="OPERATOR">[</SEQ>
\r
73 <SEQ TYPE="OPERATOR">.&</SEQ>
\r
74 <SEQ TYPE="OPERATOR">.#</SEQ>
\r
75 <SEQ TYPE="OPERATOR">--></SEQ>
\r
77 <!-- Function calls -->
\r
78 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>
\r
79 <SEQ TYPE="OPERATOR">)</SEQ>
\r
80 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">::</MARK_PREVIOUS>
\r
82 <MARK_PREVIOUS AT_WHITESPACE_END="FALSE"
\r
83 MATCH_TYPE="OPERATOR"
\r
84 TYPE="LABEL">:</MARK_PREVIOUS>
\r
88 <KEYWORD1>has</KEYWORD1>
\r
89 <KEYWORD1>hasnt</KEYWORD1>
\r
90 <KEYWORD1>in</KEYWORD1>
\r
91 <KEYWORD1>notin</KEYWORD1>
\r
92 <KEYWORD1>ofclass</KEYWORD1>
\r
93 <KEYWORD1>provides</KEYWORD1>
\r
94 <KEYWORD1>or</KEYWORD1>
\r
96 <!-- text-base conversion functions -->
\r
97 <LITERAL2>char</LITERAL2>
\r
98 <LITERAL2>string</LITERAL2>
\r
99 <LITERAL2>address</LITERAL2>
\r
100 <LITERAL2>name</LITERAL2>
\r
101 <LITERAL2>a</LITERAL2>
\r
102 <LITERAL2>an</LITERAL2>
\r
103 <LITERAL2>the</LITERAL2>
\r
104 <LITERAL2>The</LITERAL2>
\r
105 <LITERAL2>property</LITERAL2>
\r
106 <LITERAL2>object</LITERAL2>
\r
108 <!-- language semantics -->
\r
109 <KEYWORD1>break</KEYWORD1>
\r
110 <KEYWORD1>continue</KEYWORD1>
\r
111 <KEYWORD1>do</KEYWORD1>
\r
112 <KEYWORD1>until</KEYWORD1>
\r
113 <KEYWORD1>for</KEYWORD1>
\r
114 <KEYWORD1>give</KEYWORD1>
\r
115 <KEYWORD1>if</KEYWORD1>
\r
116 <KEYWORD1>else</KEYWORD1>
\r
117 <KEYWORD1>inversion</KEYWORD1>
\r
118 <KEYWORD1>jump</KEYWORD1>
\r
119 <KEYWORD1>move</KEYWORD1>
\r
120 <KEYWORD2>to</KEYWORD2>
\r
121 <KEYWORD1>objectloop</KEYWORD1>
\r
122 <KEYWORD1>remove</KEYWORD1>
\r
123 <KEYWORD1>return</KEYWORD1>
\r
124 <KEYWORD1>rfalse</KEYWORD1>
\r
125 <KEYWORD1>rtrue</KEYWORD1>
\r
126 <KEYWORD1>string</KEYWORD1>
\r
127 <KEYWORD1>switch</KEYWORD1>
\r
128 <KEYWORD1>while</KEYWORD1>
\r
130 <!-- class keyworks -->
\r
131 <KEYWORD1>with</KEYWORD1>
\r
132 <!-- <KEYWORD1>has</KEYWORD1> -->
\r
134 <!-- built-in functions -->
\r
135 <FUNCTION>new_line</FUNCTION>
\r
136 <FUNCTION>print</FUNCTION>
\r
137 <FUNCTION>print_ret</FUNCTION>
\r
138 <FUNCTION>box</FUNCTION>
\r
139 <FUNCTION>font</FUNCTION>
\r
140 <KEYWORD2>on</KEYWORD2>
\r
141 <KEYWORD2>off</KEYWORD2>
\r
142 <FUNCTION>quit</FUNCTION>
\r
143 <FUNCTION>read</FUNCTION>
\r
144 <FUNCTION>restore</FUNCTION>
\r
145 <FUNCTION>save</FUNCTION>
\r
146 <FUNCTION>spaces</FUNCTION>
\r
147 <FUNCTION>style</FUNCTION>
\r
148 <KEYWORD2>roman</KEYWORD2>
\r
149 <KEYWORD2>bold</KEYWORD2>
\r
150 <KEYWORD2>underline</KEYWORD2>
\r
151 <KEYWORD2>reverse</KEYWORD2>
\r
152 <KEYWORD2>fixed</KEYWORD2>
\r
153 <FUNCTION>score</FUNCTION>
\r
154 <FUNCTION>time</FUNCTION>
\r
156 <!-- Top-level keyworks -->
\r
157 <KEYWORD3>Abbreviate</KEYWORD3>
\r
158 <KEYWORD3>Array</KEYWORD3>
\r
159 <KEYWORD3>Attribute</KEYWORD3>
\r
160 <KEYWORD3>Class</KEYWORD3>
\r
161 <KEYWORD3>Constant</KEYWORD3>
\r
162 <KEYWORD3>Default</KEYWORD3>
\r
163 <KEYWORD3>End</KEYWORD3>
\r
164 <KEYWORD3>Endif</KEYWORD3>
\r
165 <KEYWORD3>Extend</KEYWORD3>
\r
166 <KEYWORD3>Global</KEYWORD3>
\r
167 <KEYWORD3>Ifdef</KEYWORD3>
\r
168 <KEYWORD3>Ifndef</KEYWORD3>
\r
169 <KEYWORD3>Ifnot</KEYWORD3>
\r
170 <KEYWORD3>Iftrue</KEYWORD3>
\r
171 <KEYWORD3>Iffalse</KEYWORD3>
\r
172 <KEYWORD3>Import</KEYWORD3>
\r
173 <KEYWORD3>Include</KEYWORD3>
\r
174 <KEYWORD3>Link</KEYWORD3>
\r
175 <KEYWORD3>Lowstring</KEYWORD3>
\r
176 <KEYWORD3>Message</KEYWORD3>
\r
177 <KEYWORD3>Object</KEYWORD3>
\r
178 <KEYWORD3>Property</KEYWORD3>
\r
179 <KEYWORD3>Replace</KEYWORD3>
\r
180 <KEYWORD3>Serial</KEYWORD3>
\r
181 <KEYWORD3>Switches</KEYWORD3>
\r
182 <KEYWORD3>Statusline</KEYWORD3>
\r
183 <KEYWORD3>System_file</KEYWORD3>
\r
184 <KEYWORD3>Verb</KEYWORD3>
\r
185 <KEYWORD3>private</KEYWORD3>
\r
187 <LITERAL2>false</LITERAL2>
\r
188 <LITERAL2>true</LITERAL2>
\r
189 <LITERAL2>null</LITERAL2>
\r
190 <LITERAL2>super</LITERAL2>
\r
191 <LITERAL2>self</LITERAL2>
\r
193 <INVALID>this</INVALID>
\r
196 <RULES SET="InformInnerText" IGNORE_CASE="FALSE" DEFAULT="LITERAL1">
\r
197 <SEQ TYPE="OPERATOR">^</SEQ>
\r
198 <SEQ TYPE="OPERATOR">~</SEQ>
\r
199 <SEQ TYPE="OPERATOR">@</SEQ>
\r
200 <SEQ TYPE="OPERATOR">\</SEQ>
\r
202 <!-- escaping the @ symbol -->
\r
203 <SEQ TYPE="LITERAL2">@@</SEQ>
\r