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