1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: BASIC 3*e0e39175SBram Moolenaar" Maintainer: Doug Kearns <[email protected]> 4*e0e39175SBram Moolenaar" Previous Maintainer: Allan Kelly <[email protected]> 5*e0e39175SBram Moolenaar" Contributors: Thilo Six 6*e0e39175SBram Moolenaar" Last Change: 2015 Jan 10 7071d4279SBram Moolenaar 8071d4279SBram Moolenaar" First version based on Micro$soft QBASIC circa 1989, as documented in 9071d4279SBram Moolenaar" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989. 10071d4279SBram Moolenaar" This syntax file not a complete implementation yet. Send suggestions to the 11071d4279SBram Moolenaar" maintainer. 12071d4279SBram Moolenaar 13*e0e39175SBram Moolenaar" Prelude {{{1 1489bcfda6SBram Moolenaarif exists("b:current_syntax") 15071d4279SBram Moolenaar finish 16071d4279SBram Moolenaarendif 17071d4279SBram Moolenaar 18b6b046b2SBram Moolenaarlet s:cpo_save = &cpo 19b6b046b2SBram Moolenaarset cpo&vim 20b6b046b2SBram Moolenaar 21*e0e39175SBram Moolenaar" Keywords {{{1 22071d4279SBram Moolenaarsyn keyword basicStatement BEEP beep Beep BLOAD bload Bload BSAVE bsave Bsave 23071d4279SBram Moolenaarsyn keyword basicStatement CALL call Call ABSOLUTE absolute Absolute 24071d4279SBram Moolenaarsyn keyword basicStatement CHAIN chain Chain CHDIR chdir Chdir 25071d4279SBram Moolenaarsyn keyword basicStatement CIRCLE circle Circle CLEAR clear Clear 26071d4279SBram Moolenaarsyn keyword basicStatement CLOSE close Close CLS cls Cls COLOR color Color 27071d4279SBram Moolenaarsyn keyword basicStatement COM com Com COMMON common Common 28071d4279SBram Moolenaarsyn keyword basicStatement CONST const Const DATA data Data 29071d4279SBram Moolenaarsyn keyword basicStatement DECLARE declare Declare DEF def Def 30071d4279SBram Moolenaarsyn keyword basicStatement DEFDBL defdbl Defdbl DEFINT defint Defint 31071d4279SBram Moolenaarsyn keyword basicStatement DEFLNG deflng Deflng DEFSNG defsng Defsng 32071d4279SBram Moolenaarsyn keyword basicStatement DEFSTR defstr Defstr DIM dim Dim 33071d4279SBram Moolenaarsyn keyword basicStatement DO do Do LOOP loop Loop 34071d4279SBram Moolenaarsyn keyword basicStatement DRAW draw Draw END end End 35071d4279SBram Moolenaarsyn keyword basicStatement ENVIRON environ Environ ERASE erase Erase 36071d4279SBram Moolenaarsyn keyword basicStatement ERROR error Error EXIT exit Exit 37071d4279SBram Moolenaarsyn keyword basicStatement FIELD field Field FILES files Files 38071d4279SBram Moolenaarsyn keyword basicStatement FOR for For NEXT next Next 39071d4279SBram Moolenaarsyn keyword basicStatement FUNCTION function Function GET get Get 40071d4279SBram Moolenaarsyn keyword basicStatement GOSUB gosub Gosub GOTO goto Goto 41071d4279SBram Moolenaarsyn keyword basicStatement IF if If THEN then Then ELSE else Else 42071d4279SBram Moolenaarsyn keyword basicStatement INPUT input Input INPUT# input# Input# 43071d4279SBram Moolenaarsyn keyword basicStatement IOCTL ioctl Ioctl KEY key Key 44071d4279SBram Moolenaarsyn keyword basicStatement KILL kill Kill LET let Let 45071d4279SBram Moolenaarsyn keyword basicStatement LINE line Line LOCATE locate Locate 46071d4279SBram Moolenaarsyn keyword basicStatement LOCK lock Lock UNLOCK unlock Unlock 47071d4279SBram Moolenaarsyn keyword basicStatement LPRINT lprint Lprint USING using Using 48071d4279SBram Moolenaarsyn keyword basicStatement LSET lset Lset MKDIR mkdir Mkdir 49071d4279SBram Moolenaarsyn keyword basicStatement NAME name Name ON on On 50071d4279SBram Moolenaarsyn keyword basicStatement ERROR error Error OPEN open Open 51071d4279SBram Moolenaarsyn keyword basicStatement OPTION option Option BASE base Base 52071d4279SBram Moolenaarsyn keyword basicStatement OUT out Out PAINT paint Paint 53071d4279SBram Moolenaarsyn keyword basicStatement PALETTE palette Palette PCOPY pcopy Pcopy 54071d4279SBram Moolenaarsyn keyword basicStatement PEN pen Pen PLAY play Play 55071d4279SBram Moolenaarsyn keyword basicStatement PMAP pmap Pmap POKE poke Poke 56071d4279SBram Moolenaarsyn keyword basicStatement PRESET preset Preset PRINT print Print 57071d4279SBram Moolenaarsyn keyword basicStatement PRINT# print# Print# USING using Using 58071d4279SBram Moolenaarsyn keyword basicStatement PSET pset Pset PUT put Put 59071d4279SBram Moolenaarsyn keyword basicStatement RANDOMIZE randomize Randomize READ read Read 60071d4279SBram Moolenaarsyn keyword basicStatement REDIM redim Redim RESET reset Reset 61071d4279SBram Moolenaarsyn keyword basicStatement RESTORE restore Restore RESUME resume Resume 62071d4279SBram Moolenaarsyn keyword basicStatement RETURN return Return RMDIR rmdir Rmdir 63071d4279SBram Moolenaarsyn keyword basicStatement RSET rset Rset RUN run Run 64071d4279SBram Moolenaarsyn keyword basicStatement SEEK seek Seek SELECT select Select 65071d4279SBram Moolenaarsyn keyword basicStatement CASE case Case SHARED shared Shared 66071d4279SBram Moolenaarsyn keyword basicStatement SHELL shell Shell SLEEP sleep Sleep 67071d4279SBram Moolenaarsyn keyword basicStatement SOUND sound Sound STATIC static Static 68071d4279SBram Moolenaarsyn keyword basicStatement STOP stop Stop STRIG strig Strig 69071d4279SBram Moolenaarsyn keyword basicStatement SUB sub Sub SWAP swap Swap 70071d4279SBram Moolenaarsyn keyword basicStatement SYSTEM system System TIMER timer Timer 71071d4279SBram Moolenaarsyn keyword basicStatement TROFF troff Troff TRON tron Tron 72071d4279SBram Moolenaarsyn keyword basicStatement TYPE type Type UNLOCK unlock Unlock 73071d4279SBram Moolenaarsyn keyword basicStatement VIEW view View WAIT wait Wait 74071d4279SBram Moolenaarsyn keyword basicStatement WHILE while While WEND wend Wend 75071d4279SBram Moolenaarsyn keyword basicStatement WIDTH width Width WINDOW window Window 76071d4279SBram Moolenaarsyn keyword basicStatement WRITE write Write DATE$ date$ Date$ 77071d4279SBram Moolenaarsyn keyword basicStatement MID$ mid$ Mid$ TIME$ time$ Time$ 78071d4279SBram Moolenaar 79071d4279SBram Moolenaarsyn keyword basicFunction ABS abs Abs ASC asc Asc 80071d4279SBram Moolenaarsyn keyword basicFunction ATN atn Atn CDBL cdbl Cdbl 81071d4279SBram Moolenaarsyn keyword basicFunction CINT cint Cint CLNG clng Clng 82071d4279SBram Moolenaarsyn keyword basicFunction COS cos Cos CSNG csng Csng 83071d4279SBram Moolenaarsyn keyword basicFunction CSRLIN csrlin Csrlin CVD cvd Cvd 84071d4279SBram Moolenaarsyn keyword basicFunction CVDMBF cvdmbf Cvdmbf CVI cvi Cvi 85071d4279SBram Moolenaarsyn keyword basicFunction CVL cvl Cvl CVS cvs Cvs 86071d4279SBram Moolenaarsyn keyword basicFunction CVSMBF cvsmbf Cvsmbf EOF eof Eof 87071d4279SBram Moolenaarsyn keyword basicFunction ERDEV erdev Erdev ERL erl Erl 88071d4279SBram Moolenaarsyn keyword basicFunction ERR err Err EXP exp Exp 89071d4279SBram Moolenaarsyn keyword basicFunction FILEATTR fileattr Fileattr FIX fix Fix 90071d4279SBram Moolenaarsyn keyword basicFunction FRE fre Fre FREEFILE freefile Freefile 91071d4279SBram Moolenaarsyn keyword basicFunction INP inp Inp INSTR instr Instr 92071d4279SBram Moolenaarsyn keyword basicFunction INT int Int LBOUND lbound Lbound 93071d4279SBram Moolenaarsyn keyword basicFunction LEN len Len LOC loc Loc 94071d4279SBram Moolenaarsyn keyword basicFunction LOF lof Lof LOG log Log 95071d4279SBram Moolenaarsyn keyword basicFunction LPOS lpos Lpos PEEK peek Peek 96071d4279SBram Moolenaarsyn keyword basicFunction PEN pen Pen POINT point Point 97071d4279SBram Moolenaarsyn keyword basicFunction POS pos Pos RND rnd Rnd 98071d4279SBram Moolenaarsyn keyword basicFunction SADD sadd Sadd SCREEN screen Screen 99071d4279SBram Moolenaarsyn keyword basicFunction SEEK seek Seek SETMEM setmem Setmem 100071d4279SBram Moolenaarsyn keyword basicFunction SGN sgn Sgn SIN sin Sin 101071d4279SBram Moolenaarsyn keyword basicFunction SPC spc Spc SQR sqr Sqr 102071d4279SBram Moolenaarsyn keyword basicFunction STICK stick Stick STRIG strig Strig 103071d4279SBram Moolenaarsyn keyword basicFunction TAB tab Tab TAN tan Tan 104071d4279SBram Moolenaarsyn keyword basicFunction UBOUND ubound Ubound VAL val Val 105071d4279SBram Moolenaarsyn keyword basicFunction VALPTR valptr Valptr VALSEG valseg Valseg 106071d4279SBram Moolenaarsyn keyword basicFunction VARPTR varptr Varptr VARSEG varseg Varseg 107071d4279SBram Moolenaarsyn keyword basicFunction CHR$ Chr$ chr$ COMMAND$ command$ Command$ 108071d4279SBram Moolenaarsyn keyword basicFunction DATE$ date$ Date$ ENVIRON$ environ$ Environ$ 109071d4279SBram Moolenaarsyn keyword basicFunction ERDEV$ erdev$ Erdev$ HEX$ hex$ Hex$ 110071d4279SBram Moolenaarsyn keyword basicFunction INKEY$ inkey$ Inkey$ INPUT$ input$ Input$ 111071d4279SBram Moolenaarsyn keyword basicFunction IOCTL$ ioctl$ Ioctl$ LCASES$ lcases$ Lcases$ 112071d4279SBram Moolenaarsyn keyword basicFunction LAFT$ laft$ Laft$ LTRIM$ ltrim$ Ltrim$ 113071d4279SBram Moolenaarsyn keyword basicFunction MID$ mid$ Mid$ MKDMBF$ mkdmbf$ Mkdmbf$ 114071d4279SBram Moolenaarsyn keyword basicFunction MKD$ mkd$ Mkd$ MKI$ mki$ Mki$ 115071d4279SBram Moolenaarsyn keyword basicFunction MKL$ mkl$ Mkl$ MKSMBF$ mksmbf$ Mksmbf$ 116071d4279SBram Moolenaarsyn keyword basicFunction MKS$ mks$ Mks$ OCT$ oct$ Oct$ 117071d4279SBram Moolenaarsyn keyword basicFunction RIGHT$ right$ Right$ RTRIM$ rtrim$ Rtrim$ 118071d4279SBram Moolenaarsyn keyword basicFunction SPACE$ space$ Space$ STR$ str$ Str$ 119071d4279SBram Moolenaarsyn keyword basicFunction STRING$ string$ String$ TIME$ time$ Time$ 120071d4279SBram Moolenaarsyn keyword basicFunction UCASE$ ucase$ Ucase$ VARPTR$ varptr$ Varptr$ 121071d4279SBram Moolenaar 122*e0e39175SBram Moolenaar" Numbers {{{1 123*e0e39175SBram Moolenaar" Integer number, or floating point number without a dot. 124071d4279SBram Moolenaarsyn match basicNumber "\<\d\+\>" 125*e0e39175SBram Moolenaar" Floating point number, with dot 126071d4279SBram Moolenaarsyn match basicNumber "\<\d\+\.\d*\>" 127*e0e39175SBram Moolenaar" Floating point number, starting with a dot 128071d4279SBram Moolenaarsyn match basicNumber "\.\d\+\>" 129071d4279SBram Moolenaar 130*e0e39175SBram Moolenaar" String and Character constants {{{1 131*e0e39175SBram Moolenaarsyn match basicSpecial "\\\d\d\d\|\\." contained 132071d4279SBram Moolenaarsyn region basicString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=basicSpecial 133071d4279SBram Moolenaar 134*e0e39175SBram Moolenaar" Line numbers {{{1 135071d4279SBram Moolenaarsyn region basicLineNumber start="^\d" end="\s" 136*e0e39175SBram Moolenaar 137*e0e39175SBram Moolenaar" Data-type suffixes {{{1 138*e0e39175SBram Moolenaarsyn match basicTypeSpecifier "[a-zA-Z0-9][$%&!#]"ms=s+1 139071d4279SBram Moolenaar" Used with OPEN statement 140071d4279SBram Moolenaarsyn match basicFilenumber "#\d\+" 141*e0e39175SBram Moolenaar 142*e0e39175SBram Moolenaar" Mathematical operators {{{1 143071d4279SBram Moolenaar" syn match basicMathsOperator "[<>+\*^/\\=-]" 144071d4279SBram Moolenaarsyn match basicMathsOperator "-\|=\|[:<>+\*^/\\]\|AND\|OR" 145071d4279SBram Moolenaar 146*e0e39175SBram Moolenaar" Comments {{{1 147*e0e39175SBram Moolenaarsyn keyword basicTodo TODO FIXME XXX NOTE contained 148*e0e39175SBram Moolenaarsyn region basicComment start="^\s*\zsREM\>" start="\%(:\s*\)\@<=REM\>" end="$" contains=basicTodo 149*e0e39175SBram Moolenaarsyn region basicComment start="'" end="$" contains=basicTodo 150071d4279SBram Moolenaar 151*e0e39175SBram Moolenaar"syn sync ccomment basicComment 152*e0e39175SBram Moolenaar 153*e0e39175SBram Moolenaar" Default Highlighting {{{1 154f37506f6SBram Moolenaarhi def link basicLabel Label 155f37506f6SBram Moolenaarhi def link basicConditional Conditional 156f37506f6SBram Moolenaarhi def link basicRepeat Repeat 157f37506f6SBram Moolenaarhi def link basicLineNumber Comment 158f37506f6SBram Moolenaarhi def link basicNumber Number 159f37506f6SBram Moolenaarhi def link basicError Error 160f37506f6SBram Moolenaarhi def link basicStatement Statement 161f37506f6SBram Moolenaarhi def link basicString String 162f37506f6SBram Moolenaarhi def link basicComment Comment 163f37506f6SBram Moolenaarhi def link basicSpecial Special 164f37506f6SBram Moolenaarhi def link basicTodo Todo 165f37506f6SBram Moolenaarhi def link basicFunction Identifier 166f37506f6SBram Moolenaarhi def link basicTypeSpecifier Type 167f37506f6SBram Moolenaarhi def link basicFilenumber basicTypeSpecifier 168071d4279SBram Moolenaar"hi basicMathsOperator term=bold cterm=bold gui=bold 169071d4279SBram Moolenaar 170*e0e39175SBram Moolenaar" Postscript {{{1 171071d4279SBram Moolenaarlet b:current_syntax = "basic" 172071d4279SBram Moolenaar 173b6b046b2SBram Moolenaarlet &cpo = s:cpo_save 174b6b046b2SBram Moolenaarunlet s:cpo_save 175*e0e39175SBram Moolenaar 176*e0e39175SBram Moolenaar" vim: nowrap sw=2 sts=2 ts=8 noet fdm=marker: 177