xref: /vim-8.2.3635/runtime/syntax/slang.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	S-Lang
3071d4279SBram Moolenaar" Maintainer:	Jan Hlavacek <[email protected]>
4071d4279SBram Moolenaar" Last Change:	980216
5071d4279SBram Moolenaar
689bcfda6SBram Moolenaar" quit when a syntax file was already loaded
789bcfda6SBram Moolenaarif exists("b:current_syntax")
8071d4279SBram Moolenaar  finish
9071d4279SBram Moolenaarendif
10071d4279SBram Moolenaar
11071d4279SBram Moolenaarsyn keyword slangStatement	break return continue EXECUTE_ERROR_BLOCK
12071d4279SBram Moolenaarsyn match slangStatement	"\<X_USER_BLOCK[0-4]\>"
13071d4279SBram Moolenaarsyn keyword slangLabel		case
14071d4279SBram Moolenaarsyn keyword slangConditional	!if if else switch
15071d4279SBram Moolenaarsyn keyword slangRepeat		while for _for loop do forever
16071d4279SBram Moolenaarsyn keyword slangDefinition	define typedef variable struct
17071d4279SBram Moolenaarsyn keyword slangOperator	or and andelse orelse shr shl xor not
18071d4279SBram Moolenaarsyn keyword slangBlock		EXIT_BLOCK ERROR_BLOCK
19071d4279SBram Moolenaarsyn match slangBlock		"\<USER_BLOCK[0-4]\>"
20071d4279SBram Moolenaarsyn keyword slangConstant	NULL
21071d4279SBram Moolenaarsyn keyword slangType		Integer_Type Double_Type Complex_Type String_Type Struct_Type Ref_Type Null_Type Array_Type DataType_Type
22071d4279SBram Moolenaar
23071d4279SBram Moolenaarsyn match slangOctal		"\<0\d\+\>" contains=slangOctalError
24071d4279SBram Moolenaarsyn match slangOctalError	"[89]\+" contained
25071d4279SBram Moolenaarsyn match slangHex		"\<0[xX][0-9A-Fa-f]*\>"
26071d4279SBram Moolenaarsyn match slangDecimal		"\<[1-9]\d*\>"
27071d4279SBram Moolenaarsyn match slangFloat		"\<\d\+\."
28071d4279SBram Moolenaarsyn match slangFloat		"\<\d\+\.\d\+\([Ee][-+]\=\d\+\)\=\>"
29071d4279SBram Moolenaarsyn match slangFloat		"\<\d\+\.[Ee][-+]\=\d\+\>"
30071d4279SBram Moolenaarsyn match slangFloat		"\<\d\+[Ee][-+]\=\d\+\>"
31071d4279SBram Moolenaarsyn match slangFloat		"\.\d\+\([Ee][-+]\=\d\+\)\=\>"
32071d4279SBram Moolenaarsyn match slangImaginary	"\.\d\+\([Ee][-+]\=\d*\)\=[ij]\>"
33071d4279SBram Moolenaarsyn match slangImaginary	"\<\d\+\(\.\d*\)\=\([Ee][-+]\=\d\+\)\=[ij]\>"
34071d4279SBram Moolenaar
35071d4279SBram Moolenaarsyn region slangString oneline start='"' end='"' skip='\\"'
36071d4279SBram Moolenaarsyn match slangCharacter	"'[^\\]'"
37071d4279SBram Moolenaarsyn match slangCharacter	"'\\.'"
38071d4279SBram Moolenaarsyn match slangCharacter	"'\\[0-7]\{1,3}'"
39071d4279SBram Moolenaarsyn match slangCharacter	"'\\d\d\{1,3}'"
40071d4279SBram Moolenaarsyn match slangCharacter	"'\\x[0-7a-fA-F]\{1,2}'"
41071d4279SBram Moolenaar
42071d4279SBram Moolenaarsyn match slangDelim		"[][{};:,]"
43071d4279SBram Moolenaarsyn match slangOperator		"[-%+/&*=<>|!~^@]"
44071d4279SBram Moolenaar
45071d4279SBram Moolenaar"catch errors caused by wrong parenthesis
46071d4279SBram Moolenaarsyn region slangParen	matchgroup=slangDelim transparent start='(' end=')' contains=ALLBUT,slangParenError
47071d4279SBram Moolenaarsyn match slangParenError	")"
48071d4279SBram Moolenaar
49071d4279SBram Moolenaarsyn match slangComment		"%.*$"
50071d4279SBram Moolenaarsyn keyword slangOperator	sizeof
51071d4279SBram Moolenaar
52071d4279SBram Moolenaarsyn region slangPreCondit start="^\s*#\s*\(ifdef\>\|ifndef\>\|iftrue\>\|ifnfalse\>\|iffalse\>\|ifntrue\>\|if\$\|ifn\$\|\|elif\>\|else\>\|endif\>\)" skip="\\$" end="$" contains=cComment,slangString,slangCharacter,slangNumber
53071d4279SBram Moolenaar
54071d4279SBram Moolenaar" Define the default highlighting.
5589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
56071d4279SBram Moolenaar
57*f37506f6SBram Moolenaarhi def link slangDefinition	Type
58*f37506f6SBram Moolenaarhi def link slangBlock		slangDefinition
59*f37506f6SBram Moolenaarhi def link slangLabel		Label
60*f37506f6SBram Moolenaarhi def link slangConditional	Conditional
61*f37506f6SBram Moolenaarhi def link slangRepeat		Repeat
62*f37506f6SBram Moolenaarhi def link slangCharacter	Character
63*f37506f6SBram Moolenaarhi def link slangFloat		Float
64*f37506f6SBram Moolenaarhi def link slangImaginary	Float
65*f37506f6SBram Moolenaarhi def link slangDecimal		slangNumber
66*f37506f6SBram Moolenaarhi def link slangOctal		slangNumber
67*f37506f6SBram Moolenaarhi def link slangHex		slangNumber
68*f37506f6SBram Moolenaarhi def link slangNumber		Number
69*f37506f6SBram Moolenaarhi def link slangParenError	Error
70*f37506f6SBram Moolenaarhi def link slangOctalError	Error
71*f37506f6SBram Moolenaarhi def link slangOperator		Operator
72*f37506f6SBram Moolenaarhi def link slangStructure	Structure
73*f37506f6SBram Moolenaarhi def link slangInclude		Include
74*f37506f6SBram Moolenaarhi def link slangPreCondit	PreCondit
75*f37506f6SBram Moolenaarhi def link slangError		Error
76*f37506f6SBram Moolenaarhi def link slangStatement	Statement
77*f37506f6SBram Moolenaarhi def link slangType		Type
78*f37506f6SBram Moolenaarhi def link slangString		String
79*f37506f6SBram Moolenaarhi def link slangConstant		Constant
80*f37506f6SBram Moolenaarhi def link slangRangeArray	slangConstant
81*f37506f6SBram Moolenaarhi def link slangComment		Comment
82*f37506f6SBram Moolenaarhi def link slangSpecial		SpecialChar
83*f37506f6SBram Moolenaarhi def link slangTodo		Todo
84*f37506f6SBram Moolenaarhi def link slangDelim		Delimiter
85071d4279SBram Moolenaar
86071d4279SBram Moolenaar
87071d4279SBram Moolenaarlet b:current_syntax = "slang"
88071d4279SBram Moolenaar
89071d4279SBram Moolenaar" vim: ts=8
90