text/x-fb;text/x-freebasic
*.bas;*.bi
'
/'
'/
(const\s+)?(u|(unsigned\s\s*))?
(ull|ul|ll|u|l|&|%)?
([de]([-+]?[0-9]+)?)
\\( # leading backslash
[\\\"\'abflnrtv] | # escaped character
u.{4} | # unicode char in 4 hex digits (also gets non hex chars (fbc bug?))
[0-9]{1,3} | # ascii char in decimal
&h[0-9a-f]{1,2} | # ascii char in hex
&o[0-7]{1,3} | # ascii char in octal
&b[0-1]{1,8} ) # ascii char in binary
('|rem\s)\s*(\$include(\s+once)?:|\$lang:|\$dynamic|\$static).*
^\s*#(inclib|include|include\s+once|libpath)\s+(".*"|<.*>)
^\s*
#assert
#cmdline
#define
#else(if(n?def)?)?
#end(if|macro)
#error
#if(n?def)?
#lang
#line
#macro
#pragma(\s+(once|reserve|private|msbitfields|push|pop))?
#print
#undef
defined
!"
"
\%{escaped-character}
[\$]?"
"
NULL
__FB_WIN32__|__FB_LINUX__|__FB_DOS__|__FB_CYGWIN__|__FB_FREEBSD__|__FB_NETBSD__
__FB_OPENBSD__|__FB_DARWIN__|__FB_XBOX__|__FB_BIGENDIAN__|__FB_PCOS__|__FB_UNIX__
__FB_64BIT__|__FB_ARM__|__FB_PPC__|__FB_X86__|__FB_JS__|__FB_ANDROID__
__FB_VERSION__|__FB_VER_MAJOR__|__FB_VER_MINOR__|__FB_VER_PATCH__|__FB_MIN_VERSION__
__FB_BUILD_DATE__|__FB_BUILD_DATE_ISO__|__FB_SIGNATURE__|__FB_BUILD_SHA1__
__FB_ASM__|__FB_BACKEND__|__FB_GCC__|__FB_OPTIMIZE__|__FB_GUI__|__FB_MAIN__
__FB_DEBUG__|__FB_ERR__|__FB_FPMODE__|__FB_FPU__|__FB_LANG__|__FB_MT__|__FB_OUT_DLL__
__FB_OUT_EXE__|__FB_OUT_LIB__|__FB_OUT_OBJ__|__FB_SSE__|__FB_VECTORIZE__
__FB_ARGC__|__FB_ARGV__|__DATE__|__DATE_ISO__|__TIME__|__PATH__
__FILE__|__FILE_NQ__|__FUNCTION__|__FUNCTION_NQ__|__LINE__|__FB_OPTION_BYVAL__|__FB_OPTION_DYNAMIC__
__FB_OPTION_ESCAPE__|__FB_OPTION_GOSUB__|__FB_OPTION_EXPLICIT__|__FB_OPTION_PRIVATE__
__FB_ARG_COUNT__|__FB_ARG_EXTRACT__|__FB_ARG_LEFTOF__|__FB_ARG_RIGHTOF__|__FB_EVAL__|__FB_IIF__|__FB_JOIN__
__FB_QUERY_SYMBOL__|__FB_QUOTE__|__FB_UNIQUEID__|__FB_UNIQUEID_POP__|__FB_UNIQUEID_PUSH__|__FB_UNQUOTE__
\%{integer-prefix}integer((<(8|16|32|64)>)?)
(as)\s+(const\s+)?(function|sub)
\%{integer-prefix}byte
\%{integer-prefix}short
\%{integer-prefix}long
\%{integer-prefix}longint
(const\s+)?boolean
(const\s+)?single
(const\s+)?double
(const\s+)?(z|w)?string
(const\s+)?object
(const\s+)?(any\s)?\s*(pointer|ptr)
( [0-9]*(\. [0-9]+) \%{float-exponent}? [!f#]? # [number].fraction [exponent] [suffix]
| [0-9]+ \%{float-exponent} [!f#]? # number exponent [suffix]
| [0-9]+ \%{float-exponent}? [!f#] ) # number [exponent] suffix
&h[a-f0-9]+\%{integer-lit-suffix}
(0|[1-9][0-9]*)\%{integer-lit-suffix}
&o[0-7]+\%{integer-lit-suffix}
&b[0-1]+\%{integer-lit-suffix}
true
false
arraylen|arraysize|erase|lbound|ubound|redim(\s+(preserve|shared))?
def(str|sng|dbl|u?(byte|short|int|lng|longint))|option\s+(BASE|BYVAL|DYNAMIC|ESCAPE|EXPLICIT|(NO)?GOSUB|NOKEYWORD|PRIVATE|STATIC)
ALIAS|AS|CONST|(DIM|STATIC|COMMON|VAR)(\s+SHARED)?|EXTENDS(\s+(W|S)STRING)?|FIELD|(END\s+)?(ENUM|TYPE|SCOPE|UNION|WITH)
IMPLEMENTS|(END\s+)?(CLASS|INTERFACE)
ERFN|ERL|ERMN|ERR|ERROR|ON\s+(LOCAL\s+)?ERROR|RESUME(\s+NEXT)?
and(also)?|eqv|imp|or(else)?|xor|not|mod|shl|shr|let|is
(END\s+)?ASM|DATA|READ|RESTORE|(OFFSET|SIZE|TYPE)OF|OPTION|TO|SWAP
DYLIB(FREE|LOAD|SYMBOL)|EXPORT|EXTERN\s+IMPORT|(END\s+)?(EXTERN|NAMESPACE)|USING|PRIVATE|PUBLIC
PEEK|POKE|SADD|(PROC|STR|VAR)PTR
ABSTRACT|VIRTUAL|ALIAS|ANY|BASE|THIS|BY(REF|VAL)|CALL|CDECL|PASCAL|(STD|__FAST|__THIS)CALL|DECLARE|RETURN
(END\s+)?(FUNCTION|SUB|CONSTRUCTOR|DESTRUCTOR|OPERATOR|PROPERTY)|LIB|NAKED|OVERLOAD|OVERRIDE|PROTECTED
CVA_(ARG|COPY|END|LIST|START)|VA_(ARG|FIRST|NEXT)
DO|LOOP|UNTIL|WHILE|WEND|CONTINUE|EXIT|(END\s+)?(IF|SELECT)|CASE|THEN|ELSE(IF)?|ENDIF|IIF|FOR|STEP|NEXT|ON|GOSUB|GOTO
CAST|C(PTR|SIGN|UNSG|BOOL|DBL|SNG|(U)?(BYTE|INT|LNG|LNGINT|SHORT))
bit|bitreset|bitset|hibyte|lobyte|hiword|loword
BEEP|CLS|COLOR|CSRLIN|LOCATE|OPEN\s+(CONS|ERR|PIPE|SCRN)|POS|PRINT(\s+USING)?|SCREEN|SPC|TAB|VIEW|WIDTH|WRITE
DATE(ADD|DIFF|PART|SERIAL|VALUE)?|(SET|IS)DATE|DAY|HOUR|MINUTE|MONTH(NAME)?|NOW|SECOND|TIME(SERIAL|VALUE)?|SETTIME|TIMER|YEAR|WEEKDAY(NAME)?
ASSERT(WARN)?|STOP
INP|OUT|WAIT|OPEN\s+(COM|LPT)|LPOS|LPRINT
(LINE\s+)?INPUT|WINPUT|OPEN|OUTPUT|APPEND|BINARY|RANDOM|ACCESS\s+(READ(\s+WRITE)?|WRITE)
BLOAD|BSAVE|CLOSE|ENCODING|EOF|FREEFILE|GET|PUT|LOC|LOCK|LOF|RESET|SEEK|UNLOCK|WRITE
ADD|ALPHA|CUSTOM|TRANS|PSET|PRESET|CIRCLE|LINE|PAINT|DRAW(\s+STRING)?|FLIP|IMAGE(CONVERTROW|CREATE|DESTROY|INFO)|PALETTE
PCOPY|PMAP|POINT(COORD)?|RGB(A)?|SCREEN(CONTROL|COPY|EVENT|INFO|GLPROC|LIST|LOCK|PTR|RES|SET|SYNC|UNLOCK)?|VIEW|WINDOW
ABS|ACOS|ASIN|ATAN2|ATN|COS|EXP|FIX|FRAC|INT|LOG|RANDOMIZE|RND|SGN|SIN|SQR|TAN
(C|DE|RE)?ALLOCATE|CLEAR|FB_MEM(COPY(CLEAR)?|MOVE)|FRE|NEW|DELETE
COND(BROADCAST|CREATE|DESTROY|SIGNAL|WAIT)|MUTEX(CREATE|DESTROY|(UN)?LOCK)|THREAD(CALL|CREATE|DETACH|SELF|WAIT)
(CH|CUR|RM|MK)?DIR|FILE(ATTR|COPY|DATETIME|EXISTS|FLUSH|SETEOF|LEN)|ISREDIRECTED|KILL|NAME
CHAIN|EXEC|RUN|SHELL|COMMAND|EXEPATH|END|SYSTEM|(SET)?ENVIRON|WINDOWTITLE
INSTR(REV)?|(l|U)Case|LEFT|RIGHT|MID|LEN|(L|R)SET|(L|R)?TRIM|(W)?SPACE
ASC|FORMAT|(CV|MK)(D|I|L|LONGINT|S|SHORT)|VAL((U)?LNG|(U)?INT)?|(W)?(BIN|CHR|HEX|OCT|STR)
(GET|IN|MULTI)KEY|SLEEP|(GET|SET)MOUSE|GETJOYSTICK|STICK|STRIG
_(_|[a-z]|[0-9])+|[a-z](_|[a-z]|[0-9])*