xref: /vim-8.2.3635/runtime/syntax/sl.vim (revision f37506f6)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	Renderman shader language
3071d4279SBram Moolenaar" Maintainer:	Dan Piponi <[email protected]>
4071d4279SBram Moolenaar" Last Change:	2001 May 09
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 Moolenaar" A bunch of useful Renderman keywords including special
12071d4279SBram Moolenaar" RenderMan control structures
13071d4279SBram Moolenaarsyn keyword slStatement	break return continue
14071d4279SBram Moolenaarsyn keyword slConditional	if else
15071d4279SBram Moolenaarsyn keyword slRepeat		while for
16071d4279SBram Moolenaarsyn keyword slRepeat		illuminance illuminate solar
17071d4279SBram Moolenaar
18071d4279SBram Moolenaarsyn keyword slTodo contained	TODO FIXME XXX
19071d4279SBram Moolenaar
20071d4279SBram Moolenaar" String and Character constants
21071d4279SBram Moolenaar" Highlight special characters (those which have a backslash) differently
22071d4279SBram Moolenaarsyn match slSpecial contained	"\\[0-9][0-9][0-9]\|\\."
23071d4279SBram Moolenaarsyn region slString		start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=slSpecial
24071d4279SBram Moolenaarsyn match slCharacter		"'[^\\]'"
25071d4279SBram Moolenaarsyn match slSpecialCharacter	"'\\.'"
26071d4279SBram Moolenaarsyn match slSpecialCharacter	"'\\[0-9][0-9]'"
27071d4279SBram Moolenaarsyn match slSpecialCharacter	"'\\[0-9][0-9][0-9]'"
28071d4279SBram Moolenaar
29071d4279SBram Moolenaar"catch errors caused by wrong parenthesis
30071d4279SBram Moolenaarsyn region slParen		transparent start='(' end=')' contains=ALLBUT,slParenError,slIncluded,slSpecial,slTodo,slUserLabel
31071d4279SBram Moolenaarsyn match slParenError		")"
32071d4279SBram Moolenaarsyn match slInParen contained	"[{}]"
33071d4279SBram Moolenaar
34071d4279SBram Moolenaar"integer number, or floating point number without a dot and with "f".
35071d4279SBram Moolenaarsyn case ignore
36071d4279SBram Moolenaarsyn match slNumber		"\<[0-9]\+\(u\=l\=\|lu\|f\)\>"
37071d4279SBram Moolenaar"floating point number, with dot, optional exponent
38071d4279SBram Moolenaarsyn match slFloat		"\<[0-9]\+\.[0-9]*\(e[-+]\=[0-9]\+\)\=[fl]\=\>"
39071d4279SBram Moolenaar"floating point number, starting with a dot, optional exponent
40071d4279SBram Moolenaarsyn match slFloat		"\.[0-9]\+\(e[-+]\=[0-9]\+\)\=[fl]\=\>"
41071d4279SBram Moolenaar"floating point number, without dot, with exponent
42071d4279SBram Moolenaarsyn match slFloat		"\<[0-9]\+e[-+]\=[0-9]\+[fl]\=\>"
43071d4279SBram Moolenaar"hex number
44071d4279SBram Moolenaarsyn match slNumber		"\<0x[0-9a-f]\+\(u\=l\=\|lu\)\>"
45071d4279SBram Moolenaar"syn match slIdentifier	"\<[a-z_][a-z0-9_]*\>"
46071d4279SBram Moolenaarsyn case match
47071d4279SBram Moolenaar
48071d4279SBram Moolenaarif exists("sl_comment_strings")
49071d4279SBram Moolenaar  " A comment can contain slString, slCharacter and slNumber.
50071d4279SBram Moolenaar  " But a "*/" inside a slString in a slComment DOES end the comment!  So we
51071d4279SBram Moolenaar  " need to use a special type of slString: slCommentString, which also ends on
52071d4279SBram Moolenaar  " "*/", and sees a "*" at the start of the line as comment again.
53071d4279SBram Moolenaar  " Unfortunately this doesn't very well work for // type of comments :-(
54071d4279SBram Moolenaar  syntax match slCommentSkip	contained "^\s*\*\($\|\s\+\)"
55071d4279SBram Moolenaar  syntax region slCommentString	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=slSpecial,slCommentSkip
56071d4279SBram Moolenaar  syntax region slComment2String	contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=slSpecial
57071d4279SBram Moolenaar  syntax region slComment	start="/\*" end="\*/" contains=slTodo,slCommentString,slCharacter,slNumber
58071d4279SBram Moolenaarelse
59071d4279SBram Moolenaar  syn region slComment		start="/\*" end="\*/" contains=slTodo
60071d4279SBram Moolenaarendif
61071d4279SBram Moolenaarsyntax match slCommentError	"\*/"
62071d4279SBram Moolenaar
63071d4279SBram Moolenaarsyn keyword slOperator	sizeof
64071d4279SBram Moolenaarsyn keyword slType		float point color string vector normal matrix void
65071d4279SBram Moolenaarsyn keyword slStorageClass	varying uniform extern
66071d4279SBram Moolenaarsyn keyword slStorageClass	light surface volume displacement transformation imager
67071d4279SBram Moolenaarsyn keyword slVariable	Cs Os P dPdu dPdv N Ng u v du dv s t
68071d4279SBram Moolenaarsyn keyword slVariable L Cl Ol E I ncomps time Ci Oi
69071d4279SBram Moolenaarsyn keyword slVariable Ps alpha
70071d4279SBram Moolenaarsyn keyword slVariable dtime dPdtime
71071d4279SBram Moolenaar
72071d4279SBram Moolenaarsyn sync ccomment slComment minlines=10
73071d4279SBram Moolenaar
74071d4279SBram Moolenaar" Define the default highlighting.
7589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
76071d4279SBram Moolenaar
77*f37506f6SBram Moolenaarhi def link slLabel	Label
78*f37506f6SBram Moolenaarhi def link slUserLabel	Label
79*f37506f6SBram Moolenaarhi def link slConditional	Conditional
80*f37506f6SBram Moolenaarhi def link slRepeat	Repeat
81*f37506f6SBram Moolenaarhi def link slCharacter	Character
82*f37506f6SBram Moolenaarhi def link slSpecialCharacter slSpecial
83*f37506f6SBram Moolenaarhi def link slNumber	Number
84*f37506f6SBram Moolenaarhi def link slFloat	Float
85*f37506f6SBram Moolenaarhi def link slParenError	slError
86*f37506f6SBram Moolenaarhi def link slInParen	slError
87*f37506f6SBram Moolenaarhi def link slCommentError	slError
88*f37506f6SBram Moolenaarhi def link slOperator	Operator
89*f37506f6SBram Moolenaarhi def link slStorageClass	StorageClass
90*f37506f6SBram Moolenaarhi def link slError	Error
91*f37506f6SBram Moolenaarhi def link slStatement	Statement
92*f37506f6SBram Moolenaarhi def link slType		Type
93*f37506f6SBram Moolenaarhi def link slCommentError	slError
94*f37506f6SBram Moolenaarhi def link slCommentString slString
95*f37506f6SBram Moolenaarhi def link slComment2String slString
96*f37506f6SBram Moolenaarhi def link slCommentSkip	slComment
97*f37506f6SBram Moolenaarhi def link slString	String
98*f37506f6SBram Moolenaarhi def link slComment	Comment
99*f37506f6SBram Moolenaarhi def link slSpecial	SpecialChar
100*f37506f6SBram Moolenaarhi def link slTodo	Todo
101*f37506f6SBram Moolenaarhi def link slVariable	Identifier
102*f37506f6SBram Moolenaar"hi def link slIdentifier	Identifier
103071d4279SBram Moolenaar
104071d4279SBram Moolenaar
105071d4279SBram Moolenaarlet b:current_syntax = "sl"
106071d4279SBram Moolenaar
107071d4279SBram Moolenaar" vim: ts=8
108