mirror of
https://github.com/neovim/neovim.git
synced 2024-12-26 06:05:06 -07:00
177 lines
6.9 KiB
VimL
177 lines
6.9 KiB
VimL
|
" Vim syntax file
|
||
|
" Language: ibasic
|
||
|
" Maintainer: Mark Manning <markem@airmail.net>
|
||
|
" Originator: Allan Kelly <Allan.Kelly@ed.ac.uk>
|
||
|
" Created: 10/1/2006
|
||
|
" Updated: 10/21/2006
|
||
|
" Description: A vim file to handle the IBasic file format.
|
||
|
" Notes:
|
||
|
" Updated by Mark Manning <markem@airmail.net>
|
||
|
" Applied IBasic support to the already excellent support for standard
|
||
|
" basic syntax (like QB).
|
||
|
"
|
||
|
" First version based on Micro$soft QBASIC circa 1989, as documented in
|
||
|
" 'Learn BASIC Now' by Halvorson&Rygmyr. Microsoft Press 1989.
|
||
|
" This syntax file not a complete implementation yet.
|
||
|
" Send suggestions to the maintainer.
|
||
|
"
|
||
|
" This version is based upon the commands found in IBasic (www.pyxia.com).
|
||
|
" MEM 10/6/2006
|
||
|
"
|
||
|
" Quit when a (custom) syntax file was already loaded (Taken from c.vim)
|
||
|
"
|
||
|
if exists("b:current_syntax")
|
||
|
finish
|
||
|
endif
|
||
|
"
|
||
|
" Be sure to turn on the "case ignore" since current versions of basic
|
||
|
" support both upper as well as lowercase letters.
|
||
|
"
|
||
|
syn case ignore
|
||
|
"
|
||
|
" A bunch of useful BASIC keywords
|
||
|
"
|
||
|
syn keyword ibasicStatement beep bload bsave call absolute chain chdir circle
|
||
|
syn keyword ibasicStatement clear close cls color com common const data
|
||
|
syn keyword ibasicStatement loop draw end environ erase error exit field
|
||
|
syn keyword ibasicStatement files function get gosub goto
|
||
|
syn keyword ibasicStatement input input# ioctl key kill let line locate
|
||
|
syn keyword ibasicStatement lock unlock lprint using lset mkdir name
|
||
|
syn keyword ibasicStatement on error open option base out paint palette pcopy
|
||
|
syn keyword ibasicStatement pen play pmap poke preset print print# using pset
|
||
|
syn keyword ibasicStatement put randomize read redim reset restore resume
|
||
|
syn keyword ibasicStatement return rmdir rset run seek screen
|
||
|
syn keyword ibasicStatement shared shell sleep sound static stop strig sub
|
||
|
syn keyword ibasicStatement swap system timer troff tron type unlock
|
||
|
syn keyword ibasicStatement view wait width window write
|
||
|
syn keyword ibasicStatement date$ mid$ time$
|
||
|
"
|
||
|
" Do the basic variables names first. This is because it
|
||
|
" is the most inclusive of the tests. Later on we change
|
||
|
" this so the identifiers are split up into the various
|
||
|
" types of identifiers like functions, basic commands and
|
||
|
" such. MEM 9/9/2006
|
||
|
"
|
||
|
syn match ibasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
|
||
|
syn match ibasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
|
||
|
"
|
||
|
" Function list
|
||
|
"
|
||
|
syn keyword ibasicBuiltInFunction abs asc atn cdbl cint clng cos csng csrlin cvd cvdmbf
|
||
|
syn keyword ibasicBuiltInFunction cvi cvl cvs cvsmbf eof erdev erl err exp fileattr
|
||
|
syn keyword ibasicBuiltInFunction fix fre freefile inp instr lbound len loc lof
|
||
|
syn keyword ibasicBuiltInFunction log lpos mod peek pen point pos rnd sadd screen seek
|
||
|
syn keyword ibasicBuiltInFunction setmem sgn sin spc sqr stick strig tab tan ubound
|
||
|
syn keyword ibasicBuiltInFunction val valptr valseg varptr varseg
|
||
|
syn keyword ibasicBuiltInFunction chr\$ command$ date$ environ$ erdev$ hex$ inkey$
|
||
|
syn keyword ibasicBuiltInFunction input$ ioctl$ lcases$ laft$ ltrim$ mid$ mkdmbf$ mkd$
|
||
|
syn keyword ibasicBuiltInFunction mki$ mkl$ mksmbf$ mks$ oct$ right$ rtrim$ space$
|
||
|
syn keyword ibasicBuiltInFunction str$ string$ time$ ucase$ varptr$
|
||
|
syn keyword ibasicTodo contained TODO
|
||
|
syn cluster ibasicFunctionCluster contains=ibasicBuiltInFunction,ibasicGenericFunction
|
||
|
|
||
|
syn keyword Conditional if else then elseif endif select case endselect
|
||
|
syn keyword Repeat for do while next enddo endwhile wend
|
||
|
|
||
|
syn keyword ibasicTypeSpecifier single double defdbl defsng
|
||
|
syn keyword ibasicTypeSpecifier int integer uint uinteger int64 uint64 defint deflng
|
||
|
syn keyword ibasicTypeSpecifier byte char string istring defstr
|
||
|
syn keyword ibasicDefine dim def declare
|
||
|
"
|
||
|
"catch errors caused by wrong parenthesis
|
||
|
"
|
||
|
syn cluster ibasicParenGroup contains=ibasicParenError,ibasicIncluded,ibasicSpecial,ibasicTodo,ibasicUserCont,ibasicUserLabel,ibasicBitField
|
||
|
syn region ibasicParen transparent start='(' end=')' contains=ALLBUT,@bParenGroup
|
||
|
syn match ibasicParenError ")"
|
||
|
syn match ibasicInParen contained "[{}]"
|
||
|
"
|
||
|
"integer number, or floating point number without a dot and with "f".
|
||
|
"
|
||
|
syn region ibasicHex start="&h" end="\W"
|
||
|
syn region ibasicHexError start="&h\x*[g-zG-Z]" end="\W"
|
||
|
syn match ibasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>"
|
||
|
"
|
||
|
"floating point number, with dot, optional exponent
|
||
|
"
|
||
|
syn match ibasicFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
|
||
|
"
|
||
|
"floating point number, starting with a dot, optional exponent
|
||
|
"
|
||
|
syn match ibasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
|
||
|
"
|
||
|
"floating point number, without dot, with exponent
|
||
|
"
|
||
|
syn match ibasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
|
||
|
"
|
||
|
"hex number
|
||
|
"
|
||
|
syn match ibasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
|
||
|
syn match ibasicFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
|
||
|
syn case match
|
||
|
syn match ibasicOctalError "\<0\o*[89]"
|
||
|
"
|
||
|
" String and Character contstants
|
||
|
"
|
||
|
syn region ibasicString start='"' end='"' contains=ibasicSpecial,ibasicTodo
|
||
|
syn region ibasicString start="'" end="'" contains=ibasicSpecial,ibasicTodo
|
||
|
"
|
||
|
" Comments
|
||
|
"
|
||
|
syn match ibasicSpecial contained "\\."
|
||
|
syn region ibasicComment start="^rem" end="$" contains=ibasicSpecial,ibasicTodo
|
||
|
syn region ibasicComment start=":\s*rem" end="$" contains=ibasicSpecial,ibasicTodo
|
||
|
syn region ibasicComment start="\s*'" end="$" contains=ibasicSpecial,ibasicTodo
|
||
|
syn region ibasicComment start="^'" end="$" contains=ibasicSpecial,ibasicTodo
|
||
|
"
|
||
|
" Now do the comments and labels
|
||
|
"
|
||
|
syn match ibasicLabel "^\d"
|
||
|
syn region ibasicLineNumber start="^\d" end="\s"
|
||
|
"
|
||
|
" Pre-compiler options : FreeBasic
|
||
|
"
|
||
|
syn region ibasicPreCondit start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=ibasicString,ibasicCharacter,ibasicNumber,ibasicCommentError,ibasicSpaceError
|
||
|
syn match ibasicInclude "^\s*#\s*include\s*"
|
||
|
"
|
||
|
" Create the clusters
|
||
|
"
|
||
|
syn cluster ibasicNumber contains=ibasicHex,ibasicInteger,ibasicFloat
|
||
|
syn cluster ibasicError contains=ibasicHexError
|
||
|
"
|
||
|
" Used with OPEN statement
|
||
|
"
|
||
|
syn match ibasicFilenumber "#\d\+"
|
||
|
"
|
||
|
"syn sync ccomment ibasicComment
|
||
|
"
|
||
|
syn match ibasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=ibasicParen
|
||
|
"
|
||
|
" The default methods for highlighting. Can be overridden later
|
||
|
"
|
||
|
hi def link ibasicLabel Label
|
||
|
hi def link ibasicConditional Conditional
|
||
|
hi def link ibasicRepeat Repeat
|
||
|
hi def link ibasicHex Number
|
||
|
hi def link ibasicInteger Number
|
||
|
hi def link ibasicFloat Number
|
||
|
hi def link ibasicError Error
|
||
|
hi def link ibasicHexError Error
|
||
|
hi def link ibasicStatement Statement
|
||
|
hi def link ibasicString String
|
||
|
hi def link ibasicComment Comment
|
||
|
hi def link ibasicLineNumber Comment
|
||
|
hi def link ibasicSpecial Special
|
||
|
hi def link ibasicTodo Todo
|
||
|
hi def link ibasicGenericFunction Function
|
||
|
hi def link ibasicBuiltInFunction Function
|
||
|
hi def link ibasicTypeSpecifier Type
|
||
|
hi def link ibasicDefine Type
|
||
|
hi def link ibasicInclude Include
|
||
|
hi def link ibasicIdentifier Identifier
|
||
|
hi def link ibasicFilenumber ibasicTypeSpecifier
|
||
|
hi def link ibasicMathOperator Operator
|
||
|
|
||
|
let b:current_syntax = "ibasic"
|
||
|
|
||
|
" vim: ts=8
|