3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
5 <!-- YAB (YABasic) 3/22/09 by Ben Dutcher -->
6 <!-- roughly based on the grouping in the YAB documentation -->
9 <PROPERTY NAME="lineComment" VALUE="'" />
10 <PROPERTY NAME="contextInsensitive" VALUE="true" />
13 <RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" ESCAPE="\">
14 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
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 "(".
23 <!-- MARK_PREVIOUS AT_WORD_START="TRUE"
24 MATCH_TYPE="FUNCTION">"and("</MARK_PREVIOUS -->
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>
34 <!-- Comparison operators -->
35 <SEQ TYPE="OPERATOR"><</SEQ>
36 <SEQ TYPE="OPERATOR"><=</SEQ>
37 <SEQ TYPE="OPERATOR">>=</SEQ>
38 <SEQ TYPE="OPERATOR">></SEQ>
39 <SEQ TYPE="OPERATOR">=</SEQ>
40 <SEQ TYPE="OPERATOR"><></SEQ>
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>
53 <!-- Concatenation operators -->
55 <SEQ TYPE="OPERATOR">&</SEQ>
57 <!-- <SEQ TYPE="NULL">_</SEQ>-->
58 <!-- Instruction separator -->
59 <MARK_PREVIOUS TYPE="LABEL" MATCH_TYPE="OPERATOR"
60 AT_LINE_START="TRUE">:</MARK_PREVIOUS>
64 <!-- just testing! -->
65 <KEYWORD4>alotta</KEYWORD4>
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>
80 <KEYWORD1>gosub</KEYWORD1>
81 <KEYWORD1>goto</KEYWORD1>
82 <KEYWORD1>label</KEYWORD1>
83 <KEYWORD1>return</KEYWORD1>
86 <KEYWORD1>bind</KEYWORD1>
87 <KEYWORD1>compile</KEYWORD1>
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>
106 <!-- Closing, Exit Statements -->
107 <KEYWORD1>end</KEYWORD1>
108 <KEYWORD1>exit</KEYWORD1>
111 <KEYWORD1>pause</KEYWORD1>
112 <KEYWORD1>sleep</KEYWORD1>
113 <KEYWORD1>wait</KEYWORD1>
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>
128 <KEYWORD1>const</KEYWORD1>
129 <KEYWORD1>dim</KEYWORD1>
130 <KEYWORD1>redim</KEYWORD1>
133 <KEYWORD3>rem</KEYWORD3>
134 <KEYWORD2>documentation</KEYWORD2>
135 <KEYWORD3>docu$</KEYWORD3>
136 <KEYWORD2>docu</KEYWORD2>
137 <KEYWORD2>doc</KEYWORD2>
139 <!-- Function Call - Dynamic Evaluation -->
140 <KEYWORD1>execute$</KEYWORD1>
141 <KEYWORD1>execute</KEYWORD1>
142 <KEYWORD1>system</KEYWORD1>
143 <KEYWORD1>system$</KEYWORD1>
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 -->
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>
193 <!-- for reading as, for writing as -->
194 <!-- open printer, close printer -->
195 <!-- print color, print colour, print reverse, print at, print @ -->
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>
222 <!-- Arithmetic operators -->
223 <OPERATOR>let</OPERATOR>
224 <OPERATOR>mod</OPERATOR>
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>
234 <!-- Datatypes Constants/Literals -->
235 <KEYWORD3>false</KEYWORD3>
236 <KEYWORD3>true</KEYWORD3>
238 <!-- Miscellaneous -->
239 <LITERAL2>euler</LITERAL2>
240 <LITERAL2>pi</LITERAL2>
242 <!-- Built-in Functions -->
243 <!-- Array Handling -->
244 <KEYWORD2>arraydimension</KEYWORD2>
245 <KEYWORD2>arraydim</KEYWORD2>
246 <KEYWORD2>arraysize</KEYWORD2>
248 <!-- Conversion Functions (Radix) -->
249 <FUNCTION>bin$</FUNCTION>
250 <FUNCTION>dec</FUNCTION>
251 <FUNCTION>hex$</FUNCTION>
252 <FUNCTION>str$</FUNCTION>
254 <!-- Date/Time Functions -->
255 <FUNCTION>date$</FUNCTION>
256 <FUNCTION>time$</FUNCTION>
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>
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>
303 <!-- YABasic listed keywords that aren't described in the YABasic documentation: