xref: /vim-8.2.3635/runtime/syntax/basic.vim (revision b6b046b2)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	BASIC
3071d4279SBram Moolenaar" Maintainer:	Allan Kelly <[email protected]>
4*b6b046b2SBram Moolenaar" Last Change:  2011 Dec 25 by Thilo Six
5071d4279SBram Moolenaar
6071d4279SBram Moolenaar" First version based on Micro$soft QBASIC circa 1989, as documented in
7071d4279SBram Moolenaar" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
8071d4279SBram Moolenaar" This syntax file not a complete implementation yet.  Send suggestions to the
9071d4279SBram Moolenaar" maintainer.
10071d4279SBram Moolenaar
11071d4279SBram Moolenaar" For version 5.x: Clear all syntax items
12071d4279SBram Moolenaar" For version 6.x: Quit when a syntax file was already loaded
13071d4279SBram Moolenaarif version < 600
14071d4279SBram Moolenaar  syntax clear
15071d4279SBram Moolenaarelseif exists("b:current_syntax")
16071d4279SBram Moolenaar  finish
17071d4279SBram Moolenaarendif
18071d4279SBram Moolenaar
19*b6b046b2SBram Moolenaarlet s:cpo_save = &cpo
20*b6b046b2SBram Moolenaarset cpo&vim
21*b6b046b2SBram Moolenaar
22071d4279SBram Moolenaar" A bunch of useful BASIC keywords
23071d4279SBram Moolenaarsyn keyword basicStatement	BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave
24071d4279SBram Moolenaarsyn keyword basicStatement	CALL call Call ABSOLUTE absolute Absolute
25071d4279SBram Moolenaarsyn keyword basicStatement	CHAIN chain Chain CHDIR chdir Chdir
26071d4279SBram Moolenaarsyn keyword basicStatement	CIRCLE circle Circle CLEAR clear Clear
27071d4279SBram Moolenaarsyn keyword basicStatement	CLOSE close Close CLS cls Cls COLOR color Color
28071d4279SBram Moolenaarsyn keyword basicStatement	COM com Com COMMON common Common
29071d4279SBram Moolenaarsyn keyword basicStatement	CONST const Const DATA data Data
30071d4279SBram Moolenaarsyn keyword basicStatement	DECLARE declare Declare DEF def Def
31071d4279SBram Moolenaarsyn keyword basicStatement	DEFDBL defdbl Defdbl DEFINT defint Defint
32071d4279SBram Moolenaarsyn keyword basicStatement	DEFLNG deflng Deflng DEFSNG defsng Defsng
33071d4279SBram Moolenaarsyn keyword basicStatement	DEFSTR defstr Defstr DIM dim Dim
34071d4279SBram Moolenaarsyn keyword basicStatement	DO do Do LOOP loop Loop
35071d4279SBram Moolenaarsyn keyword basicStatement	DRAW draw Draw END end End
36071d4279SBram Moolenaarsyn keyword basicStatement	ENVIRON environ Environ ERASE erase Erase
37071d4279SBram Moolenaarsyn keyword basicStatement	ERROR error Error EXIT exit Exit
38071d4279SBram Moolenaarsyn keyword basicStatement	FIELD field Field FILES files Files
39071d4279SBram Moolenaarsyn keyword basicStatement	FOR for For NEXT next Next
40071d4279SBram Moolenaarsyn keyword basicStatement	FUNCTION function Function GET get Get
41071d4279SBram Moolenaarsyn keyword basicStatement	GOSUB gosub Gosub GOTO goto Goto
42071d4279SBram Moolenaarsyn keyword basicStatement	IF if If THEN then Then ELSE else Else
43071d4279SBram Moolenaarsyn keyword basicStatement	INPUT input Input INPUT# input# Input#
44071d4279SBram Moolenaarsyn keyword basicStatement	IOCTL ioctl Ioctl KEY key Key
45071d4279SBram Moolenaarsyn keyword basicStatement	KILL kill Kill LET let Let
46071d4279SBram Moolenaarsyn keyword basicStatement	LINE line Line LOCATE locate Locate
47071d4279SBram Moolenaarsyn keyword basicStatement	LOCK lock Lock UNLOCK unlock Unlock
48071d4279SBram Moolenaarsyn keyword basicStatement	LPRINT lprint Lprint USING using Using
49071d4279SBram Moolenaarsyn keyword basicStatement	LSET lset Lset MKDIR mkdir Mkdir
50071d4279SBram Moolenaarsyn keyword basicStatement	NAME name Name ON on On
51071d4279SBram Moolenaarsyn keyword basicStatement	ERROR error Error OPEN open Open
52071d4279SBram Moolenaarsyn keyword basicStatement	OPTION option Option BASE base Base
53071d4279SBram Moolenaarsyn keyword basicStatement	OUT out Out PAINT paint Paint
54071d4279SBram Moolenaarsyn keyword basicStatement	PALETTE palette Palette PCOPY pcopy Pcopy
55071d4279SBram Moolenaarsyn keyword basicStatement	PEN pen Pen PLAY play Play
56071d4279SBram Moolenaarsyn keyword basicStatement	PMAP pmap Pmap POKE poke Poke
57071d4279SBram Moolenaarsyn keyword basicStatement	PRESET preset Preset PRINT print Print
58071d4279SBram Moolenaarsyn keyword basicStatement	PRINT# print# Print# USING using Using
59071d4279SBram Moolenaarsyn keyword basicStatement	PSET pset Pset PUT put Put
60071d4279SBram Moolenaarsyn keyword basicStatement	RANDOMIZE randomize Randomize READ read Read
61071d4279SBram Moolenaarsyn keyword basicStatement	REDIM redim Redim RESET reset Reset
62071d4279SBram Moolenaarsyn keyword basicStatement	RESTORE restore Restore RESUME resume Resume
63071d4279SBram Moolenaarsyn keyword basicStatement	RETURN return Return RMDIR rmdir Rmdir
64071d4279SBram Moolenaarsyn keyword basicStatement	RSET rset Rset RUN run Run
65071d4279SBram Moolenaarsyn keyword basicStatement	SEEK seek Seek SELECT select Select
66071d4279SBram Moolenaarsyn keyword basicStatement	CASE case Case SHARED shared Shared
67071d4279SBram Moolenaarsyn keyword basicStatement	SHELL shell Shell SLEEP sleep Sleep
68071d4279SBram Moolenaarsyn keyword basicStatement	SOUND sound Sound STATIC static Static
69071d4279SBram Moolenaarsyn keyword basicStatement	STOP stop Stop STRIG strig Strig
70071d4279SBram Moolenaarsyn keyword basicStatement	SUB sub Sub SWAP swap Swap
71071d4279SBram Moolenaarsyn keyword basicStatement	SYSTEM system System TIMER timer Timer
72071d4279SBram Moolenaarsyn keyword basicStatement	TROFF troff Troff TRON tron Tron
73071d4279SBram Moolenaarsyn keyword basicStatement	TYPE type Type UNLOCK unlock Unlock
74071d4279SBram Moolenaarsyn keyword basicStatement	VIEW view View WAIT wait Wait
75071d4279SBram Moolenaarsyn keyword basicStatement	WHILE while While WEND wend Wend
76071d4279SBram Moolenaarsyn keyword basicStatement	WIDTH width Width WINDOW window Window
77071d4279SBram Moolenaarsyn keyword basicStatement	WRITE write Write DATE$ date$ Date$
78071d4279SBram Moolenaarsyn keyword basicStatement	MID$ mid$ Mid$ TIME$ time$ Time$
79071d4279SBram Moolenaar
80071d4279SBram Moolenaarsyn keyword basicFunction	ABS abs Abs ASC asc Asc
81071d4279SBram Moolenaarsyn keyword basicFunction	ATN atn Atn CDBL cdbl Cdbl
82071d4279SBram Moolenaarsyn keyword basicFunction	CINT cint Cint CLNG clng Clng
83071d4279SBram Moolenaarsyn keyword basicFunction	COS cos Cos CSNG csng Csng
84071d4279SBram Moolenaarsyn keyword basicFunction	CSRLIN csrlin Csrlin CVD cvd Cvd
85071d4279SBram Moolenaarsyn keyword basicFunction	CVDMBF cvdmbf Cvdmbf CVI cvi Cvi
86071d4279SBram Moolenaarsyn keyword basicFunction	CVL cvl Cvl CVS cvs Cvs
87071d4279SBram Moolenaarsyn keyword basicFunction	CVSMBF cvsmbf Cvsmbf EOF eof Eof
88071d4279SBram Moolenaarsyn keyword basicFunction	ERDEV erdev Erdev ERL erl Erl
89071d4279SBram Moolenaarsyn keyword basicFunction	ERR err Err EXP exp Exp
90071d4279SBram Moolenaarsyn keyword basicFunction	FILEATTR fileattr Fileattr FIX fix Fix
91071d4279SBram Moolenaarsyn keyword basicFunction	FRE fre Fre FREEFILE freefile Freefile
92071d4279SBram Moolenaarsyn keyword basicFunction	INP inp Inp INSTR instr Instr
93071d4279SBram Moolenaarsyn keyword basicFunction	INT int Int LBOUND lbound Lbound
94071d4279SBram Moolenaarsyn keyword basicFunction	LEN len Len LOC loc Loc
95071d4279SBram Moolenaarsyn keyword basicFunction	LOF lof Lof LOG log Log
96071d4279SBram Moolenaarsyn keyword basicFunction	LPOS lpos Lpos PEEK peek Peek
97071d4279SBram Moolenaarsyn keyword basicFunction	PEN pen Pen POINT point Point
98071d4279SBram Moolenaarsyn keyword basicFunction	POS pos Pos RND rnd Rnd
99071d4279SBram Moolenaarsyn keyword basicFunction	SADD sadd Sadd SCREEN screen Screen
100071d4279SBram Moolenaarsyn keyword basicFunction	SEEK seek Seek SETMEM setmem Setmem
101071d4279SBram Moolenaarsyn keyword basicFunction	SGN sgn Sgn SIN sin Sin
102071d4279SBram Moolenaarsyn keyword basicFunction	SPC spc Spc SQR sqr Sqr
103071d4279SBram Moolenaarsyn keyword basicFunction	STICK stick Stick STRIG strig Strig
104071d4279SBram Moolenaarsyn keyword basicFunction	TAB tab Tab TAN tan Tan
105071d4279SBram Moolenaarsyn keyword basicFunction	UBOUND ubound Ubound VAL val Val
106071d4279SBram Moolenaarsyn keyword basicFunction	VALPTR valptr Valptr VALSEG valseg Valseg
107071d4279SBram Moolenaarsyn keyword basicFunction	VARPTR varptr Varptr VARSEG varseg Varseg
108071d4279SBram Moolenaarsyn keyword basicFunction	CHR$ Chr$ chr$ COMMAND$ command$ Command$
109071d4279SBram Moolenaarsyn keyword basicFunction	DATE$ date$ Date$ ENVIRON$ environ$ Environ$
110071d4279SBram Moolenaarsyn keyword basicFunction	ERDEV$ erdev$ Erdev$ HEX$ hex$ Hex$
111071d4279SBram Moolenaarsyn keyword basicFunction	INKEY$ inkey$ Inkey$ INPUT$ input$ Input$
112071d4279SBram Moolenaarsyn keyword basicFunction	IOCTL$ ioctl$ Ioctl$ LCASES$ lcases$ Lcases$
113071d4279SBram Moolenaarsyn keyword basicFunction	LAFT$ laft$ Laft$ LTRIM$ ltrim$ Ltrim$
114071d4279SBram Moolenaarsyn keyword basicFunction	MID$ mid$ Mid$ MKDMBF$ mkdmbf$ Mkdmbf$
115071d4279SBram Moolenaarsyn keyword basicFunction	MKD$ mkd$ Mkd$ MKI$ mki$ Mki$
116071d4279SBram Moolenaarsyn keyword basicFunction	MKL$ mkl$ Mkl$ MKSMBF$ mksmbf$ Mksmbf$
117071d4279SBram Moolenaarsyn keyword basicFunction	MKS$ mks$ Mks$ OCT$ oct$ Oct$
118071d4279SBram Moolenaarsyn keyword basicFunction	RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$
119071d4279SBram Moolenaarsyn keyword basicFunction	SPACE$ space$ Space$ STR$ str$ Str$
120071d4279SBram Moolenaarsyn keyword basicFunction	STRING$ string$ String$ TIME$ time$ Time$
121071d4279SBram Moolenaarsyn keyword basicFunction	UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$
122071d4279SBram Moolenaarsyn keyword basicTodo contained	TODO
123071d4279SBram Moolenaar
124071d4279SBram Moolenaar"integer number, or floating point number without a dot.
125071d4279SBram Moolenaarsyn match  basicNumber		"\<\d\+\>"
126071d4279SBram Moolenaar"floating point number, with dot
127071d4279SBram Moolenaarsyn match  basicNumber		"\<\d\+\.\d*\>"
128071d4279SBram Moolenaar"floating point number, starting with a dot
129071d4279SBram Moolenaarsyn match  basicNumber		"\.\d\+\>"
130071d4279SBram Moolenaar
131071d4279SBram Moolenaar" String and Character contstants
132071d4279SBram Moolenaarsyn match   basicSpecial contained "\\\d\d\d\|\\."
133071d4279SBram Moolenaarsyn region  basicString		  start=+"+  skip=+\\\\\|\\"+  end=+"+  contains=basicSpecial
134071d4279SBram Moolenaar
135071d4279SBram Moolenaarsyn region  basicComment	start="REM" end="$" contains=basicTodo
136071d4279SBram Moolenaarsyn region  basicComment	start="^[ \t]*'" end="$" contains=basicTodo
137071d4279SBram Moolenaarsyn region  basicLineNumber	start="^\d" end="\s"
138071d4279SBram Moolenaarsyn match   basicTypeSpecifier  "[a-zA-Z0-9][\$%&!#]"ms=s+1
139071d4279SBram Moolenaar" Used with OPEN statement
140071d4279SBram Moolenaarsyn match   basicFilenumber  "#\d\+"
141071d4279SBram Moolenaar"syn sync ccomment basicComment
142071d4279SBram Moolenaar" syn match   basicMathsOperator "[<>+\*^/\\=-]"
143071d4279SBram Moolenaarsyn match   basicMathsOperator   "-\|=\|[:<>+\*^/\\]\|AND\|OR"
144071d4279SBram Moolenaar
145071d4279SBram Moolenaar" Define the default highlighting.
146071d4279SBram Moolenaar" For version 5.7 and earlier: only when not done already
147071d4279SBram Moolenaar" For version 5.8 and later: only when an item doesn't have highlighting yet
148071d4279SBram Moolenaarif version >= 508 || !exists("did_basic_syntax_inits")
149071d4279SBram Moolenaar  if version < 508
150071d4279SBram Moolenaar    let did_basic_syntax_inits = 1
151071d4279SBram Moolenaar    command -nargs=+ HiLink hi link <args>
152071d4279SBram Moolenaar  else
153071d4279SBram Moolenaar    command -nargs=+ HiLink hi def link <args>
154071d4279SBram Moolenaar  endif
155071d4279SBram Moolenaar
156071d4279SBram Moolenaar  HiLink basicLabel		Label
157071d4279SBram Moolenaar  HiLink basicConditional	Conditional
158071d4279SBram Moolenaar  HiLink basicRepeat		Repeat
159071d4279SBram Moolenaar  HiLink basicLineNumber	Comment
160071d4279SBram Moolenaar  HiLink basicNumber		Number
161071d4279SBram Moolenaar  HiLink basicError		Error
162071d4279SBram Moolenaar  HiLink basicStatement	Statement
163071d4279SBram Moolenaar  HiLink basicString		String
164071d4279SBram Moolenaar  HiLink basicComment		Comment
165071d4279SBram Moolenaar  HiLink basicSpecial		Special
166071d4279SBram Moolenaar  HiLink basicTodo		Todo
167071d4279SBram Moolenaar  HiLink basicFunction		Identifier
168071d4279SBram Moolenaar  HiLink basicTypeSpecifier Type
169071d4279SBram Moolenaar  HiLink basicFilenumber basicTypeSpecifier
170071d4279SBram Moolenaar  "hi basicMathsOperator term=bold cterm=bold gui=bold
171071d4279SBram Moolenaar
172071d4279SBram Moolenaar  delcommand HiLink
173071d4279SBram Moolenaarendif
174071d4279SBram Moolenaar
175071d4279SBram Moolenaarlet b:current_syntax = "basic"
176071d4279SBram Moolenaar
177*b6b046b2SBram Moolenaarlet &cpo = s:cpo_save
178*b6b046b2SBram Moolenaarunlet s:cpo_save
179071d4279SBram Moolenaar" vim: ts=8
180