blob: fa3bca06ddf378378d7a07865a90a6cbd3095550 [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
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