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