]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/yab.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / yab.xml
1 <?xml version="1.0"?>
2
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
4
5 <!-- YAB (YABasic) 3/22/09 by Ben Dutcher -->
6 <!-- roughly based on the grouping in the YAB documentation -->
7 <MODE>
8         <PROPS>
9                 <PROPERTY NAME="lineComment" VALUE="'" />
10                 <PROPERTY NAME="contextInsensitive" VALUE="true" />
11         </PROPS>
12
13         <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" ESCAPE="\">
14                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
15                         <BEGIN>"</BEGIN>
16                         <END>"</END>
17                 </SPAN>
18
19                 <!-- YAB uses both the logical operator AND, and the bitwise function AND() -->
20                 <!-- Doing something wrong here.  Goal is to mark the "and" of "and(a,b)" as a function,
21                       but not mark the opening "(".  I'm using  SEQ instead, even though it does mark the "(".
22                 -->
23                 <!-- MARK_PREVIOUS AT_WORD_START="TRUE"
24    MATCH_TYPE="FUNCTION">"and("</MARK_PREVIOUS -->
25
26                 <!-- YAB has a large number of comment tags -->
27                 <EOL_SPAN TYPE="COMMENT1">rem </EOL_SPAN>
28                 <EOL_SPAN TYPE="COMMENT2">//</EOL_SPAN>
29                 <EOL_SPAN TYPE="COMMENT3" AT_LINE_START="TRUE">documentation</EOL_SPAN>
30                 <EOL_SPAN TYPE="COMMENT3" AT_LINE_START="TRUE">docu</EOL_SPAN>
31                 <EOL_SPAN TYPE="COMMENT3" AT_LINE_START="TRUE">doc</EOL_SPAN>
32                 <EOL_SPAN TYPE="COMMENT4" AT_LINE_START="TRUE">#</EOL_SPAN>
33
34                 <!-- Comparison operators -->
35                 <SEQ TYPE="OPERATOR">&lt;</SEQ>
36                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>
37                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>
38                 <SEQ TYPE="OPERATOR">&gt;</SEQ>
39                 <SEQ TYPE="OPERATOR">=</SEQ>
40                 <SEQ TYPE="OPERATOR">&lt;&gt;</SEQ>
41
42                 <!-- Arithmetic operators -->
43                 <SEQ TYPE="OPERATOR">+</SEQ>
44                 <SEQ TYPE="OPERATOR">-</SEQ>
45                 <SEQ TYPE="OPERATOR">*</SEQ>
46                 <SEQ TYPE="OPERATOR">/</SEQ>
47                 <SEQ TYPE="OPERATOR">**</SEQ>
48                 <SEQ TYPE="OPERATOR">^</SEQ>
49                 <!-- YAB uses both the logical operator AND, and the bitwise function AND() -->
50                 <!-- Unfortuantely, this also marks the opening "(" -->
51                 <SEQ TYPE="FUNCTION" AT_WORD_START="TRUE">and(</SEQ>
52
53                 <!-- Concatenation operators -->
54                 <!-- strings -->
55                 <SEQ TYPE="OPERATOR">&amp;</SEQ>
56
57                 <!--            <SEQ TYPE="NULL">_</SEQ>-->
58                 <!-- Instruction separator -->
59                 <MARK_PREVIOUS TYPE="LABEL" MATCH_TYPE="OPERATOR"
60                         AT_LINE_START="TRUE">:</MARK_PREVIOUS>
61
62                 <KEYWORDS>
63
64                         <!--  just testing! -->
65                         <KEYWORD4>alotta</KEYWORD4>
66
67                         <!-- Conditional Statements -->
68                         <KEYWORD1>case</KEYWORD1>
69                         <KEYWORD1>default</KEYWORD1>
70                         <KEYWORD1>else</KEYWORD1>
71                         <KEYWORD1>elseif</KEYWORD1>
72                         <KEYWORD1>elsif</KEYWORD1>
73                         <KEYWORD1>endif</KEYWORD1>
74                         <KEYWORD1>fi</KEYWORD1>
75                         <KEYWORD1>if</KEYWORD1>
76                         <KEYWORD1>switch</KEYWORD1>
77                         <KEYWORD1>then</KEYWORD1>
78
79                         <!-- naviagation -->
80                         <KEYWORD1>gosub</KEYWORD1>
81                         <KEYWORD1>goto</KEYWORD1>
82                         <KEYWORD1>label</KEYWORD1>
83                         <KEYWORD1>return</KEYWORD1>
84
85                         <!-- special -->
86                         <KEYWORD1>bind</KEYWORD1>
87                         <KEYWORD1>compile</KEYWORD1>
88
89                         <!-- Loop Statements -->
90                         <KEYWORD1>break</KEYWORD1>
91                         <KEYWORD1>continue</KEYWORD1>
92                         <KEYWORD1>do</KEYWORD1>
93                         <KEYWORD1>each</KEYWORD1>
94                         <KEYWORD1>for</KEYWORD1>
95                         <KEYWORD1>in</KEYWORD1>
96                         <KEYWORD1>loop</KEYWORD1>
97                         <KEYWORD1>next</KEYWORD1>
98                         <KEYWORD1>repeat</KEYWORD1>
99                         <KEYWORD1>step</KEYWORD1>
100                         <KEYWORD1>to</KEYWORD1>
101                         <KEYWORD1>until</KEYWORD1>
102                         <KEYWORD1>wend</KEYWORD1>
103                         <KEYWORD1>while</KEYWORD1>
104
105
106                         <!-- Closing, Exit Statements -->
107                         <KEYWORD1>end</KEYWORD1>
108                         <KEYWORD1>exit</KEYWORD1>
109
110                         <!-- control -->
111                         <KEYWORD1>pause</KEYWORD1>
112                         <KEYWORD1>sleep</KEYWORD1>
113                         <KEYWORD1>wait</KEYWORD1>
114
115                         <!-- Methods, Functions, Class, Properties, Variables -->
116                         <KEYWORD1>export</KEYWORD1>
117                         <KEYWORD1>import</KEYWORD1>
118                         <KEYWORD1>local</KEYWORD1>
119                         <KEYWORD1>numparam</KEYWORD1>
120                         <KEYWORD1>numparams</KEYWORD1>
121                         <KEYWORD1>static</KEYWORD1>
122                         <KEYWORD1>sub</KEYWORD1>
123                         <KEYWORD1>subroutine</KEYWORD1>
124                         <!-- end sub -->
125
126
127                         <!-- Declaration -->
128                         <KEYWORD1>const</KEYWORD1>
129                         <KEYWORD1>dim</KEYWORD1>
130                         <KEYWORD1>redim</KEYWORD1>
131
132                         <!-- Comments -->
133                         <KEYWORD3>rem</KEYWORD3>
134                         <KEYWORD2>documentation</KEYWORD2>
135                         <KEYWORD3>docu$</KEYWORD3>
136                         <KEYWORD2>docu</KEYWORD2>
137                         <KEYWORD2>doc</KEYWORD2>
138
139                         <!-- Function Call - Dynamic Evaluation -->
140                         <KEYWORD1>execute$</KEYWORD1>
141                         <KEYWORD1>execute</KEYWORD1>
142                         <KEYWORD1>system</KEYWORD1>
143                         <KEYWORD1>system$</KEYWORD1>
144
145                         <!-- Miscellaneous -->
146                         <KEYWORD1>beep</KEYWORD1>
147                         <KEYWORD1>bell</KEYWORD1>
148                         <KEYWORD1>clear</KEYWORD1>
149                         <KEYWORD1>data</KEYWORD1>
150                         <KEYWORD1>erase</KEYWORD1>
151                         <KEYWORD1>error</KEYWORD1>
152                         <KEYWORD1>explicit</KEYWORD1>
153                         <KEYWORD1>getscreen$</KEYWORD1>
154                         <KEYWORD1>goto</KEYWORD1>
155                         <KEYWORD1>interrupt</KEYWORD1>
156                         <KEYWORD1>on</KEYWORD1>
157                         <KEYWORD1>option</KEYWORD1>
158                         <KEYWORD1>putscreen</KEYWORD1>
159                         <KEYWORD1>randomize</KEYWORD1>
160                         <KEYWORD1>read</KEYWORD1>
161                         <KEYWORD1>restore</KEYWORD1>
162                         <KEYWORD1>resume</KEYWORD1>
163                         <KEYWORD1>screen</KEYWORD1>
164                         <!-- on interrupt -->
165                         <!-- clear screen -->
166
167
168                         <!-- I/O -->
169                         <KEYWORD1>@</KEYWORD1>
170                         <KEYWORD1>as</KEYWORD1>
171                         <KEYWORD1>at</KEYWORD1>
172                         <KEYWORD1>close</KEYWORD1>
173                         <KEYWORD1>eof</KEYWORD1>
174                         <KEYWORD1>inkey$</KEYWORD1>
175                         <KEYWORD1>input</KEYWORD1>
176                         <KEYWORD1>line</KEYWORD1>
177                         <KEYWORD1>mouseb</KEYWORD1>
178                         <KEYWORD1>mousemod</KEYWORD1>
179                         <KEYWORD1>mousex</KEYWORD1>
180                         <KEYWORD1>mousey</KEYWORD1>
181                         <KEYWORD1>open</KEYWORD1>
182                         <KEYWORD1>peek$</KEYWORD1>
183                         <KEYWORD1>peek</KEYWORD1>
184                         <KEYWORD1>poke</KEYWORD1>
185                         <KEYWORD1>print</KEYWORD1>
186                         <KEYWORD1>printer</KEYWORD1>
187                         <KEYWORD1>reading</KEYWORD1>
188                         <KEYWORD1>seek</KEYWORD1>
189                         <KEYWORD1>tell</KEYWORD1>
190                         <KEYWORD1>using</KEYWORD1>
191                         <KEYWORD1>writing</KEYWORD1>
192                         <!-- line input -->
193                         <!-- for reading as, for writing as -->
194                         <!-- open printer, close printer -->
195                         <!-- print color, print colour, print reverse, print at, print @ -->
196
197                         <!-- draw -->
198                         <KEYWORD1>backcolor</KEYWORD1>
199                         <KEYWORD1>backcolour</KEYWORD1>
200                         <KEYWORD1>box</KEYWORD1>
201                         <KEYWORD1>circle</KEYWORD1>
202                         <KEYWORD1>clear</KEYWORD1>
203                         <KEYWORD1>color</KEYWORD1>
204                         <KEYWORD1>colour</KEYWORD1>
205                         <KEYWORD1>curve</KEYWORD1>
206                         <KEYWORD1>dot</KEYWORD1>
207                         <KEYWORD1>fill</KEYWORD1>
208                         <KEYWORD1>getbit$</KEYWORD1>
209                         <KEYWORD1>line</KEYWORD1>
210                         <KEYWORD1>new</KEYWORD1>
211                         <!-- open window, window origin, close curve, clear window, close window, new curve -->
212                         <KEYWORD1>origin</KEYWORD1>
213                         <KEYWORD1>putbit</KEYWORD1>
214                         <KEYWORD1>rectangle</KEYWORD1>
215                         <KEYWORD1>reverse</KEYWORD1>
216                         <KEYWORD1>text</KEYWORD1>
217                         <KEYWORD1>triangle</KEYWORD1>
218                         <KEYWORD1>window</KEYWORD1>
219
220                         <!-- Operators -->
221
222                         <!-- Arithmetic operators -->
223                         <OPERATOR>let</OPERATOR>
224                         <OPERATOR>mod</OPERATOR>
225
226                         <!-- Logical operators -->
227                         <KEYWORD3>and</KEYWORD3>
228                         <KEYWORD3>eor</KEYWORD3>
229                         <KEYWORD3>imp</KEYWORD3>
230                         <KEYWORD3>not</KEYWORD3>
231                         <KEYWORD3>or</KEYWORD3>
232                         <KEYWORD3>xor</KEYWORD3>
233
234                         <!-- Datatypes Constants/Literals -->
235                         <KEYWORD3>false</KEYWORD3>
236                         <KEYWORD3>true</KEYWORD3>
237
238                         <!-- Miscellaneous  -->
239                         <LITERAL2>euler</LITERAL2>
240                         <LITERAL2>pi</LITERAL2>
241
242                         <!-- Built-in Functions -->
243                         <!-- Array Handling -->
244                         <KEYWORD2>arraydimension</KEYWORD2>
245                         <KEYWORD2>arraydim</KEYWORD2>
246                         <KEYWORD2>arraysize</KEYWORD2>
247
248                         <!-- Conversion Functions (Radix) -->
249                         <FUNCTION>bin$</FUNCTION>
250                         <FUNCTION>dec</FUNCTION>
251                         <FUNCTION>hex$</FUNCTION>
252                         <FUNCTION>str$</FUNCTION>
253
254                         <!-- Date/Time Functions -->
255                         <FUNCTION>date$</FUNCTION>
256                         <FUNCTION>time$</FUNCTION>
257
258                         <!-- Math Functions -->
259                         <FUNCTION>abs</FUNCTION>
260                         <FUNCTION>acos</FUNCTION>
261                         <!-- FUNCTION>and(</FUNCTION  -->
262                         <FUNCTION>asin</FUNCTION>
263                         <FUNCTION>atan</FUNCTION>
264                         <FUNCTION>bin$</FUNCTION>
265                         <FUNCTION>cos</FUNCTION>
266                         <FUNCTION>dec</FUNCTION>
267                         <FUNCTION>eor</FUNCTION>
268                         <FUNCTION>exp</FUNCTION>
269                         <FUNCTION>fix</FUNCTION>
270                         <FUNCTION>frac</FUNCTION>
271                         <FUNCTION>int</FUNCTION>
272                         <FUNCTION>log</FUNCTION>
273                         <FUNCTION>max</FUNCTION>
274                         <FUNCTION>min</FUNCTION>
275                         <FUNCTION>ran</FUNCTION>
276                         <FUNCTION>sgn</FUNCTION>
277                         <FUNCTION>sig</FUNCTION>
278                         <FUNCTION>sin</FUNCTION>
279                         <FUNCTION>sqr</FUNCTION>
280                         <FUNCTION>sqrt</FUNCTION>
281                         <FUNCTION>tan</FUNCTION>
282
283                         <!-- Strings -->
284                         <FUNCTION>asc</FUNCTION>
285                         <FUNCTION>chr$</FUNCTION>
286                         <FUNCTION>glob</FUNCTION>
287                         <FUNCTION>hex$</FUNCTION>
288                         <FUNCTION>instr</FUNCTION>
289                         <FUNCTION>left$</FUNCTION>
290                         <FUNCTION>len</FUNCTION>
291                         <FUNCTION>lower$</FUNCTION>
292                         <FUNCTION>ltrim$</FUNCTION>
293                         <FUNCTION>mid$</FUNCTION>
294                         <FUNCTION>right$</FUNCTION>
295                         <FUNCTION>rinstr</FUNCTION>
296                         <FUNCTION>rtrim$</FUNCTION>
297                         <FUNCTION>split</FUNCTION>
298                         <FUNCTION>token</FUNCTION>
299                         <FUNCTION>trim$</FUNCTION>
300                         <FUNCTION>upper$</FUNCTION>
301                         <FUNCTION>val</FUNCTION>
302
303                         <!-- YABasic listed keywords that aren't described in the YABasic documentation:
304                         bitblit$
305                         bitblit
306                         bitblt$
307                         bitblt
308                         filled
309                         mousebutton
310                         mousemodifier
311                         rect
312                         split$
313                         token$
314                         -->
315
316
317                 </KEYWORDS>
318         </RULES>
319 </MODE>