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