| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " Vim syntax file | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " Language:		FreeBASIC | 
					
						
							|  |  |  | " Maintainer:		Doug Kearns <dougkearns@gmail.com> | 
					
						
							|  |  |  | " Previous Maintainer:	Mark Manning <markem@sim1.us> | 
					
						
							| 
									
										
										
										
											2023-08-16 07:23:40 +10:00
										 |  |  | " Last Change:		2023 Aug 14 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							|  |  |  | " Description: | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | "	Based originally on the work done by Allan Kelly <Allan.Kelly@ed.ac.uk> | 
					
						
							| 
									
										
										
										
											2019-09-11 22:56:44 +02:00
										 |  |  | "	Updated by Mark Manning <markem@sim1.us> | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Applied FreeBASIC support to the already excellent support | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | "	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. | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	TODO: split this into separate dialect-based files, possibly with a common base | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | "	Quit when a (custom) syntax file was already loaded (Taken from c.vim) | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | if exists("b:current_syntax") | 
					
						
							|  |  |  |   finish | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	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 | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | "	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 | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	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. | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicArrays			ERASE LBOUND PRESERVE REDIM UBOUND | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " array.bi | 
					
						
							|  |  |  | syn keyword	freebasicArrays			ARRAYLEN ARRAYSIZE | 
					
						
							|  |  |  | if s:lang == "fb" | 
					
						
							|  |  |  |   syn keyword	freebasicArrays			ArrayConstDescriptorPtr ArrayDescriptorPtr FBARRAY | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn match	freebasicCompilerSwitches	"\<option\s\+\%(BASE\|BYVAL\|DYNAMIC\|ESCAPE\|EXPLICIT\|GOSUB\|NOGOSUB\)\>" | 
					
						
							|  |  |  | syn match	freebasicCompilerSwitches	"\<option\s\+\%(NOKEYWORD\|PRIVATE\|STATIC\)\>" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicData			DATA READ RESTORE | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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\>" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicConsole		BEEP CLS CSRLIN LOCATE PRINT POS SPC TAB USING VIEW WIDTH | 
					
						
							|  |  |  | syn match	freebasicConsole		"?" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicDebug			STOP | 
					
						
							|  |  |  | if s:lang == "qb" | 
					
						
							|  |  |  |   syn keyword	freebasicDebug			__ASSERT __ASSERTWARN | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   syn keyword	freebasicDebug			ASSERT ASSERTWARN | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " file.bi | 
					
						
							|  |  |  | syn keyword	freebasicFiles			FILEATTR FILECOPY FILEDATETIME FILEEXISTS FILEFLUSH FILELEN FILESETEOF | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicFunctions		ALIAS BYREF BYVAL CDECL DECLARE LIB NAKED PASCAL STATIC STDCALL | 
					
						
							|  |  |  | syn match	freebasicFunctions		"\<option\ze\s*(" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicFunctions		FUNCTION SUB | 
					
						
							|  |  |  | syn match	freebasicFunctions		"\<end\s\+function\>" | 
					
						
							|  |  |  | syn match	freebasicFunctions		"\<end\s\+sub\>" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | if s:lang != "qb" | 
					
						
							|  |  |  |   syn match	freebasicHardware		"\<open\s\+\%(com\|lpt\)\>" | 
					
						
							|  |  |  | endif | 
					
						
							|  |  |  | syn keyword	freebasicHardware		INP OUT WAIT LPOS LPRINT | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicMath			ABS ATN COS EXP FIX FRAC INT LOG MOD RANDOMIZE RND SGN SIN SQR TAN | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | if s:lang == "qb" | 
					
						
							|  |  |  |   syn keyword	freebasicMath			__ACOS __ASIN __ATAN2 | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   syn keyword	freebasicMath			ACOS ASIN ATAN2 | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn keyword	freebasicEnviron		SHELL SYSTEM | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	File numbers | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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__ | 
					
						
							| 
									
										
										
										
											2023-08-16 07:23:40 +10:00
										 |  |  | syn keyword	freebasicPredefined		__FB_FPMODE__ __FB_FPU__ __FB_FREEBSD__ __FB_GCC__ __FB_GUI__ __FB_IIF__ __FB_JOIN__ | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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__ | 
					
						
							| 
									
										
										
										
											2023-08-16 07:23:40 +10:00
										 |  |  | 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__ | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Operators | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							|  |  |  | "	Catch errors caused by wrong parenthesis | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Integer number | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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\)\=\>" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Floating point | 
					
						
							|  |  |  | "	See: https://www.freebasic.net/forum/viewtopic.php?t=20323 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Floating point number, with dot, optional exponent, optional suffix | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn match	freebasicFloat		"\<\d\+\.\d*\%([de][-+]\=\d*\)\=[f!#]\=" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Floating point number, starting with a dot, optional exponent, optional suffix | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn match	freebasicFloat		"\.\d\+\%([de][-+]\=\d*\)\=[f!#]\=" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Floating point number, without dot, with optional exponent, optional suffix | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn match	freebasicFloat		"\<\d\+\%([de][-+]\=\d*\)[f!#]\=" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Floating point number, without dot, without exponent, with suffix | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn match	freebasicFloat		"\<\d\+[f!#]" | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Create the clusters | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | syn cluster	freebasicNumber		contains=freebasicHex,freebasicOctal,freebasicBinary,freebasicInteger,freebasicFloat | 
					
						
							|  |  |  | syn cluster	freebasicNumberError	contains=freebasicHexError,freebasicOctalError,freebasicBinaryError | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Booleans | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | if s:lang != "qb" | 
					
						
							|  |  |  |   syn keyword	freebasicBoolean	TRUE FALSE | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							|  |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	String and escape sequences | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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='"' | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | "	Line labels | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | " | 
					
						
							|  |  |  | "	The default methods for highlighting.  Can be overridden later | 
					
						
							|  |  |  | " | 
					
						
							|  |  |  | hi def link freebasicArrays		StorageClass | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicAsm		Special | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicBitManipulation	Operator | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicBoolean		Boolean | 
					
						
							|  |  |  | if s:lang == "fb" | 
					
						
							|  |  |  |   hi def link freebasicCompilerSwitches	freebasicUnsupportedError | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   hi def link freebasicCompilerSwitches	PreCondit | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicConsole		Special | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicData		Special | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicDataTypes		Type | 
					
						
							|  |  |  | hi def link freebasicDateTime		Type | 
					
						
							|  |  |  | hi def link freebasicDebug		Special | 
					
						
							|  |  |  | hi def link freebasicErrorHandling	Special | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicFilenumber		Special | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicFiles		Special | 
					
						
							|  |  |  | hi def link freebasicFunctions		Function | 
					
						
							|  |  |  | hi def link freebasicGraphics		Function | 
					
						
							|  |  |  | hi def link freebasicHardware		Special | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicLoops		Repeat | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicMath		Function | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | if s:lang == "fb" | 
					
						
							|  |  |  |   hi def link freebasicMetacommand	freebasicUnsupportedError | 
					
						
							|  |  |  | else | 
					
						
							|  |  |  |   hi def link freebasicMetacommand	SpecialComment | 
					
						
							|  |  |  | endif | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicDoubleComment	Comment | 
					
						
							|  |  |  | hi def link freebasicMultilineComment	Comment | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 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 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicMathOperator	Operator | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | hi def link freebasicSpecial		Special | 
					
						
							|  |  |  | hi def link freebasicTodo		Todo | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | hi def link freebasicUnsupported	freebasicUnsupportedError | 
					
						
							|  |  |  | hi def link freebasicUnsupportedError	Error | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | unlet s:lang | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-05-05 18:24:42 +00:00
										 |  |  | let b:current_syntax = "freebasic" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-07-01 18:45:04 +01:00
										 |  |  | " vim: ts=8 tw=132 fdm=marker |