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