" Vim syntax file for the Flash systems language. " Language: Flash " Filenames: *.flash " " Pure highlight-group syntax — ships no colors of its own; it links Flash " tokens to the standard groups (Keyword, Type, String, Comment, Function, …) " so the active colorscheme paints them. Tracks the lexical surface defined in " src/token.zig and src/lexer.zig; token.zig is the source of truth. if exists("b:current_syntax") finish endif " Definition order matters: when two items match at the same position, the one " defined LAST wins (:help :syn-priority). So the low-priority operator class is " defined first and strings/comments last, letting a comment beat the '/' in " '//' and keywords beat a call-like 'if ('. " --- operators (lowest priority) --- syntax match flashOperator "+%=\|-%=\|\*%=\|++\|\*\*\|+%\|-%\|*%\|<<=\|>>=\|->\|=>\|:=\|==\|!=\|<=\|>=\|<<\|>>\|&&\|||\|\.\.\.\|\.\.\|[-+*/%<>=&|^~!?]" " --- numbers: all literal forms the lexer recognises --- syntax match flashNumber "\<0x[0-9a-fA-F_]\+\>" syntax match flashNumber "\<0b[01_]\+\>" syntax match flashNumber "\<0o[0-7_]\+\>" syntax match flashFloat "\<[0-9][0-9_]*\.[0-9][0-9_]*\([eE][+-]\?[0-9_]\+\)\?\>" syntax match flashNumber "\<[0-9][0-9_]*\>" " --- function call: an identifier immediately before '(' --- syntax match flashFunctionCall "\<[A-Za-z_]\w*\ze\s*(" " --- primitive types --- syntax match flashType "\<\%(u\d\+\|i\d\+\|f16\|f32\|f64\|f80\|f128\|usize\|isize\|bool\|void\|anyopaque\|anyerror\|anytype\|type\|noreturn\|comptime_int\|comptime_float\|c_int\|c_uint\|c_char\|c_short\|c_ushort\|c_long\|c_ulong\|c_longlong\|c_ulonglong\|c_longdouble\)\>" " --- language constants --- syntax keyword flashBoolean true false syntax keyword flashConstant null undefined unreachable " --- keywords (defined after call/type so they win at e.g. 'if (' ) --- syntax keyword flashImport use as link syntax keyword flashConditional if else switch syntax keyword flashRepeat while for syntax keyword flashKeyword in break continue return orelse asm syntax keyword flashException try catch defer errdefer syntax keyword flashStructure struct enum union error test syntax keyword flashStorage const var pub inline comptime extern export callconv align linksection packed syntax keyword flashKeyword fn " --- builtins: #name --- syntax match flashBuiltin "#[A-Za-z_]\w*" " --- strings, chars, escapes, raw multiline lines --- syntax match flashEscape "\\\%(n\|t\|r\|0\|\\\|\"\|'\|x[0-9a-fA-F]\{2}\|u{[0-9a-fA-F]\{1,6}}\)" contained syntax region flashString start=+"+ skip=+\\"+ end=+"+ oneline contains=flashEscape syntax match flashChar "'\%(\\.\|[^'\\]\)'" contains=flashEscape syntax match flashMultiString "\\\\.*$" " --- comments: '//' line, '///' doc (exactly three slashes) --- syntax match flashComment "//.*$" contains=@Spell syntax match flashDocComment "///\%(/\)\@!.*$" contains=@Spell " --- link Flash groups to standard highlight groups --- highlight default link flashComment Comment highlight default link flashDocComment SpecialComment highlight default link flashImport Include highlight default link flashConditional Conditional highlight default link flashRepeat Repeat highlight default link flashKeyword Keyword highlight default link flashException Exception highlight default link flashStructure Structure highlight default link flashStorage StorageClass highlight default link flashFunctionCall Function highlight default link flashType Type highlight default link flashBoolean Boolean highlight default link flashConstant Constant highlight default link flashString String highlight default link flashMultiString String highlight default link flashChar Character highlight default link flashEscape SpecialChar highlight default link flashBuiltin Function highlight default link flashNumber Number highlight default link flashFloat Float highlight default link flashOperator Operator let b:current_syntax = "flash"