]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/ada.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / ada.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE MODE SYSTEM "xmode.dtd">
3
4 <!--
5
6 This is a jedit mode file for Ada programming language.
7 Copyright (C) 2012 Peter C. Chapin (pchapin@sf)
8
9 This program is free software; you can redistribute it and/or
10 modify it under the terms of the GNU General Public License
11 as published by the Free Software Foundation; either version 2
12 of the License, or (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
22 -->
23
24 <!-- TODO: Support based literals as numeric literals: 16#FF#
25            Support numeric literals with an exponent: 1.0e2, 1e2. -->
26
27 <MODE>
28         <PROPS>
29                 <PROPERTY NAME="lineComment" VALUE="--" />
30         <PROPERTY NAME="indentNextLines"
31             VALUE=".*(begin|declare|do|else|elsif|exception|generic|is|loop|private|record|select|tagged|then|with|=>|:=)\s*(--.*)?$"/>
32         <PROPERTY NAME="unindentThisLine"
33             VALUE="^\s*end\b.*;"/>
34         <PROPERTY NAME="unindentNextLines"
35             VALUE="^\s*end\b.*;"/>
36         <PROPERTY NAME="electricKeys" VALUE=";"/>
37         </PROPS>
38
39         <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE">
40                 <!-- SPARK annotation comments. -->
41                 <EOL_SPAN TYPE="COMMENT2">--#</EOL_SPAN>
42                 <!-- Normal comments. -->
43                 <EOL_SPAN TYPE="COMMENT1">--</EOL_SPAN>
44
45                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
46                         <BEGIN>"</BEGIN>
47                         <END>"</END>
48                 </SPAN>
49                 
50         <!-- Operators and Related -->
51                 <SEQ TYPE="OPERATOR">)</SEQ>
52                 <SEQ TYPE="OPERATOR">(</SEQ>
53                 <SEQ TYPE="OPERATOR">..</SEQ>
54                 <SEQ TYPE="OPERATOR">.all</SEQ>
55                 <SEQ TYPE="OPERATOR">:=</SEQ>
56                 <SEQ TYPE="OPERATOR">/=</SEQ>
57                 <SEQ TYPE="OPERATOR">=&gt;</SEQ>
58                 <SEQ TYPE="OPERATOR">=</SEQ>
59                 <SEQ TYPE="NULL">&lt;&gt;</SEQ>
60                 <SEQ TYPE="LABEL">&lt;&lt;</SEQ>
61                 <SEQ TYPE="LABEL">&gt;&gt;</SEQ>
62                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>
63                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>
64                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
65                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
66                 <SEQ TYPE="OPERATOR">&amp;</SEQ>
67                 <SEQ TYPE="OPERATOR">+</SEQ>
68                 <SEQ TYPE="OPERATOR">-</SEQ>
69                 <SEQ TYPE="OPERATOR">/</SEQ>
70                 <SEQ TYPE="OPERATOR">**</SEQ>
71                 <SEQ TYPE="OPERATOR">*</SEQ>
72
73                 <!-- Predefined Attributes -->
74                 <!-- From Section K.2 "Language-Defined Attributes" in the Ada Reference Manual. -->
75                 <SEQ TYPE="KEYWORD3">'access</SEQ>
76                 <SEQ TYPE="KEYWORD3">'address</SEQ>
77                 <SEQ TYPE="KEYWORD3">'adjacent</SEQ>
78                 <SEQ TYPE="KEYWORD3">'aft</SEQ>
79                 <SEQ TYPE="KEYWORD3">'alignment</SEQ>
80                 <SEQ TYPE="KEYWORD3">'base</SEQ>
81                 <SEQ TYPE="KEYWORD3">'bit_order</SEQ>
82                 <SEQ TYPE="KEYWORD3">'body_version</SEQ>
83                 <SEQ TYPE="KEYWORD3">'callable</SEQ>
84                 <SEQ TYPE="KEYWORD3">'caller</SEQ>
85                 <SEQ TYPE="KEYWORD3">'ceiling</SEQ>
86                 <SEQ TYPE="KEYWORD3">'class</SEQ>
87                 <SEQ TYPE="KEYWORD3">'component_size</SEQ>
88                 <SEQ TYPE="KEYWORD3">'compose</SEQ>
89                 <SEQ TYPE="KEYWORD3">'constrained</SEQ>
90                 <SEQ TYPE="KEYWORD3">'copy_size</SEQ>
91                 <SEQ TYPE="KEYWORD3">'count</SEQ>
92                 <SEQ TYPE="KEYWORD3">'definite</SEQ>
93                 <SEQ TYPE="KEYWORD3">'delta</SEQ>
94                 <SEQ TYPE="KEYWORD3">'denorm</SEQ>
95                 <SEQ TYPE="KEYWORD3">'digits</SEQ>
96                 <SEQ TYPE="KEYWORD3">'exponent</SEQ>
97                 <SEQ TYPE="KEYWORD3">'external_tag</SEQ>
98                 <SEQ TYPE="KEYWORD3">'first</SEQ>
99                 <SEQ TYPE="KEYWORD3">'first_bit</SEQ>
100                 <SEQ TYPE="KEYWORD3">'floor</SEQ>
101                 <SEQ TYPE="KEYWORD3">'fore</SEQ>
102                 <SEQ TYPE="KEYWORD3">'fraction</SEQ>
103                 <SEQ TYPE="KEYWORD3">'has_same_storage</SEQ>
104                 <SEQ TYPE="KEYWORD3">'identity</SEQ>
105                 <SEQ TYPE="KEYWORD3">'image</SEQ>
106                 <SEQ TYPE="KEYWORD3">'class'input</SEQ>
107                 <SEQ TYPE="KEYWORD3">'input</SEQ>
108                 <SEQ TYPE="KEYWORD3">'last</SEQ>
109                 <SEQ TYPE="KEYWORD3">'last_bit</SEQ>
110                 <SEQ TYPE="KEYWORD3">'leading_part</SEQ>
111                 <SEQ TYPE="KEYWORD3">'length</SEQ>
112                 <SEQ TYPE="KEYWORD3">'machine</SEQ>
113                 <SEQ TYPE="KEYWORD3">'machine_emax</SEQ>
114                 <SEQ TYPE="KEYWORD3">'machine_emin</SEQ>
115                 <SEQ TYPE="KEYWORD3">'machine_mantissa</SEQ>
116                 <SEQ TYPE="KEYWORD3">'machine_overflows</SEQ>
117                 <SEQ TYPE="KEYWORD3">'machine_radix</SEQ>
118         <SEQ TYPE="KEYWORD3">'machine_rounding</SEQ>
119                 <SEQ TYPE="KEYWORD3">'machine_rounds</SEQ>
120                 <SEQ TYPE="KEYWORD3">'max</SEQ>
121                 <SEQ TYPE="KEYWORD3">'max_alignment_for_allocation</SEQ>
122                 <SEQ TYPE="KEYWORD3">'max_size_in_storage_elements</SEQ>
123                 <SEQ TYPE="KEYWORD3">'min</SEQ>
124                 <SEQ TYPE="KEYWORD3">'mod</SEQ>
125                 <SEQ TYPE="KEYWORD3">'model</SEQ>
126                 <SEQ TYPE="KEYWORD3">'model_emin</SEQ>
127                 <SEQ TYPE="KEYWORD3">'model_epsilon</SEQ>
128                 <SEQ TYPE="KEYWORD3">'model_mantissa</SEQ>
129                 <SEQ TYPE="KEYWORD3">'model_small</SEQ>
130                 <SEQ TYPE="KEYWORD3">'modulus</SEQ>
131                 <SEQ TYPE="KEYWORD3">'old</SEQ>
132                 <SEQ TYPE="KEYWORD3">'class'output</SEQ>
133                 <SEQ TYPE="KEYWORD3">'output</SEQ>
134                 <SEQ TYPE="KEYWORD3">'overlaps_storage</SEQ>
135                 <SEQ TYPE="KEYWORD3">'partition_id</SEQ>
136                 <SEQ TYPE="KEYWORD3">'pos</SEQ>
137                 <SEQ TYPE="KEYWORD3">'position</SEQ>
138                 <SEQ TYPE="KEYWORD3">'pred</SEQ>
139                 <SEQ TYPE="KEYWORD3">'priority</SEQ>
140                 <SEQ TYPE="KEYWORD3">'range</SEQ>
141                 <SEQ TYPE="KEYWORD3">'class'read</SEQ>
142                 <SEQ TYPE="KEYWORD3">'read</SEQ>
143                 <SEQ TYPE="KEYWORD3">'remainder</SEQ>
144                 <SEQ TYPE="KEYWORD3">'result</SEQ>
145                 <SEQ TYPE="KEYWORD3">'round</SEQ>
146                 <SEQ TYPE="KEYWORD3">'rounding</SEQ>
147                 <SEQ TYPE="KEYWORD3">'safe_first</SEQ>
148                 <SEQ TYPE="KEYWORD3">'safe_last</SEQ>
149                 <SEQ TYPE="KEYWORD3">'scale</SEQ>
150                 <SEQ TYPE="KEYWORD3">'scaling</SEQ>
151                 <SEQ TYPE="KEYWORD3">'signed_zeros</SEQ>
152                 <SEQ TYPE="KEYWORD3">'size</SEQ>
153                 <SEQ TYPE="KEYWORD3">'small</SEQ>
154                 <SEQ TYPE="KEYWORD3">'storage_pool</SEQ>
155                 <SEQ TYPE="KEYWORD3">'storage_size</SEQ>
156         <SEQ TYPE="KEYWORD3">'stream_size</SEQ>
157                 <SEQ TYPE="KEYWORD3">'succ</SEQ>
158                 <SEQ TYPE="KEYWORD3">'tag</SEQ>
159                 <SEQ TYPE="KEYWORD3">'terminated</SEQ>
160                 <SEQ TYPE="KEYWORD3">'truncation</SEQ>
161                 <SEQ TYPE="KEYWORD3">'unbiased_rounding</SEQ>
162                 <SEQ TYPE="KEYWORD3">'unchecked_access</SEQ>
163                 <SEQ TYPE="KEYWORD3">'val</SEQ>
164                 <SEQ TYPE="KEYWORD3">'valid</SEQ>
165                 <SEQ TYPE="KEYWORD3">'value</SEQ>
166                 <SEQ TYPE="KEYWORD3">'version</SEQ>
167                 <SEQ TYPE="KEYWORD3">'wide_image</SEQ>
168                 <SEQ TYPE="KEYWORD3">'wide_value</SEQ>
169                 <SEQ TYPE="KEYWORD3">'wide_width</SEQ>
170                 <SEQ TYPE="KEYWORD3">'width</SEQ>
171         <SEQ TYPE="KEYWORD3">'wide_wide_image</SEQ>
172         <SEQ TYPE="KEYWORD3">'wide_wide_value</SEQ>
173         <SEQ TYPE="KEYWORD3">'wide_wide_width</SEQ>
174                 <SEQ TYPE="KEYWORD3">'class'write</SEQ>
175                 <SEQ TYPE="KEYWORD3">'write</SEQ>
176         
177         <!-- Predefined Pragmas -->
178         <!-- From Annex L of the Ada Reference Manual. -->
179         <!-- One problem with this definition is that it requires exactly one
180              space between the pragma keyword and the name of the pragma. -->
181         <SEQ TYPE="KEYWORD3">pragma all_calls_remote</SEQ>
182         <SEQ TYPE="KEYWORD3">pragma assert</SEQ>
183         <SEQ TYPE="KEYWORD3">pragma assertion_policy</SEQ>
184         <SEQ TYPE="KEYWORD3">pragma asynchronous</SEQ>
185         <SEQ TYPE="KEYWORD3">pragma atomic</SEQ>
186         <SEQ TYPE="KEYWORD3">pragma atomic_components</SEQ>
187         <SEQ TYPE="KEYWORD3">pragma attach_handler</SEQ>
188         <SEQ TYPE="KEYWORD3">pragma controlled</SEQ>
189         <SEQ TYPE="KEYWORD3">pragma convention</SEQ>
190         <SEQ TYPE="KEYWORD3">pragma cpu</SEQ>
191         <SEQ TYPE="KEYWORD3">pragma default_storage_pool</SEQ>
192         <SEQ TYPE="KEYWORD3">pragma detect_blocking</SEQ>
193         <SEQ TYPE="KEYWORD3">pragma discard_names</SEQ>
194         <SEQ TYPE="KEYWORD3">pragma dispatching_domain</SEQ>
195         <SEQ TYPE="KEYWORD3">pragma elaborate</SEQ>
196         <SEQ TYPE="KEYWORD3">pragma elaborate_all</SEQ>
197         <SEQ TYPE="KEYWORD3">pragma elaborate_body</SEQ>
198         <SEQ TYPE="KEYWORD3">pragma export</SEQ>
199         <SEQ TYPE="KEYWORD3">pragma import</SEQ>
200         <SEQ TYPE="KEYWORD3">pragma independent</SEQ>
201         <SEQ TYPE="KEYWORD3">pragam independent_components</SEQ>
202         <SEQ TYPE="KEYWORD3">pragma inline</SEQ>
203         <SEQ TYPE="KEYWORD3">pragma inspection_point</SEQ>
204         <SEQ TYPE="KEYWORD3">pragma interrupt_handler</SEQ>
205         <SEQ TYPE="KEYWORD3">pragma interrupt_priority</SEQ>
206         <SEQ TYPE="KEYWORD3">pragma linker_options</SEQ>
207         <SEQ TYPE="KEYWORD3">pragma list</SEQ>
208         <SEQ TYPE="KEYWORD3">pragma locking_policy</SEQ>
209         <SEQ TYPE="KEYWORD3">pragma no_return</SEQ>
210         <SEQ TYPE="KEYWORD3">pragma normalize_scalars</SEQ>
211         <SEQ TYPE="KEYWORD3">pragma optimize</SEQ>
212         <SEQ TYPE="KEYWORD3">pragma pack</SEQ>
213         <SEQ TYPE="KEYWORD3">pragma page</SEQ>
214         <SEQ TYPE="KEYWORD3">pragma partition_elaboration_policy</SEQ>
215         <SEQ TYPE="KEYWORD3">pragma preelaborate_initialization</SEQ>
216         <SEQ TYPE="KEYWORD3">pragma preelaborate</SEQ>
217         <SEQ TYPE="KEYWORD3">pragma priority</SEQ>
218         <SEQ TYPE="KEYWORD3">pragma priority_specific_dispatching</SEQ>
219         <SEQ TYPE="KEYWORD3">pragma profile</SEQ>
220         <SEQ TYPE="KEYWORD3">pragma pure</SEQ>
221         <SEQ TYPE="KEYWORD3">pragma queuing_policy</SEQ>
222         <SEQ TYPE="KEYWORD3">pragma relative_deadline</SEQ>
223         <SEQ TYPE="KEYWORD3">pragma remote_call_interface</SEQ>
224         <SEQ TYPE="KEYWORD3">pragma remote_types</SEQ>
225         <SEQ TYPE="KEYWORD3">pragma restrictions</SEQ>
226         <SEQ TYPE="KEYWORD3">pragma reviewable</SEQ>
227         <SEQ TYPE="KEYWORD3">pragma shared_passive</SEQ>
228         <SEQ TYPE="KEYWORD3">pragma storage_size</SEQ>
229         <SEQ TYPE="KEYWORD3">pragma suppress</SEQ>
230         <SEQ TYPE="KEYWORD3">pragma task_dispatching_policy</SEQ>
231         <SEQ TYPE="KEYWORD3">pragma unchecked_union</SEQ>
232         <SEQ TYPE="KEYWORD3">pragma unsuppress</SEQ>
233         <SEQ TYPE="KEYWORD3">pragma volatile</SEQ>
234         <SEQ TYPE="KEYWORD3">pragma volatile_components</SEQ>
235
236                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
237                         <BEGIN>'</BEGIN>
238                         <END>'</END>
239                 </SPAN>
240
241                 <KEYWORDS>
242                         <!-- Reserved words -->
243             <!-- The first three are special. Coloring them differently makes it
244                  easier to locate subprograms in the file. -->
245                         <KEYWORD1>entry</KEYWORD1>
246                         <KEYWORD1>function</KEYWORD1>
247                         <KEYWORD1>procedure</KEYWORD1>
248
249                         <KEYWORD2>abort</KEYWORD2>
250                         <KEYWORD2>abs</KEYWORD2>
251                         <KEYWORD2>abstract</KEYWORD2>
252                         <KEYWORD2>accept</KEYWORD2>
253                         <KEYWORD2>access</KEYWORD2>
254                         <KEYWORD2>aliased</KEYWORD2>
255                         <KEYWORD2>all</KEYWORD2>
256                         <KEYWORD2>and</KEYWORD2>
257                         <KEYWORD2>array</KEYWORD2>
258                         <KEYWORD2>at</KEYWORD2>
259                         <KEYWORD2>begin</KEYWORD2>
260                         <KEYWORD2>body</KEYWORD2>
261                         <KEYWORD2>case</KEYWORD2>
262                         <KEYWORD2>constant</KEYWORD2>
263                         <KEYWORD2>declare</KEYWORD2>
264                         <KEYWORD2>delay</KEYWORD2>
265                         <KEYWORD2>delta</KEYWORD2>
266                         <KEYWORD2>digits</KEYWORD2>
267                         <KEYWORD2>do</KEYWORD2>
268                         <KEYWORD2>else</KEYWORD2>
269                         <KEYWORD2>elsif</KEYWORD2>
270                         <KEYWORD2>end</KEYWORD2>
271                         <KEYWORD2>exception</KEYWORD2>
272                         <KEYWORD2>exit</KEYWORD2>
273                         <KEYWORD2>for</KEYWORD2>
274             <KEYWORD2>generic</KEYWORD2>
275                         <KEYWORD2>goto</KEYWORD2>
276                         <KEYWORD2>if</KEYWORD2>
277                         <KEYWORD2>in</KEYWORD2>
278             <KEYWORD2>interface</KEYWORD2>
279                         <KEYWORD2>is</KEYWORD2>
280                         <KEYWORD2>limited</KEYWORD2>
281                         <KEYWORD2>loop</KEYWORD2>
282                         <KEYWORD2>mod</KEYWORD2>
283                         <KEYWORD2>new</KEYWORD2>
284                         <KEYWORD2>not</KEYWORD2>
285             <KEYWORD2>null</KEYWORD2>  <!-- This is also used as an access value. -->
286             <KEYWORD2>of</KEYWORD2>
287                         <KEYWORD2>or</KEYWORD2>
288                         <KEYWORD2>others</KEYWORD2>
289                         <KEYWORD2>out</KEYWORD2>
290             <KEYWORD2>overriding</KEYWORD2>
291                         <KEYWORD2>package</KEYWORD2>
292                         <KEYWORD3>pragma</KEYWORD3>  <!-- Special case -->
293                         <KEYWORD2>private</KEYWORD2>
294                         <KEYWORD2>protected</KEYWORD2>
295                         <KEYWORD2>raise</KEYWORD2>
296                         <KEYWORD2>range</KEYWORD2>
297                         <KEYWORD2>record</KEYWORD2>
298                         <KEYWORD2>rem</KEYWORD2>
299                         <KEYWORD2>renames</KEYWORD2>
300                         <KEYWORD2>requeue</KEYWORD2>
301                         <KEYWORD2>return</KEYWORD2>
302             <KEYWORD2>reverse</KEYWORD2>
303                         <KEYWORD2>select</KEYWORD2>
304                         <KEYWORD2>separate</KEYWORD2>
305                         <KEYWORD2>some</KEYWORD2>
306                         <KEYWORD2>subtype</KEYWORD2>
307             <KEYWORD2>synchronized</KEYWORD2>
308                         <KEYWORD2>tagged</KEYWORD2>
309                         <KEYWORD2>task</KEYWORD2>
310                         <KEYWORD2>terminate</KEYWORD2>
311                         <KEYWORD2>then</KEYWORD2>
312                         <KEYWORD2>type</KEYWORD2>
313                         <KEYWORD2>until</KEYWORD2>
314                         <KEYWORD2>use</KEYWORD2>
315                         <KEYWORD2>when</KEYWORD2>
316                         <KEYWORD2>while</KEYWORD2>
317                         <KEYWORD2>with</KEYWORD2>
318                         <KEYWORD2>xor</KEYWORD2>
319
320                         <!-- Literals -->
321                         <LITERAL1>false</LITERAL1>
322                         <LITERAL1>true</LITERAL1>
323             
324                         <!-- Pre-defined types (in package Standard). -->
325                         <LITERAL2>address</LITERAL2>
326                         <LITERAL2>boolean</LITERAL2>
327                         <LITERAL2>character</LITERAL2>
328                         <LITERAL2>duration</LITERAL2>
329                         <LITERAL2>float</LITERAL2>
330                         <LITERAL2>integer</LITERAL2>
331                         <LITERAL2>latin_1</LITERAL2>
332                         <LITERAL2>natural</LITERAL2>
333                         <LITERAL2>positive</LITERAL2>
334                         <LITERAL2>string</LITERAL2>
335                         <LITERAL2>time</LITERAL2>
336             <LITERAL2>wide_character</LITERAL2>
337             <LITERAL2>wide_wide_character</LITERAL2>
338             <LITERAL2>wide_string</LITERAL2>
339             <LITERAL2>wide_wide_string</LITERAL2>
340
341       <!-- Pre-defined exceptions (in package Standard). -->
342       <LITERAL2>constraint_error</LITERAL2>
343       <LITERAL2>program_error</LITERAL2>
344       <LITERAL2>storage_error</LITERAL2>
345       <LITERAL2>tasking_error</LITERAL2>
346
347                 </KEYWORDS>
348         </RULES>
349 </MODE>
350