blob: 938e8d5c51e0b870b303e4fad394c258967712c8 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: S-Lang
3" Maintainer: Jan Hlavacek <lahvak@math.ohio-state.edu>
4" Last Change: 980216
5
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 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.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020055" Only when an item doesn't have highlighting yet
56command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000057
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020058HiLink 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000086
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020087delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +000088
89let b:current_syntax = "slang"
90
91" vim: ts=8