7
|
1 " Vim syntax file
|
|
2 " Language: splint (C with lclint/splint Annotations)
|
|
3 " Maintainer: Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
|
4 " Splint Home: http://www.splint.org/
|
|
5 " Last Change: $Date$
|
|
6 " $Revision$
|
|
7
|
|
8 " Note: Splint annotated files are not detected by default.
|
|
9 " If you want to use this file for highlighting C code,
|
|
10 " please make sure splint.vim is sourced instead of c.vim,
|
|
11 " for example by putting
|
|
12 " /* vim: set filetype=splint : */
|
|
13 " at the end of your code or something like
|
|
14 " au! BufRead,BufNewFile *.c setfiletype splint
|
|
15 " in your vimrc file or filetype.vim
|
|
16
|
|
17
|
|
18 " For version 5.x: Clear all syntax items
|
|
19 " For version 6.x: Quit when a syntax file was already loaded
|
|
20 if version < 600
|
|
21 syntax clear
|
|
22 elseif exists("b:current_syntax")
|
|
23 finish
|
|
24 endif
|
|
25
|
|
26 " Read the C syntax to start with
|
|
27 if version < 600
|
|
28 so <sfile>:p:h/c.vim
|
|
29 else
|
|
30 runtime! syntax/c.vim
|
|
31 endif
|
|
32
|
|
33
|
|
34 " FIXME: uses and changes several clusters defined in c.vim
|
|
35 " so watch for changes there
|
|
36
|
|
37 " TODO: make a little more grammar explicit
|
|
38 " match flags with hyphen and underscore notation
|
|
39 " match flag expanded forms
|
|
40 " accept other comment char than @
|
|
41
|
|
42 syn case match
|
|
43 " splint annotations (taken from 'splint -help annotations')
|
|
44 syn match splintStateAnnot contained "\(pre\|post\):\(only\|shared\|owned\|dependent\|observer\|exposed\|isnull\|notnull\)"
|
|
45 syn keyword splintSpecialAnnot contained special
|
|
46 syn keyword splintSpecTag contained uses sets defines allocated releases
|
|
47 syn keyword splintModifies contained modifies
|
|
48 syn keyword splintRequires contained requires ensures
|
|
49 syn keyword splintGlobals contained globals
|
|
50 syn keyword splintGlobitem contained internalState fileSystem
|
|
51 syn keyword splintGlobannot contained undef killed
|
|
52 syn keyword splintWarning contained warn
|
|
53
|
|
54 syn keyword splintModitem contained internalState fileSystem nothing
|
|
55 syn keyword splintReqitem contained MaxSet MaxRead result
|
|
56 syn keyword splintIter contained iter yield
|
|
57 syn keyword splintConst contained constant
|
|
58 syn keyword splintAlt contained alt
|
|
59
|
|
60 syn keyword splintType contained abstract concrete mutable immutable refcounted numabstract
|
|
61 syn keyword splintGlobalType contained unchecked checkmod checked checkedstrict
|
|
62 syn keyword splintMemMgm contained dependent keep killref only owned shared temp
|
|
63 syn keyword splintAlias contained unique returned
|
|
64 syn keyword splintExposure contained observer exposed
|
|
65 syn keyword splintDefState contained out in partial reldef
|
|
66 syn keyword splintGlobState contained undef killed
|
|
67 syn keyword splintNullState contained null notnull relnull
|
|
68 syn keyword splintNullPred contained truenull falsenull nullwhentrue falsewhennull
|
|
69 syn keyword splintExit contained exits mayexit trueexit falseexit neverexit
|
|
70 syn keyword splintExec contained noreturn maynotreturn noreturnwhentrue noreturnwhenfalse alwaysreturns
|
|
71 syn keyword splintSef contained sef
|
|
72 syn keyword splintDecl contained unused external
|
|
73 syn keyword splintCase contained fallthrough
|
|
74 syn keyword splintBreak contained innerbreak loopbreak switchbreak innercontinue
|
|
75 syn keyword splintUnreach contained notreached
|
|
76 syn keyword splintSpecFunc contained printflike scanflike messagelike
|
|
77
|
|
78 " TODO: make these region or match
|
|
79 syn keyword splintErrSupp contained i ignore end t
|
|
80 syn match splintErrSupp contained "[it]\d\+\>"
|
|
81 syn keyword splintTypeAcc contained access noaccess
|
|
82
|
|
83 syn keyword splintMacro contained notfunction
|
|
84 syn match splintSpecType contained "\(\|unsigned\|signed\)integraltype"
|
|
85
|
|
86 " Flags taken from 'splint -help flags full' divided in local and global flags
|
|
87 " Local Flags:
|
|
88 syn keyword splintFlag contained abstract abstractcompare accessall accessczech accessczechoslovak
|
|
89 syn keyword splintFlag contained accessfile accessmodule accessslovak aliasunique allblock
|
|
90 syn keyword splintFlag contained allempty allglobs allimponly allmacros alwaysexits
|
|
91 syn keyword splintFlag contained annotationerror ansi89limits assignexpose badflag bitwisesigned
|
|
92 syn keyword splintFlag contained boolcompare boolfalse boolint boolops booltrue
|
|
93 syn keyword splintFlag contained booltype bounds boundscompacterrormessages boundsread boundswrite
|
|
94 syn keyword splintFlag contained branchstate bufferoverflow bufferoverflowhigh bugslimit casebreak
|
|
95 syn keyword splintFlag contained caseinsensitivefilenames castexpose castfcnptr charindex charint
|
|
96 syn keyword splintFlag contained charintliteral charunsignedchar checkedglobalias checkmodglobalias checkpost
|
|
97 syn keyword splintFlag contained checkstrictglobalias checkstrictglobs codeimponly commentchar commenterror
|
|
98 syn keyword splintFlag contained compdef compdestroy compmempass constmacros constprefix
|
|
99 syn keyword splintFlag contained constprefixexclude constuse continuecomment controlnestdepth cppnames
|
|
100 syn keyword splintFlag contained csvoverwrite czech czechconsts czechfcns czechmacros
|
|
101 syn keyword splintFlag contained czechoslovak czechoslovakconsts czechoslovakfcns czechoslovakmacros czechoslovaktypes
|
|
102 syn keyword splintFlag contained czechoslovakvars czechtypes czechvars debugfcnconstraint declundef
|
|
103 syn keyword splintFlag contained deepbreak deparrays dependenttrans distinctexternalnames distinctinternalnames
|
|
104 syn keyword splintFlag contained duplicatecases duplicatequals elseifcomplete emptyret enumindex
|
|
105 syn keyword splintFlag contained enumint enummembers enummemuse enumprefix enumprefixexclude
|
|
106 syn keyword splintFlag contained evalorder evalorderuncon exitarg exportany exportconst
|
|
107 syn keyword splintFlag contained exportfcn exportheader exportheadervar exportiter exportlocal
|
|
108 syn keyword splintFlag contained exportmacro exporttype exportvar exposetrans externalnamecaseinsensitive
|
|
109 syn keyword splintFlag contained externalnamelen externalprefix externalprefixexclude fcnderef fcnmacros
|
|
110 syn keyword splintFlag contained fcnpost fcnuse fielduse fileextensions filestaticprefix
|
|
111 syn keyword splintFlag contained filestaticprefixexclude firstcase fixedformalarray floatdouble forblock
|
|
112 syn keyword splintFlag contained forcehints forempty forloopexec formalarray formatcode
|
|
113 syn keyword splintFlag contained formatconst formattype forwarddecl freshtrans fullinitblock
|
|
114 syn keyword splintFlag contained globalias globalprefix globalprefixexclude globimponly globnoglobs
|
|
115 syn keyword splintFlag contained globs globsimpmodsnothing globstate globuse gnuextensions
|
|
116 syn keyword splintFlag contained grammar hasyield hints htmlfileformat ifblock
|
|
117 syn keyword splintFlag contained ifempty ignorequals ignoresigns immediatetrans impabstract
|
|
118 syn keyword splintFlag contained impcheckedglobs impcheckedspecglobs impcheckedstatics impcheckedstrictglobs impcheckedstrictspecglobs
|
|
119 syn keyword splintFlag contained impcheckedstrictstatics impcheckmodglobs impcheckmodinternals impcheckmodspecglobs impcheckmodstatics
|
|
120 syn keyword splintFlag contained impconj implementationoptional implictconstraint impouts imptype
|
|
121 syn keyword splintFlag contained includenest incompletetype incondefs incondefslib indentspaces
|
|
122 syn keyword splintFlag contained infloops infloopsuncon initallelements initsize internalglobs
|
|
123 syn keyword splintFlag contained internalglobsnoglobs internalnamecaseinsensitive internalnamelen internalnamelookalike iso99limits
|
|
124 syn keyword splintFlag contained isoreserved isoreservedinternal iterbalance iterloopexec iterprefix
|
|
125 syn keyword splintFlag contained iterprefixexclude iteryield its4low its4moderate its4mostrisky
|
|
126 syn keyword splintFlag contained its4risky its4veryrisky keep keeptrans kepttrans
|
|
127 syn keyword splintFlag contained legacy libmacros likelyboundsread likelyboundswrite likelybool
|
|
128 syn keyword splintFlag contained likelybounds limit linelen lintcomments localprefix
|
|
129 syn keyword splintFlag contained localprefixexclude locindentspaces longint longintegral longsignedintegral
|
|
130 syn keyword splintFlag contained longunsignedintegral longunsignedunsignedintegral loopexec looploopbreak looploopcontinue
|
|
131 syn keyword splintFlag contained loopswitchbreak macroassign macroconstdecl macrodecl macroempty
|
|
132 syn keyword splintFlag contained macrofcndecl macromatchname macroparams macroparens macroredef
|
|
133 syn keyword splintFlag contained macroreturn macrostmt macrounrecog macrovarprefix macrovarprefixexclude
|
|
134 syn keyword splintFlag contained maintype matchanyintegral matchfields mayaliasunique memchecks
|
|
135 syn keyword splintFlag contained memimp memtrans misplacedsharequal misscase modfilesys
|
|
136 syn keyword splintFlag contained modglobs modglobsnomods modglobsunchecked modinternalstrict modnomods
|
|
137 syn keyword splintFlag contained modobserver modobserveruncon mods modsimpnoglobs modstrictglobsnomods
|
|
138 syn keyword splintFlag contained moduncon modunconnomods modunspec multithreaded mustdefine
|
|
139 syn keyword splintFlag contained mustfree mustfreefresh mustfreeonly mustmod mustnotalias
|
|
140 syn keyword splintFlag contained mutrep namechecks needspec nestcomment nestedextern
|
|
141 syn keyword splintFlag contained newdecl newreftrans nextlinemacros noaccess nocomments
|
|
142 syn keyword splintFlag contained noeffect noeffectuncon noparams nopp noret
|
|
143 syn keyword splintFlag contained null nullassign nullderef nullinit nullpass
|
|
144 syn keyword splintFlag contained nullptrarith nullret nullstate nullterminated
|
|
145 syn keyword splintFlag contained numabstract numabstractcast numabstractindex numabstractlit numabstractprint
|
|
146 syn keyword splintFlag contained numenummembers numliteral numstructfields observertrans obviousloopexec
|
|
147 syn keyword splintFlag contained oldstyle onlytrans onlyunqglobaltrans orconstraint overload
|
|
148 syn keyword splintFlag contained ownedtrans paramimptemp paramuse parenfileformat partial
|
|
149 syn keyword splintFlag contained passunknown portability predassign predbool predboolint
|
|
150 syn keyword splintFlag contained predboolothers predboolptr preproc protoparammatch protoparamname
|
|
151 syn keyword splintFlag contained protoparamprefix protoparamprefixexclude ptrarith ptrcompare ptrnegate
|
|
152 syn keyword splintFlag contained quiet readonlystrings readonlytrans realcompare redecl
|
|
153 syn keyword splintFlag contained redef redundantconstraints redundantsharequal refcounttrans relaxquals
|
|
154 syn keyword splintFlag contained relaxtypes repeatunrecog repexpose retalias retexpose
|
|
155 syn keyword splintFlag contained retimponly retval retvalbool retvalint retvalother
|
|
156 syn keyword splintFlag contained sefparams sefuncon shadow sharedtrans shiftimplementation
|
|
157 syn keyword splintFlag contained shiftnegative shortint showallconjs showcolumn showconstraintlocation
|
|
158 syn keyword splintFlag contained showconstraintparens showdeephistory showfunc showloadloc showscan
|
|
159 syn keyword splintFlag contained showsourceloc showsummary sizeofformalarray sizeoftype skipisoheaders
|
|
160 syn keyword splintFlag contained skipposixheaders slashslashcomment slovak slovakconsts slovakfcns
|
|
161 syn keyword splintFlag contained slovakmacros slovaktypes slovakvars specglobimponly specimponly
|
|
162 syn keyword splintFlag contained specmacros specretimponly specstructimponly specundecl specundef
|
|
163 syn keyword splintFlag contained stackref statemerge statetransfer staticinittrans statictrans
|
|
164 syn keyword splintFlag contained strictbranchstate strictdestroy strictops strictusereleased stringliterallen
|
|
165 syn keyword splintFlag contained stringliteralnoroom stringliteralnoroomfinalnull stringliteralsmaller stringliteraltoolong structimponly
|
|
166 syn keyword splintFlag contained superuser switchloopbreak switchswitchbreak syntax sysdirerrors
|
|
167 syn keyword splintFlag contained sysdirexpandmacros sysunrecog tagprefix tagprefixexclude temptrans
|
|
168 syn keyword splintFlag contained tmpcomments toctou topuse trytorecover type
|
|
169 syn keyword splintFlag contained typeprefix typeprefixexclude typeuse uncheckedglobalias uncheckedmacroprefix
|
|
170 syn keyword splintFlag contained uncheckedmacroprefixexclude uniondef unixstandard unqualifiedinittrans unqualifiedtrans
|
|
171 syn keyword splintFlag contained unreachable unrecog unrecogcomments unrecogdirective unrecogflagcomments
|
|
172 syn keyword splintFlag contained unsignedcompare unusedspecial usedef usereleased usevarargs
|
|
173 syn keyword splintFlag contained varuse voidabstract warnflags warnlintcomments warnmissingglobs
|
|
174 syn keyword splintFlag contained warnmissingglobsnoglobs warnposixheaders warnrc warnsysfiles warnunixlib
|
|
175 syn keyword splintFlag contained warnuse whileblock whileempty whileloopexec zerobool
|
|
176 syn keyword splintFlag contained zeroptr
|
|
177 " Global Flags:
|
|
178 syn keyword splintGlobalFlag contained csv dump errorstream errorstreamstderr errorstreamstdout
|
|
179 syn keyword splintGlobalFlag contained expect f help i isolib
|
|
180 syn keyword splintGlobalFlag contained larchpath lclexpect lclimportdir lcs lh
|
|
181 syn keyword splintGlobalFlag contained load messagestream messagestreamstderr messagestreamstdout mts
|
|
182 syn keyword splintGlobalFlag contained neverinclude nof nolib posixlib posixstrictlib
|
|
183 syn keyword splintGlobalFlag contained showalluses singleinclude skipsysheaders stats streamoverwrite
|
|
184 syn keyword splintGlobalFlag contained strictlib supcounts sysdirs timedist tmpdir
|
|
185 syn keyword splintGlobalFlag contained unixlib unixstrictlib warningstream warningstreamstderr warningstreamstdout
|
|
186 syn keyword splintGlobalFlag contained whichlib
|
|
187 syn match splintFlagExpr contained "[\+\-\=]" nextgroup=splintFlag,splintGlobalFlag
|
|
188
|
|
189 " detect missing /*@ and wrong */
|
|
190 syn match splintAnnError "@\*/"
|
|
191 syn cluster cCommentGroup add=splintAnnError
|
|
192 syn match splintAnnError2 "[^@]\*/"hs=s+1 contained
|
|
193 syn region splintAnnotation start="/\*@" end="@\*/" contains=@splintAnnotElem,cType keepend
|
|
194 syn match splintShortAnn "/\*@\*/"
|
|
195 syn cluster splintAnnotElem contains=splintStateAnnot,splintSpecialAnnot,splintSpecTag,splintModifies,splintRequires,splintGlobals,splintGlobitem,splintGlobannot,splintWarning,splintModitem,splintIter,splintConst,splintAlt,splintType,splintGlobalType,splintMemMgm,splintAlias,splintExposure,splintDefState,splintGlobState,splintNullState,splintNullPred,splintExit,splintExec,splintSef,splintDecl,splintCase,splintBreak,splintUnreach,splintSpecFunc,splintErrSupp,splintTypeAcc,splintMacro,splintSpecType,splintAnnError2,splintFlagExpr
|
|
196 syn cluster splintAllStuff contains=@splintAnnotElem,splintFlag,splintGlobalFlag
|
|
197 syn cluster cParenGroup add=@splintAllStuff
|
|
198 syn cluster cPreProcGroup add=@splintAllStuff
|
|
199 syn cluster cMultiGroup add=@splintAllStuff
|
|
200
|
|
201 " Define the default highlighting.
|
|
202 " For version 5.7 and earlier: only when not done already
|
|
203 " For version 5.8 and later: only when an item doesn't have highlighting yet
|
|
204 if version >= 508 || !exists("did_splint_syntax_inits")
|
|
205 if version < 508
|
|
206 let did_splint_syntax_inits = 1
|
|
207 command -nargs=+ HiLink hi link <args>
|
|
208 else
|
|
209 command -nargs=+ HiLink hi def link <args>
|
|
210 endif
|
|
211
|
|
212 HiLink splintShortAnn splintAnnotation
|
|
213 HiLink splintAnnotation Comment
|
|
214 HiLink splintAnnError splintError
|
|
215 HiLink splintAnnError2 splintError
|
|
216 HiLink splintFlag SpecialComment
|
|
217 HiLink splintGlobalFlag splintError
|
|
218 HiLink splintSpecialAnnot splintAnnKey
|
|
219 HiLink splintStateAnnot splintAnnKey
|
|
220 HiLink splintSpecTag splintAnnKey
|
|
221 HiLink splintModifies splintAnnKey
|
|
222 HiLink splintRequires splintAnnKey
|
|
223 HiLink splintGlobals splintAnnKey
|
|
224 HiLink splintGlobitem Constant
|
|
225 HiLink splintGlobannot splintAnnKey
|
|
226 HiLink splintWarning splintAnnKey
|
|
227 HiLink splintModitem Constant
|
|
228 HiLink splintIter splintAnnKey
|
|
229 HiLink splintConst splintAnnKey
|
|
230 HiLink splintAlt splintAnnKey
|
|
231 HiLink splintType splintAnnKey
|
|
232 HiLink splintGlobalType splintAnnKey
|
|
233 HiLink splintMemMgm splintAnnKey
|
|
234 HiLink splintAlias splintAnnKey
|
|
235 HiLink splintExposure splintAnnKey
|
|
236 HiLink splintDefState splintAnnKey
|
|
237 HiLink splintGlobState splintAnnKey
|
|
238 HiLink splintNullState splintAnnKey
|
|
239 HiLink splintNullPred splintAnnKey
|
|
240 HiLink splintExit splintAnnKey
|
|
241 HiLink splintExec splintAnnKey
|
|
242 HiLink splintSef splintAnnKey
|
|
243 HiLink splintDecl splintAnnKey
|
|
244 HiLink splintCase splintAnnKey
|
|
245 HiLink splintBreak splintAnnKey
|
|
246 HiLink splintUnreach splintAnnKey
|
|
247 HiLink splintSpecFunc splintAnnKey
|
|
248 HiLink splintErrSupp splintAnnKey
|
|
249 HiLink splintTypeAcc splintAnnKey
|
|
250 HiLink splintMacro splintAnnKey
|
|
251 HiLink splintSpecType splintAnnKey
|
|
252 HiLink splintAnnKey Type
|
|
253 HiLink splintError Error
|
|
254
|
|
255 delcommand HiLink
|
|
256 endif
|
|
257
|
|
258 let b:current_syntax = "splint"
|
|
259
|
|
260 " vim: ts=8
|