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