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