/jEdit/branches/4.3.x-merge-request-2980833/modes/yab.xml

# · XML · 318 lines · 313 code · 3 blank · 2 comment · 0 complexity · 78df2a152288274dafbf3ea5106270fb MD5 · raw file

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