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