3 " Maintainer: Allan Kelly <allan@fruitloaf.co.uk>
4 " Last Change: Tue Sep 14 14:24:23 BST 1999
6 " First version based on Micro$soft QBASIC circa 1989, as documented in
7 " 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
8 " This syntax file not a complete implementation yet. Send suggestions to the
11 " For version 5.x: Clear all syntax items
12 " For version 6.x: Quit when a syntax file was already loaded
15 elseif exists("b:current_syntax")
19 " A bunch of useful BASIC keywords
20 syn keyword basicStatement BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave
21 syn keyword basicStatement CALL call Call ABSOLUTE absolute Absolute
22 syn keyword basicStatement CHAIN chain Chain CHDIR chdir Chdir
23 syn keyword basicStatement CIRCLE circle Circle CLEAR clear Clear
24 syn keyword basicStatement CLOSE close Close CLS cls Cls COLOR color Color
25 syn keyword basicStatement COM com Com COMMON common Common
26 syn keyword basicStatement CONST const Const DATA data Data
27 syn keyword basicStatement DECLARE declare Declare DEF def Def
28 syn keyword basicStatement DEFDBL defdbl Defdbl DEFINT defint Defint
29 syn keyword basicStatement DEFLNG deflng Deflng DEFSNG defsng Defsng
30 syn keyword basicStatement DEFSTR defstr Defstr DIM dim Dim
31 syn keyword basicStatement DO do Do LOOP loop Loop
32 syn keyword basicStatement DRAW draw Draw END end End
33 syn keyword basicStatement ENVIRON environ Environ ERASE erase Erase
34 syn keyword basicStatement ERROR error Error EXIT exit Exit
35 syn keyword basicStatement FIELD field Field FILES files Files
36 syn keyword basicStatement FOR for For NEXT next Next
37 syn keyword basicStatement FUNCTION function Function GET get Get
38 syn keyword basicStatement GOSUB gosub Gosub GOTO goto Goto
39 syn keyword basicStatement IF if If THEN then Then ELSE else Else
40 syn keyword basicStatement INPUT input Input INPUT# input# Input#
41 syn keyword basicStatement IOCTL ioctl Ioctl KEY key Key
42 syn keyword basicStatement KILL kill Kill LET let Let
43 syn keyword basicStatement LINE line Line LOCATE locate Locate
44 syn keyword basicStatement LOCK lock Lock UNLOCK unlock Unlock
45 syn keyword basicStatement LPRINT lprint Lprint USING using Using
46 syn keyword basicStatement LSET lset Lset MKDIR mkdir Mkdir
47 syn keyword basicStatement NAME name Name ON on On
48 syn keyword basicStatement ERROR error Error OPEN open Open
49 syn keyword basicStatement OPTION option Option BASE base Base
50 syn keyword basicStatement OUT out Out PAINT paint Paint
51 syn keyword basicStatement PALETTE palette Palette PCOPY pcopy Pcopy
52 syn keyword basicStatement PEN pen Pen PLAY play Play
53 syn keyword basicStatement PMAP pmap Pmap POKE poke Poke
54 syn keyword basicStatement PRESET preset Preset PRINT print Print
55 syn keyword basicStatement PRINT# print# Print# USING using Using
56 syn keyword basicStatement PSET pset Pset PUT put Put
57 syn keyword basicStatement RANDOMIZE randomize Randomize READ read Read
58 syn keyword basicStatement REDIM redim Redim RESET reset Reset
59 syn keyword basicStatement RESTORE restore Restore RESUME resume Resume
60 syn keyword basicStatement RETURN return Return RMDIR rmdir Rmdir
61 syn keyword basicStatement RSET rset Rset RUN run Run
62 syn keyword basicStatement SEEK seek Seek SELECT select Select
63 syn keyword basicStatement CASE case Case SHARED shared Shared
64 syn keyword basicStatement SHELL shell Shell SLEEP sleep Sleep
65 syn keyword basicStatement SOUND sound Sound STATIC static Static
66 syn keyword basicStatement STOP stop Stop STRIG strig Strig
67 syn keyword basicStatement SUB sub Sub SWAP swap Swap
68 syn keyword basicStatement SYSTEM system System TIMER timer Timer
69 syn keyword basicStatement TROFF troff Troff TRON tron Tron
70 syn keyword basicStatement TYPE type Type UNLOCK unlock Unlock
71 syn keyword basicStatement VIEW view View WAIT wait Wait
72 syn keyword basicStatement WHILE while While WEND wend Wend
73 syn keyword basicStatement WIDTH width Width WINDOW window Window
74 syn keyword basicStatement WRITE write Write DATE$ date$ Date$
75 syn keyword basicStatement MID$ mid$ Mid$ TIME$ time$ Time$
77 syn keyword basicFunction ABS abs Abs ASC asc Asc
78 syn keyword basicFunction ATN atn Atn CDBL cdbl Cdbl
79 syn keyword basicFunction CINT cint Cint CLNG clng Clng
80 syn keyword basicFunction COS cos Cos CSNG csng Csng
81 syn keyword basicFunction CSRLIN csrlin Csrlin CVD cvd Cvd
82 syn keyword basicFunction CVDMBF cvdmbf Cvdmbf CVI cvi Cvi
83 syn keyword basicFunction CVL cvl Cvl CVS cvs Cvs
84 syn keyword basicFunction CVSMBF cvsmbf Cvsmbf EOF eof Eof
85 syn keyword basicFunction ERDEV erdev Erdev ERL erl Erl
86 syn keyword basicFunction ERR err Err EXP exp Exp
87 syn keyword basicFunction FILEATTR fileattr Fileattr FIX fix Fix
88 syn keyword basicFunction FRE fre Fre FREEFILE freefile Freefile
89 syn keyword basicFunction INP inp Inp INSTR instr Instr
90 syn keyword basicFunction INT int Int LBOUND lbound Lbound
91 syn keyword basicFunction LEN len Len LOC loc Loc
92 syn keyword basicFunction LOF lof Lof LOG log Log
93 syn keyword basicFunction LPOS lpos Lpos PEEK peek Peek
94 syn keyword basicFunction PEN pen Pen POINT point Point
95 syn keyword basicFunction POS pos Pos RND rnd Rnd
96 syn keyword basicFunction SADD sadd Sadd SCREEN screen Screen
97 syn keyword basicFunction SEEK seek Seek SETMEM setmem Setmem
98 syn keyword basicFunction SGN sgn Sgn SIN sin Sin
99 syn keyword basicFunction SPC spc Spc SQR sqr Sqr
100 syn keyword basicFunction STICK stick Stick STRIG strig Strig
101 syn keyword basicFunction TAB tab Tab TAN tan Tan
102 syn keyword basicFunction UBOUND ubound Ubound VAL val Val
103 syn keyword basicFunction VALPTR valptr Valptr VALSEG valseg Valseg
104 syn keyword basicFunction VARPTR varptr Varptr VARSEG varseg Varseg
105 syn keyword basicFunction CHR$ Chr$ chr$ COMMAND$ command$ Command$
106 syn keyword basicFunction DATE$ date$ Date$ ENVIRON$ environ$ Environ$
107 syn keyword basicFunction ERDEV$ erdev$ Erdev$ HEX$ hex$ Hex$
108 syn keyword basicFunction INKEY$ inkey$ Inkey$ INPUT$ input$ Input$
109 syn keyword basicFunction IOCTL$ ioctl$ Ioctl$ LCASES$ lcases$ Lcases$
110 syn keyword basicFunction LAFT$ laft$ Laft$ LTRIM$ ltrim$ Ltrim$
111 syn keyword basicFunction MID$ mid$ Mid$ MKDMBF$ mkdmbf$ Mkdmbf$
112 syn keyword basicFunction MKD$ mkd$ Mkd$ MKI$ mki$ Mki$
113 syn keyword basicFunction MKL$ mkl$ Mkl$ MKSMBF$ mksmbf$ Mksmbf$
114 syn keyword basicFunction MKS$ mks$ Mks$ OCT$ oct$ Oct$
115 syn keyword basicFunction RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$
116 syn keyword basicFunction SPACE$ space$ Space$ STR$ str$ Str$
117 syn keyword basicFunction STRING$ string$ String$ TIME$ time$ Time$
118 syn keyword basicFunction UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$
119 syn keyword basicTodo contained TODO
121 "integer number, or floating point number without a dot.
122 syn match basicNumber "\<\d\+\>"
123 "floating point number, with dot
124 syn match basicNumber "\<\d\+\.\d*\>"
125 "floating point number, starting with a dot
126 syn match basicNumber "\.\d\+\>"
128 " String and Character contstants
129 syn match basicSpecial contained "\\\d\d\d\|\\."
130 syn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial
132 syn region basicComment start="REM" end="$" contains=basicTodo
133 syn region basicComment start="^[ \t]*'" end="$" contains=basicTodo
134 syn region basicLineNumber start="^\d" end="\s"
135 syn match basicTypeSpecifier "[a-zA-Z0-9][\$%&!#]"ms=s+1
136 " Used with OPEN statement
137 syn match basicFilenumber "#\d\+"
138 "syn sync ccomment basicComment
139 " syn match basicMathsOperator "[<>+\*^/\\=-]"
140 syn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR"
142 " Define the default highlighting.
143 " For version 5.7 and earlier: only when not done already
144 " For version 5.8 and later: only when an item doesn't have highlighting yet
145 if version >= 508 || !exists("did_basic_syntax_inits")
147 let did_basic_syntax_inits = 1
148 command -nargs=+ HiLink hi link <args>
150 command -nargs=+ HiLink hi def link <args>
153 HiLink basicLabel Label
154 HiLink basicConditional Conditional
155 HiLink basicRepeat Repeat
156 HiLink basicLineNumber Comment
157 HiLink basicNumber Number
158 HiLink basicError Error
159 HiLink basicStatement Statement
160 HiLink basicString String
161 HiLink basicComment Comment
162 HiLink basicSpecial Special
163 HiLink basicTodo Todo
164 HiLink basicFunction Identifier
165 HiLink basicTypeSpecifier Type
166 HiLink basicFilenumber basicTypeSpecifier
167 "hi basicMathsOperator term=bold cterm=bold gui=bold
172 let b:current_syntax = "basic"