1" Vim syntax file 2" Language: S-Lang 3" Maintainer: Jan Hlavacek <[email protected]> 4" Last Change: 980216 5 6" quit when a syntax file was already loaded 7if exists("b:current_syntax") 8 finish 9endif 10 11syn keyword slangStatement break return continue EXECUTE_ERROR_BLOCK 12syn match slangStatement "\<X_USER_BLOCK[0-4]\>" 13syn keyword slangLabel case 14syn keyword slangConditional !if if else switch 15syn keyword slangRepeat while for _for loop do forever 16syn keyword slangDefinition define typedef variable struct 17syn keyword slangOperator or and andelse orelse shr shl xor not 18syn keyword slangBlock EXIT_BLOCK ERROR_BLOCK 19syn match slangBlock "\<USER_BLOCK[0-4]\>" 20syn keyword slangConstant NULL 21syn keyword slangType Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type 22 23syn match slangOctal "\<0\d\+\>" contains=slangOctalError 24syn match slangOctalError "[89]\+" contained 25syn match slangHex "\<0[xX][0-9A-Fa-f]*\>" 26syn match slangDecimal "\<[1-9]\d*\>" 27syn match slangFloat "\<\d\+\." 28syn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>" 29syn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>" 30syn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>" 31syn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>" 32syn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>" 33syn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>" 34 35syn region slangString oneline start='"' end='"' skip='\\"' 36syn match slangCharacter "'[^\\]'" 37syn match slangCharacter "'\\.'" 38syn match slangCharacter "'\\[0-7]\{1,3}'" 39syn match slangCharacter "'\\d\d\{1,3}'" 40syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'" 41 42syn match slangDelim "[][{};:,]" 43syn match slangOperator "[-%+/&*=<>|!~^@]" 44 45"catch errors caused by wrong parenthesis 46syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError 47syn match slangParenError ")" 48 49syn match slangComment "%.*$" 50syn keyword slangOperator sizeof 51 52syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber 53 54" Define the default highlighting. 55" Only when an item doesn't have highlighting yet 56command -nargs=+ HiLink hi def link <args> 57 58HiLink slangDefinition Type 59HiLink slangBlock slangDefinition 60HiLink slangLabel Label 61HiLink slangConditional Conditional 62HiLink slangRepeat Repeat 63HiLink slangCharacter Character 64HiLink slangFloat Float 65HiLink slangImaginary Float 66HiLink slangDecimal slangNumber 67HiLink slangOctal slangNumber 68HiLink slangHex slangNumber 69HiLink slangNumber Number 70HiLink slangParenError Error 71HiLink slangOctalError Error 72HiLink slangOperator Operator 73HiLink slangStructure Structure 74HiLink slangInclude Include 75HiLink slangPreCondit PreCondit 76HiLink slangError Error 77HiLink slangStatement Statement 78HiLink slangType Type 79HiLink slangString String 80HiLink slangConstant Constant 81HiLink slangRangeArray slangConstant 82HiLink slangComment Comment 83HiLink slangSpecial SpecialChar 84HiLink slangTodo Todo 85HiLink slangDelim Delimiter 86 87delcommand HiLink 88 89let b:current_syntax = "slang" 90 91" vim: ts=8 92