1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: S-Lang 3071d4279SBram Moolenaar" Maintainer: Jan Hlavacek <[email protected]> 4071d4279SBram Moolenaar" Last Change: 980216 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11071d4279SBram Moolenaarsyn keyword slangStatement break return continue EXECUTE_ERROR_BLOCK 12071d4279SBram Moolenaarsyn match slangStatement "\<X_USER_BLOCK[0-4]\>" 13071d4279SBram Moolenaarsyn keyword slangLabel case 14071d4279SBram Moolenaarsyn keyword slangConditional !if if else switch 15071d4279SBram Moolenaarsyn keyword slangRepeat while for _for loop do forever 16071d4279SBram Moolenaarsyn keyword slangDefinition define typedef variable struct 17071d4279SBram Moolenaarsyn keyword slangOperator or and andelse orelse shr shl xor not 18071d4279SBram Moolenaarsyn keyword slangBlock EXIT_BLOCK ERROR_BLOCK 19071d4279SBram Moolenaarsyn match slangBlock "\<USER_BLOCK[0-4]\>" 20071d4279SBram Moolenaarsyn keyword slangConstant NULL 21071d4279SBram Moolenaarsyn keyword slangType Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type 22071d4279SBram Moolenaar 23071d4279SBram Moolenaarsyn match slangOctal "\<0\d\+\>" contains=slangOctalError 24071d4279SBram Moolenaarsyn match slangOctalError "[89]\+" contained 25071d4279SBram Moolenaarsyn match slangHex "\<0[xX][0-9A-Fa-f]*\>" 26071d4279SBram Moolenaarsyn match slangDecimal "\<[1-9]\d*\>" 27071d4279SBram Moolenaarsyn match slangFloat "\<\d\+\." 28071d4279SBram Moolenaarsyn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>" 29071d4279SBram Moolenaarsyn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>" 30071d4279SBram Moolenaarsyn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>" 31071d4279SBram Moolenaarsyn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>" 32071d4279SBram Moolenaarsyn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>" 33071d4279SBram Moolenaarsyn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>" 34071d4279SBram Moolenaar 35071d4279SBram Moolenaarsyn region slangString oneline start='"' end='"' skip='\\"' 36071d4279SBram Moolenaarsyn match slangCharacter "'[^\\]'" 37071d4279SBram Moolenaarsyn match slangCharacter "'\\.'" 38071d4279SBram Moolenaarsyn match slangCharacter "'\\[0-7]\{1,3}'" 39071d4279SBram Moolenaarsyn match slangCharacter "'\\d\d\{1,3}'" 40071d4279SBram Moolenaarsyn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'" 41071d4279SBram Moolenaar 42071d4279SBram Moolenaarsyn match slangDelim "[][{};:,]" 43071d4279SBram Moolenaarsyn match slangOperator "[-%+/&*=<>|!~^@]" 44071d4279SBram Moolenaar 45071d4279SBram Moolenaar"catch errors caused by wrong parenthesis 46071d4279SBram Moolenaarsyn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError 47071d4279SBram Moolenaarsyn match slangParenError ")" 48071d4279SBram Moolenaar 49071d4279SBram Moolenaarsyn match slangComment "%.*$" 50071d4279SBram Moolenaarsyn keyword slangOperator sizeof 51071d4279SBram Moolenaar 52071d4279SBram Moolenaarsyn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber 53071d4279SBram Moolenaar 54071d4279SBram Moolenaar" Define the default highlighting. 5589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 56071d4279SBram Moolenaar 57*f37506f6SBram Moolenaarhi def link slangDefinition Type 58*f37506f6SBram Moolenaarhi def link slangBlock slangDefinition 59*f37506f6SBram Moolenaarhi def link slangLabel Label 60*f37506f6SBram Moolenaarhi def link slangConditional Conditional 61*f37506f6SBram Moolenaarhi def link slangRepeat Repeat 62*f37506f6SBram Moolenaarhi def link slangCharacter Character 63*f37506f6SBram Moolenaarhi def link slangFloat Float 64*f37506f6SBram Moolenaarhi def link slangImaginary Float 65*f37506f6SBram Moolenaarhi def link slangDecimal slangNumber 66*f37506f6SBram Moolenaarhi def link slangOctal slangNumber 67*f37506f6SBram Moolenaarhi def link slangHex slangNumber 68*f37506f6SBram Moolenaarhi def link slangNumber Number 69*f37506f6SBram Moolenaarhi def link slangParenError Error 70*f37506f6SBram Moolenaarhi def link slangOctalError Error 71*f37506f6SBram Moolenaarhi def link slangOperator Operator 72*f37506f6SBram Moolenaarhi def link slangStructure Structure 73*f37506f6SBram Moolenaarhi def link slangInclude Include 74*f37506f6SBram Moolenaarhi def link slangPreCondit PreCondit 75*f37506f6SBram Moolenaarhi def link slangError Error 76*f37506f6SBram Moolenaarhi def link slangStatement Statement 77*f37506f6SBram Moolenaarhi def link slangType Type 78*f37506f6SBram Moolenaarhi def link slangString String 79*f37506f6SBram Moolenaarhi def link slangConstant Constant 80*f37506f6SBram Moolenaarhi def link slangRangeArray slangConstant 81*f37506f6SBram Moolenaarhi def link slangComment Comment 82*f37506f6SBram Moolenaarhi def link slangSpecial SpecialChar 83*f37506f6SBram Moolenaarhi def link slangTodo Todo 84*f37506f6SBram Moolenaarhi def link slangDelim Delimiter 85071d4279SBram Moolenaar 86071d4279SBram Moolenaar 87071d4279SBram Moolenaarlet b:current_syntax = "slang" 88071d4279SBram Moolenaar 89071d4279SBram Moolenaar" vim: ts=8 90