" Vim syntax file
" Language: S-Lang
" Maintainer: Jan Hlavacek <lahvak@math.ohio-state.edu>
" Last Change: 980216
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn keyword slangStatement break return continue EXECUTE_ERROR_BLOCK
syn match slangStatement "\<X_USER_BLOCK[0-4]\>"
syn keyword slangLabel case
syn keyword slangConditional !if if else switch
syn keyword slangRepeat while for _for loop do forever
syn keyword slangDefinition define typedef variable struct
syn keyword slangOperator or and andelse orelse shr shl xor not
syn keyword slangBlock EXIT_BLOCK ERROR_BLOCK
syn match slangBlock "\<USER_BLOCK[0-4]\>"
syn keyword slangConstant NULL
syn keyword slangType Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type
syn match slangOctal "\<0\d\+\>" contains=slangOctalError
syn match slangOctalError "[89]\+" contained
syn match slangHex "\<0[xX][0-9A-Fa-f]*\>"
syn match slangDecimal "\<[1-9]\d*\>"
syn match slangFloat "\<\d\+\."
syn match slangFloat "\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>"
syn match slangFloat "\<\d\+\.[Ee][-+]\=\d\+\>"
syn match slangFloat "\<\d\+[Ee][-+]\=\d\+\>"
syn match slangFloat "\.\d\+\([Ee][-+]\=\d\+\)\=\>"
syn match slangImaginary "\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>"
syn match slangImaginary "\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>"
syn region slangString oneline start='"' end='"' skip='\\"'
syn match slangCharacter "'[^\\]'"
syn match slangCharacter "'\\.'"
syn match slangCharacter "'\\[0-7]\{1,3}'"
syn match slangCharacter "'\\d\d\{1,3}'"
syn match slangCharacter "'\\x[0-7a-fA-F]\{1,2}'"
syn match slangDelim "[][{};:,]"
syn match slangOperator "[-%+/&*=<>|!~^@]"
"catch errors caused by wrong parenthesis
syn region slangParen matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError
syn match slangParenError ")"
syn match slangComment "%.*$"
syn keyword slangOperator sizeof
syn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_slang_syntax_inits")
if version < 508
let did_slang_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink slangDefinition Type
HiLink slangBlock slangDefinition
HiLink slangLabel Label
HiLink slangConditional Conditional
HiLink slangRepeat Repeat
HiLink slangCharacter Character
HiLink slangFloat Float
HiLink slangImaginary Float
HiLink slangDecimal slangNumber
HiLink slangOctal slangNumber
HiLink slangHex slangNumber
HiLink slangNumber Number
HiLink slangParenError Error
HiLink slangOctalError Error
HiLink slangOperator Operator
HiLink slangStructure Structure
HiLink slangInclude Include
HiLink slangPreCondit PreCondit
HiLink slangError Error
HiLink slangStatement Statement
HiLink slangType Type
HiLink slangString String
HiLink slangConstant Constant
HiLink slangRangeArray slangConstant
HiLink slangComment Comment
HiLink slangSpecial SpecialChar
HiLink slangTodo Todo
HiLink slangDelim Delimiter
delcommand HiLink
endif
let b:current_syntax = "slang"
" vim: ts=8
|