" Language: SSS " Maintainer: Bruce Hill " License: WTFPL " Bail if our syntax is already loaded. if exists('b:current_syntax') && b:current_syntax == 'sss' finish endif syn match SSSVar /[a-zA-Z_][a-zA-Z_0-9]*/ syn match SSSNumber /0x[0-9a-fA-F_]\+%\?\|[0-9][0-9_]*\(\.\([0-9][0-9_]*\|\.\@!\)\)\?\(e[0-9_]\+\)\?%\?\|\.\@/he=s-1 contains=SSSEscape contained syn region SSSDSLString start=/(/hs=e+1 end=/)/he=s-1 contains=SSSStringInterp contained syn region SSSDSLString start=/\//hs=e+1 end=/\//he=s-1 contains=SSSStringAtInterp contained syn region SSSDSLString start=/>.\@=/hs=e+1 end=/$/ contains=SSSStringAtInterp contained syn region SSSDSLString start=/>.\@!\%(^\z(\s*\).*\)\@<=/hs=e+1 end=/^\%(\z1\s\)\@!.\@=/ contains=SSSStringAtInterp contained syn region SSSDSLString start=/:.\@=/hs=e+1 end=/$/ contains=SSSStringInterp,SSSEscape contained syn region SSSDSLString start=/:.\@!\%(^\z(\s*\).*\)\@<=/hs=e+1 end=/^\%(\z1\s\)\@!.\@=/ contains=SSSStringInterp,SSSEscape contained hi def link SSSDSLString String syn match SSSDocTest /^\s*\(>>>\|===\|!!!\)/ hi SSSDocTest ctermfg=gray cterm=italic syn match SSSDocError /!!!.*/ hi SSSDocError ctermfg=red cterm=italic syn match SSSDSL /\$\w*/ nextgroup=SSSString,SSSDSLString hi def link SSSDSL String hi SSSDSL ctermfg=white cterm=bold syn match SSSStringDollar /\$:\?/ contained hi SSSStringDollar ctermfg=LightBlue syn match SSSStringAt /@/ contained hi SSSStringAt ctermfg=LightBlue syn match SSSStringInterpWord /[a-zA-Z_][a-zA-Z_0-9]*\(\.[a-zA-Z_][a-zA-Z_0-9]*\)*/ contained hi SSSStringInterpWord ctermfg=LightBlue syn match SSSStringInterp /\$:\?/ contained nextgroup=SSSStringDollar,SSSStringInterpWord,@SSSAll hi SSSStringInterp ctermfg=LightBlue syn match SSSStringAtInterp /@/ contained nextgroup=SSSStringAt,SSSStringInterpWord,@SSSAll hi SSSStringAtInterp ctermfg=LightBlue syn match SSSEscape /\\\([abenrtvN]\|x\x\x\|\d\{3}\)\(-\([abnrtv]\|x\x\x\|\d\{3}\)\)\?\|\\./ hi SSSEscape ctermfg=LightBlue syn keyword SSSConditional if unless elseif else when then defer hi def link SSSConditional Conditional syn keyword SSSLoop for between while repeat do until with hi def link SSSLoop Repeat syn keyword SSSFail fail hi def link SSSFail Exception syn keyword SSSStatement stop skip fail pass return del hi def link SSSStatement Statement syn keyword SSSKeyword use extern inline hi def link SSSKeyword Keyword syn keyword SSSExtend extend nextgroup=SSSType skipwhite hi def link SSSExtend Keyword syn match SSSFnName /\<[a-zA-Z_][a-zA-Z_0-9]*\>/ contained hi def link SSSFnName Function syn keyword SSSDef def nextgroup=SSSFnName skipwhite hi def link SSSDef Keyword " syn region SSSFnDecl start=/\/ end=/(\@=\|$/ contains=SSSFnName,SSSKeyword syn keyword SSSBoolean yes no hi def link SSSBoolean Boolean syn keyword SSSNil nil hi SSSNil cterm=bold ctermfg=cyan syn match SSSStructName /\w\+\( *{\)\@=/ hi SSSStructName cterm=bold syn keyword SSSOperator of in by and or xor is not mod mod1 sizeof typeof bitcast _min_ _max_ _mix_ syn match SSSOperator /\(>>>\|===\)\@![+*/^<>=-]=\?/ syn match SSSOperator /\(===\)\@![:!]\?=/ syn match SSSOperator /[#?]/ hi def link SSSOperator Operator syn match SSSDelim /,/ hi def link SSSDelim Dlimiter syn match SSSTypeDelim /,/ contained hi def link SSSTypeDelim Type syn match SSSAssoc /=/ contained hi def link SSSAssoc Type syn region SSSType start=/\[/ end=/\]\|$/ contains=SSSType contained syn region SSSType start=/{/ end=/}\|$/ contains=SSSType,SSSAssoc contained syn region SSSType start=/(/ end=/)=>\|$/ contains=SSSType,SSSTypeDelim nextgroup=SSSType contained syn match SSSType /[a-zA-Z_0-9@?]\+/ contained hi def link SSSType Type syn match SSSTypeAnnotation /:\@