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