xref: /vim-8.2.3635/runtime/syntax/sl.vim (revision cb03397a)
1" Vim syntax file
2" Language:	Renderman shader language
3" Maintainer:	Dan Piponi <[email protected]>
4" Last Change:	2001 May 09
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
14" A bunch of useful Renderman keywords including special
15" RenderMan control structures
16syn keyword slStatement	break return continue
17syn keyword slConditional	if else
18syn keyword slRepeat		while for
19syn keyword slRepeat		illuminance illuminate solar
20
21syn keyword slTodo contained	TODO FIXME XXX
22
23" String and Character constants
24" Highlight special characters (those which have a backslash) differently
25syn match slSpecial contained	"\\[0-9][0-9][0-9]\|\\."
26syn region slString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial
27syn match slCharacter		"'[^\\]'"
28syn match slSpecialCharacter	"'\\.'"
29syn match slSpecialCharacter	"'\\[0-9][0-9]'"
30syn match slSpecialCharacter	"'\\[0-9][0-9][0-9]'"
31
32"catch errors caused by wrong parenthesis
33syn region slParen		transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel
34syn match slParenError		")"
35syn match slInParen contained	"[{}]"
36
37"integer number, or floating point number without a dot and with "f".
38syn case ignore
39syn match slNumber		"\<[0-9]\+\(u\=l\=\|lu\|f\)\>"
40"floating point number, with dot, optional exponent
41syn match slFloat		"\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>"
42"floating point number, starting with a dot, optional exponent
43syn match slFloat		"\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>"
44"floating point number, without dot, with exponent
45syn match slFloat		"\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>"
46"hex number
47syn match slNumber		"\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
48"syn match slIdentifier	"\<[a-z_][a-z0-9_]*\>"
49syn case match
50
51if exists("sl_comment_strings")
52  " A comment can contain slString, slCharacter and slNumber.
53  " But a "*/" inside a slString in a slComment DOES end the comment!  So we
54  " need to use a special type of slString: slCommentString, which also ends on
55  " "*/", and sees a "*" at the start of the line as comment again.
56  " Unfortunately this doesn't very well work for // type of comments :-(
57  syntax match slCommentSkip	contained "^\s*\*\($\|\s\+\)"
58  syntax region slCommentString	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip
59  syntax region slComment2String	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial
60  syntax region slComment	start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber
61else
62  syn region slComment		start="/\*" end="\*/" contains=slTodo
63endif
64syntax match slCommentError	"\*/"
65
66syn keyword slOperator	sizeof
67syn keyword slType		float point color string vector normal matrix void
68syn keyword slStorageClass	varying uniform extern
69syn keyword slStorageClass	light surface volume displacement transformation imager
70syn keyword slVariable	Cs Os P dPdu dPdv N Ng u v du dv s t
71syn keyword slVariable L Cl Ol E I ncomps time Ci Oi
72syn keyword slVariable Ps alpha
73syn keyword slVariable dtime dPdtime
74
75syn sync ccomment slComment minlines=10
76
77" Define the default highlighting.
78" For version 5.7 and earlier: only when not done already
79" For version 5.8 and later: only when an item doesn't have highlighting yet
80if version >= 508 || !exists("did_sl_syntax_inits")
81  if version < 508
82    let did_sl_syntax_inits = 1
83    command -nargs=+ HiLink hi link <args>
84  else
85    command -nargs=+ HiLink hi def link <args>
86  endif
87
88  HiLink slLabel	Label
89  HiLink slUserLabel	Label
90  HiLink slConditional	Conditional
91  HiLink slRepeat	Repeat
92  HiLink slCharacter	Character
93  HiLink slSpecialCharacter slSpecial
94  HiLink slNumber	Number
95  HiLink slFloat	Float
96  HiLink slParenError	slError
97  HiLink slInParen	slError
98  HiLink slCommentError	slError
99  HiLink slOperator	Operator
100  HiLink slStorageClass	StorageClass
101  HiLink slError	Error
102  HiLink slStatement	Statement
103  HiLink slType		Type
104  HiLink slCommentError	slError
105  HiLink slCommentString slString
106  HiLink slComment2String slString
107  HiLink slCommentSkip	slComment
108  HiLink slString	String
109  HiLink slComment	Comment
110  HiLink slSpecial	SpecialChar
111  HiLink slTodo	Todo
112  HiLink slVariable	Identifier
113  "HiLink slIdentifier	Identifier
114
115  delcommand HiLink
116endif
117
118let b:current_syntax = "sl"
119
120" vim: ts=8
121