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