xref: /vim-8.2.3635/runtime/syntax/slang.vim (revision 89bcfda6)
1" Vim syntax file
2" Language:	S-Lang
3" Maintainer:	Jan Hlavacek <[email protected]>
4" Last Change:	980216
5
6" quit when a syntax file was already loaded
7if exists("b:current_syntax")
8  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.
55" Only when an item doesn't have highlighting yet
56command -nargs=+ HiLink hi def link <args>
57
58HiLink 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
86
87delcommand HiLink
88
89let b:current_syntax = "slang"
90
91" vim: ts=8
92