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