mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
	
	
		
			253 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			253 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " 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 |