]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/inform.xml
fdd7153f6b2ec1b24d28af0d6fdfb999df660c6f
[factor.git] / basis / xmode / modes / inform.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <MODE>\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
10         -->\r
11     <PROPS>\r
12         <!--\r
13         <PROPERTY NAME="commentStart" VALUE="/*" />\r
14         <PROPERTY NAME="commentEnd" VALUE="*/" />\r
15         -->\r
16         <PROPERTY NAME="lineComment" VALUE="!" />\r
17         <PROPERTY NAME="wordBreakChars" VALUE=",+-=&lt;&gt;/?^&amp;*" />\r
18 \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
26 \r
27         <PROPERTY NAME="filenameGlob" VALUE="*.(inf|h)" />\r
28     </PROPS>\r
29 \r
30     <RULES\r
31             IGNORE_CASE="FALSE"\r
32             HIGHLIGHT_DIGITS="TRUE"\r
33             DIGIT_RE="(\$[\p{XDigit}]|[\p{Digit}])">\r
34         <EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN>\r
35 \r
36         <!-- strings can span lines -->\r
37         <SPAN TYPE="LITERAL1" DELEGATE="InformInnerText">\r
38             <BEGIN>"</BEGIN>\r
39             <END>"</END>\r
40         </SPAN>\r
41         <SPAN TYPE="LITERAL2">\r
42             <BEGIN>'</BEGIN>\r
43             <END>'</END>\r
44         </SPAN>\r
45 \r
46         <!-- preprocessor statements -->\r
47         <EOL_SPAN TYPE="KEYWORD2">#</EOL_SPAN>\r
48         <EOL_SPAN TYPE="COMMENT1">!</EOL_SPAN>\r
49 \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">&gt;=</SEQ>\r
54         <SEQ TYPE="OPERATOR">&lt;=</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">&gt;</SEQ>\r
62         <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
63         <SEQ TYPE="OPERATOR">%</SEQ>\r
64         <SEQ TYPE="OPERATOR">&amp;</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
72 \r
73         <SEQ TYPE="OPERATOR">.&amp;</SEQ>\r
74         <SEQ TYPE="OPERATOR">.#</SEQ>\r
75         <SEQ TYPE="OPERATOR">--></SEQ>\r
76 \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
81 \r
82         <MARK_PREVIOUS AT_WHITESPACE_END="FALSE"\r
83             MATCH_TYPE="OPERATOR"\r
84             TYPE="LABEL">:</MARK_PREVIOUS>\r
85 \r
86         <KEYWORDS>\r
87             <!-- operators -->\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
95 \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
107 \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
129 \r
130             <!-- class keyworks -->\r
131             <KEYWORD1>with</KEYWORD1>\r
132 <!--                    <KEYWORD1>has</KEYWORD1> -->\r
133 \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
155 \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
186 \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
192 \r
193             <INVALID>this</INVALID>\r
194         </KEYWORDS>\r
195     </RULES>\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
201 \r
202         <!-- escaping the @ symbol -->\r
203         <SEQ TYPE="LITERAL2">@@</SEQ>\r
204     </RULES>\r
205 </MODE>\r