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