123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- " Vim syntax file
- " Language: FreeBasic
- " Maintainer: Mark Manning <markem@airmail.net>
- " Updated: 10/22/2006
- "
- " Description:
- "
- " Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
- " Updated by Mark Manning <markem@airmail.net>
- " Applied FreeBasic 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.
- "
- " 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 freebasic support both upper as well as lowercase
- " letters. - MEM 10/1/2006
- "
- syn case ignore
- "
- " This list of keywords is taken directly from the FreeBasic
- " user's guide as presented by the FreeBasic online site.
- "
- syn keyword freebasicArrays ERASE LBOUND REDIM PRESERVE UBOUND
- syn keyword freebasicBitManipulation BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD SHL SHR
- syn keyword freebasicCompilerSwitches DEFBYTE DEFDBL DEFINT DEFLNG DEFLNGINT DEFSHORT DEFSNG DEFSTR
- syn keyword freebasicCompilerSwitches DEFUBYTE DEFUINT DEFULNGINT DEFUSHORT
- syn match freebasicCompilerSwitches "\<option\s+\(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|NOKEYWORD\)\>"
- syn match freebasicCompilerSwitches "\<option\s+\(PRIVATE\|STATIC\)\>"
- syn region freebasicConditional start="\son\s+" skip=".*" end="gosub"
- syn region freebasicConditional start="\son\s+" skip=".*" end="goto"
- syn match freebasicConditional "\<select\s+case\>"
- syn keyword freebasicConditional if iif then case else elseif with
- syn match freebasicConsole "\<open\s+\(CONS\|ERR\|PIPE\|SCRN\)\>"
- syn keyword freebasicConsole BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB VIEW WIDTH
- syn keyword freebasicDataTypes BYTE AS DIM CONST DOUBLE ENUM INTEGER LONG LONGINT SHARED SHORT STRING
- syn keyword freebasicDataTypes SINGLE TYPE UBYTE UINTEGER ULONGINT UNION UNSIGNED USHORT WSTRING ZSTRING
- syn keyword freebasicDateTime DATE DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR MINUTE
- syn keyword freebasicDateTime MONTH MONTHNAME NOW SECOND SETDATE SETTIME TIME TIMESERIAL TIMEVALUE
- syn keyword freebasicDateTime TIMER YEAR WEEKDAY WEEKDAYNAME
- syn keyword freebasicDebug ASSERT STOP
- syn keyword freebasicErrorHandling ERR ERL ERROR LOCAL RESUME
- syn match freebasicErrorHandling "\<resume\s+next\>"
- syn match freebasicErrorHandling "\<on\s+error\>"
- syn match freebasicFiles "\<get\s+#\>"
- syn match freebasicFiles "\<input\s+#\>"
- syn match freebasicFiles "\<line\s+input\s+#\>"
- syn match freebasicFiles "\<put\s+#\>"
- syn keyword freebasicFiles ACCESS APPEND BINARY BLOAD BSAVE CLOSE EOF FREEFILE INPUT LOC
- syn keyword freebasicFiles LOCK LOF OPEN OUTPUT RANDOM RESET SEEK UNLOCK WRITE
- syn keyword freebasicFunctions ALIAS ANY BYREF BYVAL CALL CDECL CONSTRUCTOR DESTRUCTOR
- syn keyword freebasicFunctions DECLARE FUNCTION LIB OVERLOAD PASCAL STATIC SUB STDCALL
- syn keyword freebasicFunctions VA_ARG VA_FIRST VA_NEXT
- syn match freebasicGraphics "\<palette\s+get\>"
- syn keyword freebasicGraphics ALPHA CIRCLE CLS COLOR CUSTOM DRAW FLIP GET
- syn keyword freebasicGraphics IMAGECREATE IMAGEDESTROY LINE PAINT PALETTE PCOPY PMAP POINT
- syn keyword freebasicGraphics PRESET PSET PUT RGB RGBA SCREEN SCREENCOPY SCREENINFO SCREENLIST
- syn keyword freebasicGraphics SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC SCREENUNLOCK
- syn keyword freebasicGraphics TRANS USING VIEW WINDOW
- syn match freebasicHardware "\<open\s+com\>"
- syn keyword freebasicHardware INP OUT WAIT LPT LPOS LPRINT
- syn keyword freebasicLogical AND EQV IMP OR NOT XOR
- syn keyword freebasicMath ABS ACOS ASIN ATAN2 ATN COS EXP FIX INT LOG MOD RANDOMIZE
- syn keyword freebasicMath RND SGN SIN SQR TAN
- syn keyword freebasicMemory ALLOCATE CALLOCATE CLEAR DEALLOCATE FIELD FRE PEEK POKE REALLOCATE
- syn keyword freebasicMisc ASM DATA LET TO READ RESTORE SIZEOF SWAP OFFSETOF
- syn keyword freebasicModularizing CHAIN COMMON EXPORT EXTERN DYLIBFREE DYLIBLOAD DYLIBSYMBOL
- syn keyword freebasicModularizing PRIVATE PUBLIC
- syn keyword freebasicMultithreading MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT
- syn keyword freebasicShell CHDIR DIR COMMAND ENVIRON EXEC EXEPATH KILL NAME MKDIR RMDIR RUN
- syn keyword freebasicEnviron SHELL SYSTEM WINDOWTITLE POINTERS
- syn keyword freebasicLoops FOR LOOP WHILE WEND DO CONTINUE STEP UNTIL next
- syn match freebasicInclude "\<#\s*\(inclib\|include\)\>"
- syn match freebasicInclude "\<\$\s*include\>"
- syn keyword freebasicPointer PROCPTR PTR SADD STRPTR VARPTR
- syn keyword freebasicPredefined __DATE__ __FB_DOS__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__
- syn keyword freebasicPredefined __FB_SIGNATURE__ __FB_VERSION__ __FB_WIN32__ __FB_VER_MAJOR__
- syn keyword freebasicPredefined __FB_VER_MINOR__ __FB_VER_PATCH__ __FILE__ __FUNCTION__
- syn keyword freebasicPredefined __LINE__ __TIME__
- syn match freebasicPreProcessor "\<^#\s*\(define\|undef\)\>"
- syn match freebasicPreProcessor "\<^#\s*\(ifdef\|ifndef\|else\|elseif\|endif\|if\)\>"
- syn match freebasicPreProcessor "\<#\s*error\>"
- syn match freebasicPreProcessor "\<#\s*\(print\|dynamic\|static\)\>"
- syn keyword freebasicPreProcessor DEFINED ONCE
- syn keyword freebasicProgramFlow END EXIT GOSUB GOTO
- syn keyword freebasicProgramFlow IS RETURN SCOPE SLEEP
- syn keyword freebasicString INSTR LCASE LEFT LEN LSET LTRIM MID RIGHT RSET RTRIM
- syn keyword freebasicString SPACE STRING TRIM UCASE ASC BIN CHR CVD CVI CVL CVLONGINT
- syn keyword freebasicString CVS CVSHORT FORMAT HEX MKD MKI MKL MKLONGINT MKS MKSHORT
- syn keyword freebasicString OCT STR VAL VALLNG VALINT VALUINT VALULNG
- syn keyword freebasicTypeCasting CAST CBYTE CDBL CINT CLNG CLNGINT CPTR CSHORT CSIGN CSNG
- syn keyword freebasicTypeCasting CUBYTE CUINT CULNGINT CUNSG CURDIR CUSHORT
- syn match freebasicUserInput "\<line\s+input\>"
- syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE INKEY INPUT MULTIKEY SETMOUSE
- "
- " 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 freebasicIdentifier "\<[a-zA-Z_][a-zA-Z0-9_]*\>"
- syn match freebasicGenericFunction "\<[a-zA-Z_][a-zA-Z0-9_]*\>\s*("me=e-1,he=e-1
- "
- " Function list
- "
- syn keyword freebasicTodo contained TODO
- "
- " Catch errors caused by wrong parenthesis
- "
- syn region freebasicParen transparent start='(' end=')' contains=ALLBUT,@freebasicParenGroup
- syn match freebasicParenError ")"
- syn match freebasicInParen contained "[{}]"
- syn cluster freebasicParenGroup contains=freebasicParenError,freebasicSpecial,freebasicTodo,freebasicUserCont,freebasicUserLabel,freebasicBitField
- "
- " Integer number, or floating point number without a dot and with "f".
- "
- syn region freebasicHex start="&h" end="\W"
- syn region freebasicHexError start="&h\x*[g-zG-Z]" end="\W"
- syn match freebasicInteger "\<\d\+\(u\=l\=\|lu\|f\)\>"
- "
- " Floating point number, with dot, optional exponent
- "
- syn match freebasicFloat "\<\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=\>"
- "
- " Floating point number, starting with a dot, optional exponent
- "
- syn match freebasicFloat "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
- "
- " Floating point number, without dot, with exponent
- "
- syn match freebasicFloat "\<\d\+e[-+]\=\d\+[fl]\=\>"
- "
- " Hex number
- "
- syn case match
- syn match freebasicOctal "\<0\o*\>"
- syn match freebasicOctalError "\<0\o*[89]"
- "
- " String and Character contstants
- "
- syn region freebasicString start='"' end='"' contains=freebasicSpecial,freebasicTodo
- syn region freebasicString start="'" end="'" contains=freebasicSpecial,freebasicTodo
- "
- " Comments
- "
- syn match freebasicSpecial contained "\\."
- syn region freebasicComment start="^rem" end="$" contains=freebasicSpecial,freebasicTodo
- syn region freebasicComment start=":\s*rem" end="$" contains=freebasicSpecial,freebasicTodo
- syn region freebasicComment start="\s*'" end="$" contains=freebasicSpecial,freebasicTodo
- syn region freebasicComment start="^'" end="$" contains=freebasicSpecial,freebasicTodo
- "
- " Now do the comments and labels
- "
- syn match freebasicLabel "^\d"
- syn match freebasicLabel "\<^\w+:\>"
- syn region freebasicLineNumber start="^\d" end="\s"
- "
- " Create the clusters
- "
- syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicInteger,freebasicFloat
- syn cluster freebasicError contains=freebasicHexError,freebasicOctalError
- "
- " Used with OPEN statement
- "
- syn match freebasicFilenumber "#\d\+"
- syn match freebasicMathOperator "[\+\-\=\|\*\/\>\<\%\()[\]]" contains=freebasicParen
- "
- " The default methods for highlighting. Can be overridden later
- "
- hi def link freebasicArrays StorageClass
- hi def link freebasicBitManipulation Operator
- hi def link freebasicCompilerSwitches PreCondit
- hi def link freebasicConsole Special
- hi def link freebasicDataTypes Type
- hi def link freebasicDateTime Type
- hi def link freebasicDebug Special
- hi def link freebasicErrorHandling Special
- hi def link freebasicFiles Special
- hi def link freebasicFunctions Function
- hi def link freebasicGraphics Function
- hi def link freebasicHardware Special
- hi def link freebasicLogical Conditional
- hi def link freebasicMath Function
- hi def link freebasicMemory Function
- hi def link freebasicMisc Special
- hi def link freebasicModularizing Special
- hi def link freebasicMultithreading Special
- hi def link freebasicShell Special
- hi def link freebasicEnviron Special
- hi def link freebasicPointer Special
- hi def link freebasicPredefined PreProc
- hi def link freebasicPreProcessor PreProc
- hi def link freebasicProgramFlow Statement
- hi def link freebasicString String
- hi def link freebasicTypeCasting Type
- hi def link freebasicUserInput Statement
- hi def link freebasicComment Comment
- hi def link freebasicConditional Conditional
- hi def link freebasicError Error
- hi def link freebasicIdentifier Identifier
- hi def link freebasicInclude Include
- hi def link freebasicGenericFunction Function
- hi def link freebasicLabel Label
- hi def link freebasicLineNumber Label
- hi def link freebasicMathOperator Operator
- hi def link freebasicNumber Number
- hi def link freebasicSpecial Special
- hi def link freebasicTodo Todo
- let b:current_syntax = "freebasic"
- " vim: ts=8
|