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