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