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 1189bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1289bcfda6SBram 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. 14389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 144071d4279SBram Moolenaar 145*f37506f6SBram Moolenaarhi def link basicLabel Label 146*f37506f6SBram Moolenaarhi def link basicConditional Conditional 147*f37506f6SBram Moolenaarhi def link basicRepeat Repeat 148*f37506f6SBram Moolenaarhi def link basicLineNumber Comment 149*f37506f6SBram Moolenaarhi def link basicNumber Number 150*f37506f6SBram Moolenaarhi def link basicError Error 151*f37506f6SBram Moolenaarhi def link basicStatement Statement 152*f37506f6SBram Moolenaarhi def link basicString String 153*f37506f6SBram Moolenaarhi def link basicComment Comment 154*f37506f6SBram Moolenaarhi def link basicSpecial Special 155*f37506f6SBram Moolenaarhi def link basicTodo Todo 156*f37506f6SBram Moolenaarhi def link basicFunction Identifier 157*f37506f6SBram Moolenaarhi def link basicTypeSpecifier Type 158*f37506f6SBram Moolenaarhi def link basicFilenumber basicTypeSpecifier 159071d4279SBram Moolenaar"hi basicMathsOperator term=bold cterm=bold gui=bold 160071d4279SBram Moolenaar 161071d4279SBram Moolenaar 162071d4279SBram Moolenaarlet b:current_syntax = "basic" 163071d4279SBram Moolenaar 164b6b046b2SBram Moolenaarlet &cpo = s:cpo_save 165b6b046b2SBram Moolenaarunlet s:cpo_save 166071d4279SBram Moolenaar" vim: ts=8 167