alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

jEdit example source code file (turbobasic.xml)

This example jEdit source code file (turbobasic.xml) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Java - jEdit tags/keywords

begin, eol_span, function, function, keyword1, keyword1, keyword2, keyword2, keyword3, operator, seq, seq, true, type

The jEdit turbobasic.xml source code

<?xml version="1.0"?>
<!DOCTYPE MODE SYSTEM "xmode.dtd">
<!-- Turbobasic, 3/25/09 by Ben Dutcher  -->
<!-- The Turbo Basic compiler was a Borland product.  It's way old.  My manual dates from 1987 -->
<!-- The categories here are those in the manual, except where I couldn't get them to work.  -->

<MODE>
	<PROPS>
		<PROPERTY NAME="lineComment" VALUE="'" />
	</PROPS>

	<RULES IGNORE_CASE="TRUE" HIGHLIGHT_DIGITS="TRUE" ESCAPE="\">
		<SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">
			<BEGIN>"
			<END>"
		</SPAN>

		<!-- TurboBasic will use either symbol to start a comment -->
		<EOL_SPAN TYPE="COMMENT1">'
		<EOL_SPAN TYPE="COMMENT1">rem 


		<!-- Comparison operators -->
		<SEQ TYPE="OPERATOR"><
		<SEQ TYPE="OPERATOR"><=
		<SEQ TYPE="OPERATOR">>=
		<SEQ TYPE="OPERATOR">>
		<SEQ TYPE="OPERATOR">=
		<SEQ TYPE="OPERATOR"><>

		<!-- indicate a named constant like %true.   Remember you need to define them once only.   Integers only.  -->
		<SPAN_REGEXP HASH_CHAR="%" TYPE="MARKUP" AT_WORD_START="TRUE" NO_WORD_BREAK="TRUE">
			<BEGIN>%
			<END>\S*
		</SPAN_REGEXP>

		<!-- Arithmetic operators -->
		<SEQ TYPE="OPERATOR">+
		<SEQ TYPE="OPERATOR">-
		<SEQ TYPE="OPERATOR">*
		<SEQ TYPE="OPERATOR">/
		<SEQ TYPE="OPERATOR">\
		<SEQ TYPE="OPERATOR">^
		<SEQ TYPE="OPERATOR">mod

		<!-- File number marker like #3, but which also is used to indicate a double-precison variable like FineMeasuremet# -->
		<SEQ TYPE="KEYWORD1" AT_WORD_START="TRUE">#

		<!-- to handle "def FNmine(), etc.:  -->
		<SEQ TYPE="KEYWORD1">def FN

		<!-- rather than enter option and base as separate keywords, since they are used only in this combination -->
		<SEQ TYPE="KEYWORD1">option base

		<!--		-->
		<!-- Instruction separator -->
		<MARK_PREVIOUS TYPE="LABEL" MATCH_TYPE="OPERATOR"
			AT_LINE_START="TRUE">:</MARK_PREVIOUS>

		<KEYWORDS>

		<!-- Weirdly enough, Turbo Basic doesn't support the words TRUE or FALSE
			so I always define them in the code. with %false = 0: %true = not %false -->

		<!-- occasional test word.  It's not in the manual, but that would have been fun.  -->
		<KEYWORD3>notalotta

			<!-- Listed as keywords, but also described as unsupported:
			list
			usr, usr0-usr9
			Just listed as unsupported:
			auto, delete, edit, load, new, renum, save, cont, merge, motor
			-->
		<!-- Logical operators -->
		<KEYWORD3>and
		<KEYWORD3>eqv
		<KEYWORD3>imp
		<KEYWORD3>not
		<KEYWORD3>or
		<KEYWORD3>xor

			<!-- chaining -->
			<KEYWORD1>chain
			<KEYWORD1>common
			<KEYWORD1>run

			<!-- compiler control -->
			<KEYWORD1>dim
			<KEYWORD1>lbound
			<KEYWORD1>let
			<KEYWORD1>local
			<!-- KEYWORD1>option base
			<KEYWORD1>rem
			<KEYWORD1>shared
			<KEYWORD1>static
			<KEYWORD1>tron
			<KEYWORD1>troff
			<KEYWORD1>ubound

			<!-- devices -->
			<!-- KEYWORD1>open com
			<KEYWORD1>com
			<KEYWORD1>inp
			<KEYWORD1>ioctl$
			<KEYWORD1>ioctl
			<KEYWORD1>out

			<!-- DOS -->
			<KEYWORD1>chdir
			<KEYWORD1>command$
			<KEYWORD1>date$
			<KEYWORD1>environ$
			<KEYWORD1>environ
			<KEYWORD1>kill
			<KEYWORD1>mkdir
			<KEYWORD1>rmdir
			<KEYWORD1>shell
			<KEYWORD1>system
			<KEYWORD1>time$

			<!-- Error Handling -->
			<KEYWORD1>eradr
			<KEYWORD1>erdev
			<KEYWORD1>erdev$
			<KEYWORD1>erl
			<KEYWORD1>error
			<KEYWORD1>err

			<!-- files -->
			<KEYWORD1>bload
			<KEYWORD1>bsave
			<KEYWORD1>close
			<KEYWORD1>eof
			<KEYWORD1>field
			<KEYWORD1>files
			<KEYWORD1>get
			<!-- KEYWORD1>line input #
			<KEYWORD1>loc
			<KEYWORD1>lof
			<KEYWORD1>lset
			<KEYWORD1>name
			<KEYWORD1>open
			<!-- KEYWORD1>print #
			<KEYWORD1>put$
			<KEYWORD1>put
			<KEYWORD1>reset
			<KEYWORD1>rset
			<KEYWORD1>seek
			<KEYWORD1>using
			<!-- KEYWORD1>write #

			<!-- flow control -->
			<!--KEYWORD1>call absolute
			<!-- KEYWORD1>call interrupt
			<KEYWORD1>call
			<KEYWORD1>call
			<KEYWORD1>case
			<KEYWORD1>def
			<KEYWORD1>do
			<KEYWORD1>elseif
			<!-- KEYWORD1>end case
			<KEYWORD1>case else
			<KEYWORD1>else
			<KEYWORD1>end
			<KEYWORD1>loop
			<KEYWORD1>exit
			<KEYWORD1>for
			<KEYWORD1>next
			<KEYWORD1>gosub
			<KEYWORD1>goto
			<KEYWORD1>if
			<KEYWORD1>inline
			<KEYWORD1>resume
			<KEYWORD1>return
			<KEYWORD1>select
			<KEYWORD1>step
			<KEYWORD1>stop
			<KEYWORD1>sub
			<KEYWORD1>then
			<KEYWORD1>to
			<KEYWORD1>until
			<!-- KEYWORD1>def fn
			<KEYWORD1>end def
			<KEYWORD1>end sub
			<KEYWORD1>wend
			<KEYWORD1>while

			<!-- draw/graphics -->
			<KEYWORD1>circle
			<KEYWORD1>draw
			<KEYWORD1>line
			<KEYWORD1>paint
			<!-- KEYWORD1>palette using
			<KEYWORD1>palette
			<KEYWORD1>peek
			<KEYWORD1>pen
			<KEYWORD1>pmap
			<KEYWORD1>point
			<KEYWORD1>poke
			<KEYWORD1>preset
			<KEYWORD1>pset
			<KEYWORD1>put
			<KEYWORD1>view
			<KEYWORD1>window

			<!-- hardware events -->
			<KEYWORD1>mtimer
			<KEYWORD1>off
			<KEYWORD1>on
			<!-- KEYWORD1>on com
			<KEYWORD1>on error
			<KEYWORD1>on key
			<KEYWORD1>on pen
			<KEYWORD1>on play
			<KEYWORD1>on strig
			<KEYWORD1>on timer
			<KEYWORD1>stick
			<KEYWORD1>strig
			<KEYWORD1>timer
			<KEYWORD1>wait

			<!--input -->
			<KEYWORD1>inkey$
			<KEYWORD1>input$
			<!-- KEYWORD1>input #
			<KEYWORD1>input
			<KEYWORD1>instat
			<!-- KEYWORD1>line input
			<KEYWORD1>read
			<KEYWORD1>restore

			<!-- keyboard -->
			<!-- KEYWORD1>key on
			<KEYWORD1>key off
			<KEYWORD1>key

			<!-- memory -->
			<KEYWORD1>clear
			<!-- KEYWORD1>def seg
			<KEYWORD1>endmem
			<KEYWORD1>erase
			<KEYWORD1>fre
			<KEYWORD1>memset
			<KEYWORD1>poke
			<KEYWORD1>seg
			<KEYWORD1>varptr$
			<KEYWORD1>varptr
			<KEYWORD1>varseg

			<!-- metastatements -->
			<KEYWORD2>$com1
			<KEYWORD2>$com2
			<KEYWORD2>$com
			<KEYWORD2>$debug
			<KEYWORD2>$dynamic
			<KEYWORD2>$event
			<KEYWORD2>$if
			<KEYWORD2>$else
			<KEYWORD2>$endif
			<KEYWORD2>$include
			<KEYWORD2>$inline
			<KEYWORD2>$list
			<KEYWORD2>$option
			<KEYWORD2>$segment
			<KEYWORD2>$sound
			<KEYWORD2>$stack
			<KEYWORD2>$static

			<!-- Miscellaneous -->
			<KEYWORD1>data
			<KEYWORD1>delay
			<KEYWORD1>reg
			<KEYWORD1>swap


			<!-- Math Functions -->
			<FUNCTION>abs
			<FUNCTION>asc
			<FUNCTION>atn
			<FUNCTION>cdbl
			<FUNCTION>ceil
			<FUNCTION>cint
			<FUNCTION>clng
			<FUNCTION>cos
			<FUNCTION>csng
			<FUNCTION>cvi
			<FUNCTION>cvl
			<FUNCTION>cvs
			<FUNCTION>cvd
			<FUNCTION>cvmd
			<FUNCTION>cvms
			<KEYWORD2>decr
			<KEYWORD2>defint
			<KEYWORD2>deflng
			<KEYWORD2>defsng
			<KEYWORD2>defdbl
			<KEYWORD2>defstr
			<FUNCTION>exp2
			<FUNCTION>exp10
			<FUNCTION>exp
			<FUNCTION>fix
			<KEYWORD2>incr
			<FUNCTION>int
			<FUNCTION>log10
			<FUNCTION>log2
			<FUNCTION>log
			<FUNCTION>mki$
			<FUNCTION>mkl$
			<FUNCTION>mks$
			<FUNCTION>mkd$
			<FUNCTION>mkmd$
			<FUNCTION>mkms$
			<KEYWORD2>randomize
			<KEYWORD2>random
			<FUNCTION>rnd
			<FUNCTION>sgn
			<FUNCTION>sin
			<FUNCTION>spc
			<FUNCTION>sqr
			<FUNCTION>tab
			<FUNCTION>tan

			<!-- output -->
			<KEYWORD1>print
			<!-- KEYWORD1>print #
			<KEYWORD1>print using
			<KEYWORD1>write

			<!-- printer -->
			<KEYWORD1>lpos
			<!-- KEYWORD1>lprint using
			<KEYWORD1>lprint

			<!-- screen -->
			<KEYWORD1>cls
			<KEYWORD1>color
			<KEYWORD1>csrlin
			<KEYWORD1>locate
			<KEYWORD1>pos
			<KEYWORD1>screen
			<KEYWORD1>width

			<!-- sound -->
			<KEYWORD1>beep
			<KEYWORD1>play
			<KEYWORD1>sound

			<!-- strings -->
			<FUNCTION>bin$
			<FUNCTION>chr$
			<FUNCTION>get$
			<FUNCTION>hex$
			<FUNCTION>instr
			<FUNCTION>lcase$
			<FUNCTION>left$
			<FUNCTION>len
			<FUNCTION>mid$
			<FUNCTION>oct$
			<FUNCTION>right$
			<FUNCTION>space$
			<FUNCTION>str$
			<FUNCTION>string$
			<FUNCTION>ucase$
			<FUNCTION>val

		</KEYWORDS>
	</RULES>
</MODE>

Other jEdit examples (source code examples)

Here is a short list of links related to this jEdit turbobasic.xml source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.