summaryrefslogtreecommitdiff
path: root/uvim/runtime/syntax/freebasic.vim
diff options
context:
space:
mode:
Diffstat (limited to 'uvim/runtime/syntax/freebasic.vim')
-rw-r--r--uvim/runtime/syntax/freebasic.vim674
1 files changed, 0 insertions, 674 deletions
diff --git a/uvim/runtime/syntax/freebasic.vim b/uvim/runtime/syntax/freebasic.vim
deleted file mode 100644
index 5c43289c16..0000000000
--- a/uvim/runtime/syntax/freebasic.vim
+++ /dev/null
@@ -1,674 +0,0 @@
-" Vim syntax file
-" Language: FreeBASIC
-" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Previous Maintainer: Mark Manning <markem@sim1.us>
-" Last Change: 2023 Aug 14
-"
-" Description:
-"
-" Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk>
-" Updated by Mark Manning <markem@sim1.us>
-" 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.
-"
-" TODO: split this into separate dialect-based files, possibly with a common base
-"
-" Quit when a (custom) syntax file was already loaded (Taken from c.vim)
-"
-if exists("b:current_syntax")
- finish
-endif
-"
-" Dialect detection
-"
-let s:lang = freebasic#GetDialect()
-"
-" Whitespace Errors
-"
-if exists("freebasic_space_errors")
- if !exists("freebasic_no_trail_space_error")
- syn match freebasicSpaceError display excludenl "\s\+$"
- endif
- if !exists("freebasic_no_tab_space_error")
- syn match freebasicSpaceError display " \+\t"me=e-1
- endif
-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
-"
-" 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
-"
-if s:lang =~# '\<\%(qb\|fblite\)\>'
- syn iskeyword @,48-57,_,192-255,.
- syn match freebasicIdentifier "\<\h\%(\w\|\.\)*\>"
- syn match freebasicGenericFunction "\<\h\%(\w\|\.\)*\>\ze\s*("
-else
- syn iskeyword @,48-57,_,192-255
- syn match freebasicIdentifier "\<\h\w*\>"
- syn match freebasicGenericFunction "\<\h\w*\>\ze\s*("
-endif
-"
-" 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 PRESERVE REDIM UBOUND
-
-" array.bi
-syn keyword freebasicArrays ARRAYLEN ARRAYSIZE
-if s:lang == "fb"
- syn keyword freebasicArrays ArrayConstDescriptorPtr ArrayDescriptorPtr FBARRAY
-endif
-
-if s:lang == "qb"
- syn keyword freebasicAsm __ASM
- syn match freebasicAsm "\<end\s\+__asm\>"
-else
- syn keyword freebasicAsm ASM
- syn match freebasicAsm "\<end\s\+asm\>"
-endif
-
-if s:lang == "qb"
- syn keyword freebasicBitManipulation __BIT __BITRESET __BITSET __HIBYTE __HIWORD __LOBYTE __LOWORD
-else
- syn keyword freebasicBitManipulation BIT BITRESET BITSET HIBYTE HIWORD LOBYTE LOWORD
-endif
-
-if s:lang != "fb"
- syn keyword freebasicCompilerSwitches DEFDBL DEFINT DEFLNG DEFSNG DEFSTR
-endif
-if s:lang == "qb"
- syn keyword freebasicCompilerSwitches __DEFBYTE __DEFLONGINT __DEFSHORT __DEFUBYTE __DEFUINT __DEFULONGINT __DEFUSHORT
-elseif s:lang == "fblite" || s:lang == "deprecated"
- syn keyword freebasicCompilerSwitches DEFBYTE DEFLONGINT DEFSHORT DEFUBYTE DEFUINT DEFUILONGINT DEFUSHORT
-endif
-
-syn match freebasicCompilerSwitches "\<option\s\+\%(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|GOSUB\|NOGOSUB\)\>"
-syn match freebasicCompilerSwitches "\<option\s\+\%(NOKEYWORD\|PRIVATE\|STATIC\)\>"
-
-syn keyword freebasicData DATA READ RESTORE
-
-syn keyword freebasicProgramFlow EXIT GOTO RETURN SLEEP
-syn match freebasicProgramFlow "\<end\>"
-if s:lang == "qb"
- syn keyword freebasicProgramFlow __SLEEP
-endif
-if s:lang == "fblite" || s:lang == "qb"
- syn keyword freebasicProgramFlow GOSUB
-endif
-if s:lang == "fb" || s:lang == "deprecated"
- syn keyword freebasicProgramFlow SCOPE
- syn match freebasicProgramFlow "\<end\s\+scope\>"
-endif
-
-if s:lang == "fblite" || s:lang == "qb"
- syn region freebasicConditional matchgroup=freebasicConditional start="\<on\>" end="\<gosub\>" transparent
- syn region freebasicConditional matchgroup=freebasicConditional start="\<on\>" end="\<goto\>" transparent
-endif
-syn keyword freebasicConditional IF THEN ELSE ELSEIF
-if s:lang == "qb"
- syn keyword freebasicConditional __IIF __WITH
- syn match freebasicConditional "\<end\s\+__with\>"
-else
- syn keyword freebasicConditional IIF WITH
- syn match freebasicConditional "\<end\s\+with\>"
-endif
-syn match freebasicConditional "\<end\s\+if\>"
-syn match freebasicConditional "\<select\s\+case\>"
-syn match freebasicConditional "\<case\>"
-syn match freebasicConditional "\<case\s\+is\>"
-syn match freebasicConditional "\<end\s\+select\>"
-
-syn keyword freebasicConsole BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB USING VIEW WIDTH
-syn match freebasicConsole "?"
-
-syn keyword freebasicDataTypes SINGLE DOUBLE INTEGER LONG
-syn match freebasicDataTypes "\<string\>"
-syn keyword freebasicDataTypes AS DIM CONST ENUM SHARED TYPE
-syn match freebasicDataTypes "\<end\s\+enum\>"
-syn match freebasicDataTypes "\<end\s\+type\>"
-if s:lang == "qb"
- syn keyword freebasicDataTypes __BOOLEAN __BYTE __LONGINT __SHORT __UBYTE __UINTEGER __ULONG __ULONGINT __UNSIGNED __USHORT __ZSTRING
- syn match freebasicDataTypes "\<__WSTRING\>"
- syn keyword freebasicDataTypes __EXPLICIT __EXTENDS __IMPLEMENTS __OBJECT __POINTER __PTR __SIZEOF __TYPEOF
- syn keyword freebasicDataTypes __UNION
- syn match freebasicDataTypes "\<end\s\+__union\>"
-else
- syn keyword freebasicDataTypes BOOLEAN BYTE LONGINT SHORT UBYTE UINTEGER ULONG ULONGINT UNSIGNED USHORT ZSTRING
- syn match freebasicDataTypes "\<WSTRING\>"
- syn keyword freebasicDataTypes EXPLICIT EXTENDS IMPLEMENTS OBJECT POINTER PTR SIZEOF TYPEOF
- syn keyword freebasicDataTypes UNION
- syn match freebasicDataTypes "\<end\s\+union\>"
-endif
-if s:lang == "fb"
- syn keyword freebasicDataTypes BASE CLASS THIS VAR
-endif
-
-if s:lang == "qb"
- syn match freebasicDateTime "\<\%(date\|time\)\$"
-elseif s:lang == "fblite" || s:lang == "deprecated"
- syn match freebasicDateTime "\<\%(date\|time\)\>\$\="
-else " fb
- syn keyword freebasicDateTime DATE TIME
-endif
-syn keyword freebasicDateTime SETDATE SETTIME
-
-" datetime.bi
-syn keyword freebasicDateTime DATEADD DATEDIFF DATEPART DATESERIAL DATEVALUE DAY HOUR ISDATE MINUTE
-syn keyword freebasicDateTime MONTH MONTHNAME NOW SECOND TIMESERIAL TIMEVALUE
-syn keyword freebasicDateTime TIMER YEAR WEEKDAY WEEKDAYNAME
-
-syn keyword freebasicDebug STOP
-if s:lang == "qb"
- syn keyword freebasicDebug __ASSERT __ASSERTWARN
-else
- syn keyword freebasicDebug ASSERT ASSERTWARN
-endif
-
-syn keyword freebasicErrorHandling ERR ERL ERROR
-if s:lang == "qb"
- syn keyword freebasicErrorHandling __ERFN __ERMN
- syn match freebasicErrorHandling "\<on\s\+error\>"
-else
- syn keyword freebasicErrorHandling ERFN ERMN
- syn match freebasicErrorHandling "\<on\s\+\%(local\s\+\)\=error\>"
-endif
-if s:lang != "fb"
- syn match freebasicErrorHandling "\<resume\%(\s\+next\)\=\>"
-endif
-
-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 CLOSE EOF FREEFILE INPUT LOC
-syn keyword freebasicFiles LOCK LOF OUTPUT RANDOM RESET SEEK UNLOCK WRITE
-syn match freebasicFiles "\<open\>"
-if s:lang == "qb"
- syn keyword freebasicFiles __ENCODING
-else
- syn keyword freebasicFiles ENCODING WINPUT
- syn match freebasicFiles "\<open\s\+\%(cons\|err\|pipe\|scrn\)\>"
-endif
-
-" file.bi
-syn keyword freebasicFiles FILEATTR FILECOPY FILEDATETIME FILEEXISTS FILEFLUSH FILELEN FILESETEOF
-
-syn keyword freebasicFunctions ALIAS BYREF BYVAL CDECL DECLARE LIB NAKED PASCAL STATIC STDCALL
-syn match freebasicFunctions "\<option\ze\s*("
-
-if s:lang == "qb"
- syn keyword freebasicFunctions __CVA_ARG __CVA_COPY __CVA_END __CVA_LIST __CVA_START
- syn keyword freebasicFunctions __VA_ARG __VA_FIRST __VA_NEXT
-else
- syn keyword freebasicFunctions CVA_ARG CVA_COPY CVA_END CVA_LIST CVA_START
- syn keyword freebasicFunctions VA_ARG VA_FIRST VA_NEXT
- syn keyword freebasicFunctions ANY OVERLOAD
-endif
-
-syn keyword freebasicFunctions FUNCTION SUB
-syn match freebasicFunctions "\<end\s\+function\>"
-syn match freebasicFunctions "\<end\s\+sub\>"
-
-if s:lang == "fb"
- syn keyword freebasicFunctions ABSTRACT OVERRIDE VIRTUAL __THISCALL
- syn keyword freebasicFunctions CONSTRUCTOR DESTRUCTOR OPERATOR PROPERTY
- syn match freebasicFunctions "\<end\s\+constructor\>"
- syn match freebasicFunctions "\<end\s\+destructor\>"
- syn match freebasicFunctions "\<end\s\+operator\>"
- syn match freebasicFunctions "\<end\s\+property\>"
-else
- syn keyword freebasicFunctions CALL
-endif
-
-syn match freebasicGraphics "\<palette\s\+get\>"
-syn keyword freebasicGraphics ADD ALPHA BLOAD BSAVE CIRCLE CLS COLOR DRAW GET
-syn keyword freebasicGraphics LINE PAINT PALETTE PCOPY PMAP POINT
-syn keyword freebasicGraphics PRESET PSET PUT SCREEN
-syn keyword freebasicGraphics TRANS WINDOW
-if s:lang == "qb"
- syn keyword freebasicGraphics __FLIP __IMAGECONVERTROW __IMAGECREATE __IMAGEDESTROY __IMAGEINFO __POINTCOORD
- syn keyword freebasicGraphics __RGB __RGBA __SCREENCOPY __SCREENCONTROL __SCREENEVENT __SCREENGLPROC __SCREENINFO
- syn keyword freebasicGraphics __SCREENLIST __SCREENLOCK __SCREENPTR __SCREENRES __SCREENSET __SCREENSYNC
- syn keyword freebasicGraphics __SCREENUNLOCK __WINDOWTITLE
-else
- syn keyword freebasicGraphics CUSTOM
- syn keyword freebasicGraphics FLIP IMAGECONVERTROW IMAGECREATE IMAGEDESTROY IMAGEINFO POINTCOORD
- syn keyword freebasicGraphics RGB RGBA SCREENCOPY SCREENCONTROL SCREENEVENT SCREENGLPROC SCREENINFO
- syn keyword freebasicGraphics SCREENLIST SCREENLOCK SCREENPTR SCREENRES SCREENSET SCREENSYNC
- syn keyword freebasicGraphics SCREENUNLOCK WINDOWTITLE
-endif
-
-if s:lang != "qb"
- syn match freebasicHardware "\<open\s\+\%(com\|lpt\)\>"
-endif
-syn keyword freebasicHardware INP OUT WAIT LPOS LPRINT
-
-syn keyword freebasicMath ABS ATN COS EXP FIX FRAC INT LOG MOD RANDOMIZE RND SGN SIN SQR TAN
-
-if s:lang == "qb"
- syn keyword freebasicMath __ACOS __ASIN __ATAN2
-else
- syn keyword freebasicMath ACOS ASIN ATAN2
-endif
-
-if s:lang == "qb"
- syn keyword freebasicMemory __ALLOCATE __CALLOCATE __DEALLOCATE __REALLOCATE
-else
- syn keyword freebasicMemory ALLOCATE CALLOCATE DEALLOCATE REALLOCATE
- syn keyword freebasicMemory PEEK POKE CLEAR FB_MEMCOPY FB_MEMCOPYCLEAR FB_MEMMOVE SWAP SADD
- syn keyword freebasicMemory FIELD FRE
-endif
-
-syn keyword freebasicMisc LET TO
-if s:lang == "qb"
- syn keyword freebasicMisc __OFFSETOF
-else
- syn keyword freebasicMisc OFFSETOF
-endif
-
-syn keyword freebasicModularizing CHAIN COMMON
-if s:lang == "fb"
- syn keyword freebasicModularizing EXTERN
- syn match freebasicModularizing "\<end\s\+extern\>"
- syn keyword freebasicModularizing PROTECTED
-endif
-if s:lang == "qb"
- syn keyword freebasicModularizing __EXPORT __IMPORT __DYLIBFREE __DYLIBLOAD __DYLIBSYMBOL
-else
- syn keyword freebasicModularizing EXPORT IMPORT DYLIBFREE DYLIBLOAD DYLIBSYMBOL
- syn keyword freebasicModularizing PRIVATE PUBLIC
- syn keyword freebasicModularizing NAMESPACE
- syn match freebasicModularizing "\<end\s\+namespace\>"
-endif
-
-if s:lang != "qb"
- syn keyword freebasicMultithreading MUTEXCREATE MUTEXDESTROY MUTEXLOCK MUTEXUNLOCK THREADCREATE THREADWAIT
- syn keyword freebasicMultithreading CONDBROADCAST CONDCREATE CONDDESTROY CONDSIGNAL CONDWAIT
- syn keyword freebasicMultithreading THREADCALL THREADDETACH THREADSELF
-endif
-
-syn keyword freebasicShell CHDIR KILL NAME MKDIR RMDIR RUN SETENVIRON
-if s:lang == "qb"
- syn keyword freebasicShell __CURDIR __DIR __EXEC __EXEPATH
- syn match freebasicString "\<\%(command\|environ\)\$"
-else
- " fbio.bi
- syn keyword freebasicShell ISREDIRECTED
- syn keyword freebasicShell CURDIR DIR EXEC EXEPATH
- syn match freebasicString "\<\%(command\|environ\)\>\$\="
-endif
-
-syn keyword freebasicEnviron SHELL SYSTEM
-
-syn keyword freebasicLoops FOR LOOP WHILE WEND DO STEP UNTIL NEXT
-if s:lang == "qb"
- syn keyword freebasicLoops __CONTINUE
-else
- syn keyword freebasicLoops CONTINUE
-endif
-"
-" File numbers
-"
-syn match freebasicFilenumber "#\d\+"
-syn match freebasicFilenumber "#\a[[:alpha:].]*[%&!#]\="
-
-syn match freebasicMetacommand "$\s*\%(dynamic\|static\)"
-syn match freebasicMetacommand "$\s*include\s*\%(once\)\=\s*:\s*'[^']\+'"
-syn match freebasicMetacommand '$\s*include\s*\%(once\)\=\s*:\s*"[^"]\+"'
-syn match freebasicMetacommand '$\s*lang\s*:\s*"[^"]\+"'
-"
-" Intrinsic defines
-"
-syn keyword freebasicPredefined __DATE__ __DATE_ISO__
-syn keyword freebasicPredefined __FB_64BIT__ __FB_ARGC__ __FB_ARG_COUNT__ __FB_ARG_EXTRACT__ __FB_ARG_LEFTOF__
-syn keyword freebasicPredefined __FB_ARG_RIGHTOF__ __FB_ARGV__ __FB_ARM__ __FB_ASM__ __FB_BACKEND__
-syn keyword freebasicPredefined __FB_BIGENDIAN__ __FB_BUILD_DATE__ __FB_BUILD_DATE_ISO__ __FB_BUILD_SHA1__
-syn keyword freebasicPredefined __FB_CYGWIN__ __FB_DARWIN__ __FB_DEBUG__ __FB_DOS__ __FB_ERR__ __FB_EVAL__
-syn keyword freebasicPredefined __FB_FPMODE__ __FB_FPU__ __FB_FREEBSD__ __FB_GCC__ __FB_GUI__ __FB_IIF__ __FB_JOIN__
-syn keyword freebasicPredefined __FB_LANG__ __FB_LINUX__ __FB_MAIN__ __FB_MIN_VERSION__ __FB_MT__ __FB_NETBSD__
-syn keyword freebasicPredefined __FB_OPENBSD__ __FB_OPTIMIZE__ __FB_OPTION_BYVAL__ __FB_OPTION_DYNAMIC__
-syn keyword freebasicPredefined __FB_OPTION_ESCAPE__ __FB_OPTION_EXPLICIT__ __FB_OPTION_GOSUB__
-syn keyword freebasicPredefined __FB_OPTION_PRIVATE__ __FB_OUT_DLL__ __FB_OUT_EXE__ __FB_OUT_LIB__ __FB_OUT_OBJ__
-syn keyword freebasicPredefined __FB_PCOS__ __FB_PPC__ __FB_QUERY_SYMBOL__ __FB_QUOTE__ __FB_SIGNATURE__ __FB_SSE__
-syn keyword freebasicPredefined __FB_UNIQUEID__ __FB_UNIQUEID_POP__ __FB_UNIQUEID_PUSH__ __FB_UNIX__ __FB_UNQUOTE__
-syn keyword freebasicPredefined __FB_VECTORIZE__ __FB_VER_MAJOR__ __FB_VER_MINOR__ __FB_VER_PATCH__ __FB_VERSION__
-syn keyword freebasicPredefined __FB_WIN32__ __FB_X86__ __FB_XBOX__
-syn keyword freebasicPredefined __FILE__ __FILE_NQ__ __FUNCTION__ __FUNCTION_NQ__
-syn keyword freebasicPredefined __LINE__ __PATH__ __TIME__
-"
-" Preprocessor directives
-"
-syn match freebasicInclude "#\s*\%(inclib\|include\%(\s\+once\)\=\|libpath\)\>"
-
-syn match freebasicPreProcessor "#\s*assert\>"
-syn match freebasicPreProcessor "#\s*cmdline\>"
-syn match freebasicPreProcessor "#\s*\%(define\|undef\)\>"
-syn match freebasicPreProcessor "#\s*\%(if\|ifdef\|ifndef\|else\|elseif\|endif\)\>"
-syn match freebasicPreProcessor "#\s*\%(macro\|endmacro\)\>"
-syn match freebasicPreProcessor "#\s*error\>"
-syn match freebasicPreProcessor "#\s*lang\>"
-syn match freebasicPreProcessor "#\s*line\>"
-syn match freebasicPreProcessor "#\s*pragma\%(\s\+reserve\)\=\>"
-syn match freebasicPreProcessor "#\s*\%(print\|dynamic\|static\)\>"
-syn keyword freebasicPreProcessor DEFINED
-
-syn keyword freebasicString LEN
-syn keyword freebasicString ASC
-" string.bi
-syn keyword freebasicString FORMAT
-syn keyword freebasicString VAL
-syn keyword freebasicString CVD CVI CVL CVS
-syn keyword freebasicString INSTR
-syn keyword freebasicString LSET RSET
-
-if s:lang == "qb"
- syn match freebasicString "\<string\$\ze\s*("
- syn match freebasicString "\<__wstring\ze\s*("
- syn match freebasicString "\<space\$"
- syn keyword freebasicString __WSPACE
- syn match freebasicString "\<chr\$"
- syn keyword freebasicString __WCHR
- syn keyword freebasicString __WBIN __WHEX __WOCT __WSTR
- syn match freebasicString "\<\%(bin\|hex\|oct\|str\)\$"
- syn keyword freebasicString __VALLNG __VALINT __VALUINT __VALULNG
- syn match freebasicString "\<\%(mkd\|mki\|mkl\|mks\)\$"
- syn keyword freebasicString __MKLONGINT __MKSHORT
- syn keyword freebasicString __CVLONGINT __CVSHORT
- syn match freebasicString "\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\$"
- syn keyword freebasicString __TRIM
- syn keyword freebasicString __INSTRREV
-else
- syn match freebasicString "\<string\$\=\ze\s*("
- syn match freebasicString "\<wstring\ze\s*("
- syn match freebasicString "\<space\>\$\="
- syn keyword freebasicString WSPACE
- syn match freebasicString "\<chr\>\$\="
- syn keyword freebasicString WCHR
- syn keyword freebasicString WBIN WHEX WOCT WSTR
- syn match freebasicString "\<\%(bin\|hex\|oct\|str\)\>\$\="
- syn keyword freebasicString VALLNG VALINT VALUINT VALULNG
- syn match freebasicString "\<\%(mkd\|mki\|mkl\|mks\)\>\$\="
- syn match freebasicString "\<\%(mklongint\|mkshort\)\>\$\="
- syn keyword freebasicString CVLONGINT CVSHORT
- syn match freebasicString "\<\%(left\|mid\|right\|lcase\|ucase\|ltrim\|rtrim\)\>\$\="
- syn match freebasicString "\<trim\>\$\="
- syn keyword freebasicString INSTRREV
-endif
-
-syn keyword freebasicTypeCasting CDBL CINT CLNG CSNG
-if s:lang == "qb"
- syn keyword freebasicTypeCasting __CAST __CBOOL __CBYTE __CLNGINT __CPTR __CSHORT __CSIGN __CYBTE __CUINT __CULNG
- syn keyword freebasicTypeCasting __CULNGINT __CUNSG __CUSHORT
-else
- syn keyword freebasicTypeCasting CAST CBOOL CBYTE CLNGINT CPTR CSHORT CSIGN CUBYTE CUINT CULNG CULNGINT CUNSG CUSHORT
-endif
-
-syn match freebasicUserInput "\<line\s\+input\>"
-syn keyword freebasicUserInput INKEY INPUT
-if s:lang == "qb"
- syn keyword freebasicUserInput __GETJOYSTICK __GETKEY __GETMOUSE __MULTIKEY __SETMOUSE STICK STRIG
-else
- syn keyword freebasicUserInput GETJOYSTICK GETKEY GETMOUSE MULTIKEY SETMOUSE
-endif
-"
-" Operators
-"
-" TODO: make these context sensitive to remove the overlap of common operators
-" : alpha operators should probably always be highlighted
-" -- DJK 20/11/19
-if s:lang == "qb"
- syn match freebasicArithmeticOperator "\<\%(MOD\|__SHL\|__SHR\)\>"
-else
- syn match freebasicArithmeticOperator "\<\%(MOD\|SHL\|SHR\)\>"
-endif
-syn match freebasicBitwiseOperator "\<\%(AND\|EQV\|IMP\|NOT\|OR\|XOR\)\>" " freebaseLogical?
-if s:lang == "qb"
- syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=\@=" " exclude trailing '='
-else
- syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)=\@="
-endif
-syn match freebasicShortcircuitOperator "\<\%(ANDALSO\|ORELSE\)\>"
-if s:lang == "fb"
- syn match freebasicMemoryOperator '\<\%(new\|delete\)\>'
-endif
-syn keyword freebasicPointerOperator STRPTR VARPTR
-if s:lang == "qb"
- syn keyword freebasicPointerOperator __PROCPTR
-else
- syn keyword freebasicPointerOperator PROCPTR
-endif
-syn match freebasicTypeOperator '\<is\>'
-syn match freebasicTypeOperator '\.' nextgroup=freebasicIdentifier skipwhite
-if s:lang == "fb"
- syn match freebasicTypeOperator '->' nextgroup=freebasicIdentifier skipwhite
-endif
-
-if exists("freebasic_operators")
- syn match freebasicAssignmentOperator "=>\=\|[-+&/\\*^]="
- if s:lang == "qb"
- syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|__SHL\|__SHR\)=" " include trailing '='
- else
- syn match freebasicAssignmentOperator "\<\%(MOD\|AND\|EQV\|IMP\|OR\|XOR\|SHL\|SHR\)="
- endif
- syn match freebasicArithmeticOperator "[-+&/\\*^]"
- " syn match freebasicIndexingOperator "[[\]()]" " FIXME
- syn match freebasicRelationalOperator "=\|<>\|<=\|<\|>=\|>"
- syn match freebasicPreprocessorOperator '\%(^\s*\)\@<!\%(##\|#\)\|[$!]"\@='
- syn match freebasicPointerOperator '[@*]'
- syn match freebasicTypeOperator '\.' nextgroup=freebasicIdentifier skipwhite
- if s:lang == "fb"
- syn match freebasicTypeOperator '->' nextgroup=freebasicIdentifier skipwhite
- endif
-endif
-
-syn cluster freebasicOperator contains=freebasic.*Operator
-"
-" 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
-"
-syn match freebasicHexError "&h\w*\>"
-syn match freebasicOctalError "&o\w*\>"
-syn match freebasicBinaryError "&b\w*\>"
-syn match freebasicHex "&h\x\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
-syn match freebasicOctal "&o\o\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
-syn match freebasicBinary "&b[10]\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
-syn match freebasicInteger "\<\d\+\%([%L&U]\|UL\|LL\|ULL\)\=\>"
-"
-" Floating point
-" See: https://www.freebasic.net/forum/viewtopic.php?t=20323
-"
-" Floating point number, with dot, optional exponent, optional suffix
-"
-syn match freebasicFloat "\<\d\+\.\d*\%([de][-+]\=\d*\)\=[f!#]\="
-"
-" Floating point number, starting with a dot, optional exponent, optional suffix
-"
-syn match freebasicFloat "\.\d\+\%([de][-+]\=\d*\)\=[f!#]\="
-"
-" Floating point number, without dot, with optional exponent, optional suffix
-"
-syn match freebasicFloat "\<\d\+\%([de][-+]\=\d*\)[f!#]\="
-"
-" Floating point number, without dot, without exponent, with suffix
-"
-syn match freebasicFloat "\<\d\+[f!#]"
-"
-" Create the clusters
-"
-syn cluster freebasicNumber contains=freebasicHex,freebasicOctal,freebasicBinary,freebasicInteger,freebasicFloat
-syn cluster freebasicNumberError contains=freebasicHexError,freebasicOctalError,freebasicBinaryError
-"
-" Booleans
-"
-if s:lang != "qb"
- syn keyword freebasicBoolean TRUE FALSE
-endif
-"
-"
-" String and escape sequences
-"
-syn match freebasicSpecial contained "\\."
-syn match freebasicSpecial contained "\\\d\{1,3}"
-syn match freebasicSpecial contained "\\&h\x\{1,2}"
-syn match freebasicSpecial contained "\\&o\o\{1,3}"
-syn match freebasicSpecial contained "\\&b[01]\{1,8}"
-syn match freebasicSpecial contained "\\u\x\{1,4}"
-syn region freebasicString start='"' end='"' " TODO: Toggle contains on Option Escape in fblite and qb? -- DJK 20/11/19
-syn region freebasicString start='!\zs"' end='"' contains=freebasicSpecial
-syn region freebasicString start='$\zs"' end='"'
-"
-" Line labels
-"
-if s:lang =~# '\<\%(qb\|fblite\)\>'
- syn match freebasicLineLabel "^\s*\zs\h\%(\w\|\.\)*\ze\s*:"
-else
- syn match freebasicLineLabel "^\s*\zs\h\w*\ze\s*:"
-endif
-syn match freebasicLineNumber "^\s*\zs\d\+"
-"
-" Line continuations
-"
-" syn match freebasicLineContinuation "\<_\>" nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite
-syn keyword freebasicLineContinuation _ nextgroup=freebasicComment,freebasicPostLineContinuation skipwhite
-syn match freebasicPostLineContinuation ".*" contained
-"
-"
-" Type suffixes
-if exists("freebasic_type_suffixes") && s:lang =~# '\<\%(qb\|fblite\)\>'
- syn match freebasicTypeSuffix "\h\%(\w\|.\)*\zs[$%&!#]"
-endif
-"
-" Comments
-"
-syn keyword freebasicTodo TODO FIXME XXX NOTE contained
-syn region freebasicComment start="\<rem\>" end="$" contains=freebasicTodo,@Spell,freebasicMetacommand
-syn region freebasicComment start="'" end="$" contains=freebasicTodo,@Spell,freebasicMetacommand
-syn region freebasicDoubleComment start="''" end="$" contains=freebasicTodo,@Spell
-
-if !exists("freebasic_no_comment_fold")
- syn region freebasicMultilineComment start="/'" end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment fold keepend extend
- syn region freebasicMultilineComment2 start="^\s*'.*\n\%(\s*'\)\@=" end="^\s*'.*\n\%(\s*'\)\@!" contains=freebasicComment,freebasicDoubleComment keepend fold
-else
- syn region freebasicMultilineComment start="/'" end="'/" contains=freebasicTodo,@Spell,freeBasicMultilineComment
-endif
-
-syn case match
-
-syn sync linebreaks=1
-
-"
-" The default methods for highlighting. Can be overridden later
-"
-hi def link freebasicArrays StorageClass
-hi def link freebasicAsm Special
-hi def link freebasicBitManipulation Operator
-hi def link freebasicBoolean Boolean
-if s:lang == "fb"
- hi def link freebasicCompilerSwitches freebasicUnsupportedError
-else
- hi def link freebasicCompilerSwitches PreCondit
-endif
-hi def link freebasicConsole Special
-hi def link freebasicData Special
-hi def link freebasicDataTypes Type
-hi def link freebasicDateTime Type
-hi def link freebasicDebug Special
-hi def link freebasicErrorHandling Special
-hi def link freebasicFilenumber Special
-hi def link freebasicFiles Special
-hi def link freebasicFunctions Function
-hi def link freebasicGraphics Function
-hi def link freebasicHardware Special
-hi def link freebasicLoops Repeat
-hi def link freebasicMath Function
-if s:lang == "fb"
- hi def link freebasicMetacommand freebasicUnsupportedError
-else
- hi def link freebasicMetacommand SpecialComment
-endif
-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 freebasicDoubleComment Comment
-hi def link freebasicMultilineComment 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 freebasicLineContinuation Special
-hi def link freebasicLineLabel LineNr
-if s:lang == "fb"
- hi def link freebasicLineNumber freebasicUnsupportedError
-else
- hi def link freebasicLineNumber LineNr
-endif
-hi def link freebasicMathOperator Operator
-
-hi def link freebasicHex Number
-hi def link freebasicOctal Number
-hi def link freebasicBinary Number
-hi def link freebasicInteger Number
-hi def link freebasicFloat Float
-
-hi def link freebasicHexError Error
-hi def link freebasicOctalError Error
-hi def link freebasicBinaryError Error
-
-hi def link freebasicAssignmentOperator Operator
-hi def link freebasicArithmeticOperator Operator
-hi def link freebasicIndexingOperator Operator
-hi def link freebasicRelationalOperator Operator
-hi def link freebasicBitwiseOperator Operator
-hi def link freebasicShortcircuitOperator Operator
-hi def link freebasicPreprocessorOperator Operator
-hi def link freebasicPointerOperator Operator
-if exists("freebasic_operators")
- hi def link freebasicTypeOperator Operator
-endif
-hi def link freebasicMemoryOperator Operator
-
-hi def link freebasicSpaceError Error
-
-hi def link freebasicSpecial Special
-hi def link freebasicTodo Todo
-
-hi def link freebasicUnsupported freebasicUnsupportedError
-hi def link freebasicUnsupportedError Error
-
-unlet s:lang
-
-let b:current_syntax = "freebasic"
-
-" vim: ts=8 tw=132 fdm=marker