summaryrefslogtreecommitdiffstats
path: root/runtime/syntax/slang.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/slang.vim')
-rw-r--r--runtime/syntax/slang.vim89
1 files changed, 89 insertions, 0 deletions
diff --git a/runtime/syntax/slang.vim b/runtime/syntax/slang.vim
new file mode 100644
index 0000000..53ede4d
--- /dev/null
+++ b/runtime/syntax/slang.vim
@@ -0,0 +1,89 @@
+" Vim syntax file
+" Language: S-Lang
+" Maintainer: Jan Hlavacek <lahvak@math.ohio-state.edu>
+" Last Change: 980216
+
+" quit when a syntax file was already loaded
+if 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.
+" Only when an item doesn't have highlighting yet
+
+hi def link slangDefinition Type
+hi def link slangBlock slangDefinition
+hi def link slangLabel Label
+hi def link slangConditional Conditional
+hi def link slangRepeat Repeat
+hi def link slangCharacter Character
+hi def link slangFloat Float
+hi def link slangImaginary Float
+hi def link slangDecimal slangNumber
+hi def link slangOctal slangNumber
+hi def link slangHex slangNumber
+hi def link slangNumber Number
+hi def link slangParenError Error
+hi def link slangOctalError Error
+hi def link slangOperator Operator
+hi def link slangStructure Structure
+hi def link slangInclude Include
+hi def link slangPreCondit PreCondit
+hi def link slangError Error
+hi def link slangStatement Statement
+hi def link slangType Type
+hi def link slangString String
+hi def link slangConstant Constant
+hi def link slangRangeArray slangConstant
+hi def link slangComment Comment
+hi def link slangSpecial SpecialChar
+hi def link slangTodo Todo
+hi def link slangDelim Delimiter
+
+
+let b:current_syntax = "slang"
+
+" vim: ts=8