1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: splint (C with lclint/splint Annotations) 3071d4279SBram Moolenaar" Maintainer: Ralf Wildenhues <[email protected]> 4071d4279SBram Moolenaar" Splint Home: http://www.splint.org/ 55c73622aSBram Moolenaar" Last Change: $Date: 2004/06/13 20:08:47 $ 65c73622aSBram Moolenaar" $Revision: 1.1 $ 7071d4279SBram Moolenaar 8071d4279SBram Moolenaar" Note: Splint annotated files are not detected by default. 9071d4279SBram Moolenaar" If you want to use this file for highlighting C code, 10071d4279SBram Moolenaar" please make sure splint.vim is sourced instead of c.vim, 11071d4279SBram Moolenaar" for example by putting 12071d4279SBram Moolenaar" /* vim: set filetype=splint : */ 13071d4279SBram Moolenaar" at the end of your code or something like 14071d4279SBram Moolenaar" au! BufRead,BufNewFile *.c setfiletype splint 15071d4279SBram Moolenaar" in your vimrc file or filetype.vim 16071d4279SBram Moolenaar 17071d4279SBram Moolenaar 1889bcfda6SBram Moolenaar" quit when a syntax file was already loaded 1989bcfda6SBram Moolenaarif exists("b:current_syntax") 20071d4279SBram Moolenaar finish 21071d4279SBram Moolenaarendif 22071d4279SBram Moolenaar 23071d4279SBram Moolenaar" Read the C syntax to start with 24071d4279SBram Moolenaarruntime! syntax/c.vim 25071d4279SBram Moolenaar 26071d4279SBram Moolenaar 27071d4279SBram Moolenaar" FIXME: uses and changes several clusters defined in c.vim 28071d4279SBram Moolenaar" so watch for changes there 29071d4279SBram Moolenaar 30071d4279SBram Moolenaar" TODO: make a little more grammar explicit 31071d4279SBram Moolenaar" match flags with hyphen and underscore notation 32071d4279SBram Moolenaar" match flag expanded forms 33071d4279SBram Moolenaar" accept other comment char than @ 34071d4279SBram Moolenaar 35071d4279SBram Moolenaarsyn case match 36071d4279SBram Moolenaar" splint annotations (taken from 'splint -help annotations') 37071d4279SBram Moolenaarsyn match splintStateAnnot contained "\(pre\|post\):\(only\|shared\|owned\|dependent\|observer\|exposed\|isnull\|notnull\)" 38071d4279SBram Moolenaarsyn keyword splintSpecialAnnot contained special 39071d4279SBram Moolenaarsyn keyword splintSpecTag contained uses sets defines allocated releases 40071d4279SBram Moolenaarsyn keyword splintModifies contained modifies 41071d4279SBram Moolenaarsyn keyword splintRequires contained requires ensures 42071d4279SBram Moolenaarsyn keyword splintGlobals contained globals 43071d4279SBram Moolenaarsyn keyword splintGlobitem contained internalState fileSystem 44071d4279SBram Moolenaarsyn keyword splintGlobannot contained undef killed 45071d4279SBram Moolenaarsyn keyword splintWarning contained warn 46071d4279SBram Moolenaar 47071d4279SBram Moolenaarsyn keyword splintModitem contained internalState fileSystem nothing 48071d4279SBram Moolenaarsyn keyword splintReqitem contained MaxSet MaxRead result 49071d4279SBram Moolenaarsyn keyword splintIter contained iter yield 50071d4279SBram Moolenaarsyn keyword splintConst contained constant 51071d4279SBram Moolenaarsyn keyword splintAlt contained alt 52071d4279SBram Moolenaar 53071d4279SBram Moolenaarsyn keyword splintType contained abstract concrete mutable immutable refcounted numabstract 54071d4279SBram Moolenaarsyn keyword splintGlobalType contained unchecked checkmod checked checkedstrict 55071d4279SBram Moolenaarsyn keyword splintMemMgm contained dependent keep killref only owned shared temp 56071d4279SBram Moolenaarsyn keyword splintAlias contained unique returned 57071d4279SBram Moolenaarsyn keyword splintExposure contained observer exposed 58071d4279SBram Moolenaarsyn keyword splintDefState contained out in partial reldef 59071d4279SBram Moolenaarsyn keyword splintGlobState contained undef killed 60071d4279SBram Moolenaarsyn keyword splintNullState contained null notnull relnull 61071d4279SBram Moolenaarsyn keyword splintNullPred contained truenull falsenull nullwhentrue falsewhennull 62071d4279SBram Moolenaarsyn keyword splintExit contained exits mayexit trueexit falseexit neverexit 63071d4279SBram Moolenaarsyn keyword splintExec contained noreturn maynotreturn noreturnwhentrue noreturnwhenfalse alwaysreturns 64071d4279SBram Moolenaarsyn keyword splintSef contained sef 65071d4279SBram Moolenaarsyn keyword splintDecl contained unused external 66071d4279SBram Moolenaarsyn keyword splintCase contained fallthrough 67071d4279SBram Moolenaarsyn keyword splintBreak contained innerbreak loopbreak switchbreak innercontinue 68071d4279SBram Moolenaarsyn keyword splintUnreach contained notreached 69071d4279SBram Moolenaarsyn keyword splintSpecFunc contained printflike scanflike messagelike 70071d4279SBram Moolenaar 71071d4279SBram Moolenaar" TODO: make these region or match 72071d4279SBram Moolenaarsyn keyword splintErrSupp contained i ignore end t 73071d4279SBram Moolenaarsyn match splintErrSupp contained "[it]\d\+\>" 74071d4279SBram Moolenaarsyn keyword splintTypeAcc contained access noaccess 75071d4279SBram Moolenaar 76071d4279SBram Moolenaarsyn keyword splintMacro contained notfunction 77071d4279SBram Moolenaarsyn match splintSpecType contained "\(\|unsigned\|signed\)integraltype" 78071d4279SBram Moolenaar 79071d4279SBram Moolenaar" Flags taken from 'splint -help flags full' divided in local and global flags 80071d4279SBram Moolenaar" Local Flags: 81071d4279SBram Moolenaarsyn keyword splintFlag contained abstract abstractcompare accessall accessczech accessczechoslovak 82071d4279SBram Moolenaarsyn keyword splintFlag contained accessfile accessmodule accessslovak aliasunique allblock 83071d4279SBram Moolenaarsyn keyword splintFlag contained allempty allglobs allimponly allmacros alwaysexits 84071d4279SBram Moolenaarsyn keyword splintFlag contained annotationerror ansi89limits assignexpose badflag bitwisesigned 85071d4279SBram Moolenaarsyn keyword splintFlag contained boolcompare boolfalse boolint boolops booltrue 86071d4279SBram Moolenaarsyn keyword splintFlag contained booltype bounds boundscompacterrormessages boundsread boundswrite 87071d4279SBram Moolenaarsyn keyword splintFlag contained branchstate bufferoverflow bufferoverflowhigh bugslimit casebreak 88071d4279SBram Moolenaarsyn keyword splintFlag contained caseinsensitivefilenames castexpose castfcnptr charindex charint 89071d4279SBram Moolenaarsyn keyword splintFlag contained charintliteral charunsignedchar checkedglobalias checkmodglobalias checkpost 90071d4279SBram Moolenaarsyn keyword splintFlag contained checkstrictglobalias checkstrictglobs codeimponly commentchar commenterror 91071d4279SBram Moolenaarsyn keyword splintFlag contained compdef compdestroy compmempass constmacros constprefix 92071d4279SBram Moolenaarsyn keyword splintFlag contained constprefixexclude constuse continuecomment controlnestdepth cppnames 93071d4279SBram Moolenaarsyn keyword splintFlag contained csvoverwrite czech czechconsts czechfcns czechmacros 94071d4279SBram Moolenaarsyn keyword splintFlag contained czechoslovak czechoslovakconsts czechoslovakfcns czechoslovakmacros czechoslovaktypes 95071d4279SBram Moolenaarsyn keyword splintFlag contained czechoslovakvars czechtypes czechvars debugfcnconstraint declundef 96071d4279SBram Moolenaarsyn keyword splintFlag contained deepbreak deparrays dependenttrans distinctexternalnames distinctinternalnames 97071d4279SBram Moolenaarsyn keyword splintFlag contained duplicatecases duplicatequals elseifcomplete emptyret enumindex 98071d4279SBram Moolenaarsyn keyword splintFlag contained enumint enummembers enummemuse enumprefix enumprefixexclude 99071d4279SBram Moolenaarsyn keyword splintFlag contained evalorder evalorderuncon exitarg exportany exportconst 100071d4279SBram Moolenaarsyn keyword splintFlag contained exportfcn exportheader exportheadervar exportiter exportlocal 101071d4279SBram Moolenaarsyn keyword splintFlag contained exportmacro exporttype exportvar exposetrans externalnamecaseinsensitive 102071d4279SBram Moolenaarsyn keyword splintFlag contained externalnamelen externalprefix externalprefixexclude fcnderef fcnmacros 103071d4279SBram Moolenaarsyn keyword splintFlag contained fcnpost fcnuse fielduse fileextensions filestaticprefix 104071d4279SBram Moolenaarsyn keyword splintFlag contained filestaticprefixexclude firstcase fixedformalarray floatdouble forblock 105071d4279SBram Moolenaarsyn keyword splintFlag contained forcehints forempty forloopexec formalarray formatcode 106071d4279SBram Moolenaarsyn keyword splintFlag contained formatconst formattype forwarddecl freshtrans fullinitblock 107071d4279SBram Moolenaarsyn keyword splintFlag contained globalias globalprefix globalprefixexclude globimponly globnoglobs 108071d4279SBram Moolenaarsyn keyword splintFlag contained globs globsimpmodsnothing globstate globuse gnuextensions 109071d4279SBram Moolenaarsyn keyword splintFlag contained grammar hasyield hints htmlfileformat ifblock 110071d4279SBram Moolenaarsyn keyword splintFlag contained ifempty ignorequals ignoresigns immediatetrans impabstract 111071d4279SBram Moolenaarsyn keyword splintFlag contained impcheckedglobs impcheckedspecglobs impcheckedstatics impcheckedstrictglobs impcheckedstrictspecglobs 112071d4279SBram Moolenaarsyn keyword splintFlag contained impcheckedstrictstatics impcheckmodglobs impcheckmodinternals impcheckmodspecglobs impcheckmodstatics 113071d4279SBram Moolenaarsyn keyword splintFlag contained impconj implementationoptional implictconstraint impouts imptype 114071d4279SBram Moolenaarsyn keyword splintFlag contained includenest incompletetype incondefs incondefslib indentspaces 115071d4279SBram Moolenaarsyn keyword splintFlag contained infloops infloopsuncon initallelements initsize internalglobs 116071d4279SBram Moolenaarsyn keyword splintFlag contained internalglobsnoglobs internalnamecaseinsensitive internalnamelen internalnamelookalike iso99limits 117071d4279SBram Moolenaarsyn keyword splintFlag contained isoreserved isoreservedinternal iterbalance iterloopexec iterprefix 118071d4279SBram Moolenaarsyn keyword splintFlag contained iterprefixexclude iteryield its4low its4moderate its4mostrisky 119071d4279SBram Moolenaarsyn keyword splintFlag contained its4risky its4veryrisky keep keeptrans kepttrans 120071d4279SBram Moolenaarsyn keyword splintFlag contained legacy libmacros likelyboundsread likelyboundswrite likelybool 121071d4279SBram Moolenaarsyn keyword splintFlag contained likelybounds limit linelen lintcomments localprefix 122071d4279SBram Moolenaarsyn keyword splintFlag contained localprefixexclude locindentspaces longint longintegral longsignedintegral 123071d4279SBram Moolenaarsyn keyword splintFlag contained longunsignedintegral longunsignedunsignedintegral loopexec looploopbreak looploopcontinue 124071d4279SBram Moolenaarsyn keyword splintFlag contained loopswitchbreak macroassign macroconstdecl macrodecl macroempty 125071d4279SBram Moolenaarsyn keyword splintFlag contained macrofcndecl macromatchname macroparams macroparens macroredef 126071d4279SBram Moolenaarsyn keyword splintFlag contained macroreturn macrostmt macrounrecog macrovarprefix macrovarprefixexclude 127071d4279SBram Moolenaarsyn keyword splintFlag contained maintype matchanyintegral matchfields mayaliasunique memchecks 128071d4279SBram Moolenaarsyn keyword splintFlag contained memimp memtrans misplacedsharequal misscase modfilesys 129071d4279SBram Moolenaarsyn keyword splintFlag contained modglobs modglobsnomods modglobsunchecked modinternalstrict modnomods 130071d4279SBram Moolenaarsyn keyword splintFlag contained modobserver modobserveruncon mods modsimpnoglobs modstrictglobsnomods 131071d4279SBram Moolenaarsyn keyword splintFlag contained moduncon modunconnomods modunspec multithreaded mustdefine 132071d4279SBram Moolenaarsyn keyword splintFlag contained mustfree mustfreefresh mustfreeonly mustmod mustnotalias 133071d4279SBram Moolenaarsyn keyword splintFlag contained mutrep namechecks needspec nestcomment nestedextern 134071d4279SBram Moolenaarsyn keyword splintFlag contained newdecl newreftrans nextlinemacros noaccess nocomments 135071d4279SBram Moolenaarsyn keyword splintFlag contained noeffect noeffectuncon noparams nopp noret 136071d4279SBram Moolenaarsyn keyword splintFlag contained null nullassign nullderef nullinit nullpass 137071d4279SBram Moolenaarsyn keyword splintFlag contained nullptrarith nullret nullstate nullterminated 138071d4279SBram Moolenaarsyn keyword splintFlag contained numabstract numabstractcast numabstractindex numabstractlit numabstractprint 139071d4279SBram Moolenaarsyn keyword splintFlag contained numenummembers numliteral numstructfields observertrans obviousloopexec 140071d4279SBram Moolenaarsyn keyword splintFlag contained oldstyle onlytrans onlyunqglobaltrans orconstraint overload 141071d4279SBram Moolenaarsyn keyword splintFlag contained ownedtrans paramimptemp paramuse parenfileformat partial 142071d4279SBram Moolenaarsyn keyword splintFlag contained passunknown portability predassign predbool predboolint 143071d4279SBram Moolenaarsyn keyword splintFlag contained predboolothers predboolptr preproc protoparammatch protoparamname 144071d4279SBram Moolenaarsyn keyword splintFlag contained protoparamprefix protoparamprefixexclude ptrarith ptrcompare ptrnegate 145071d4279SBram Moolenaarsyn keyword splintFlag contained quiet readonlystrings readonlytrans realcompare redecl 146071d4279SBram Moolenaarsyn keyword splintFlag contained redef redundantconstraints redundantsharequal refcounttrans relaxquals 147071d4279SBram Moolenaarsyn keyword splintFlag contained relaxtypes repeatunrecog repexpose retalias retexpose 148071d4279SBram Moolenaarsyn keyword splintFlag contained retimponly retval retvalbool retvalint retvalother 149071d4279SBram Moolenaarsyn keyword splintFlag contained sefparams sefuncon shadow sharedtrans shiftimplementation 150071d4279SBram Moolenaarsyn keyword splintFlag contained shiftnegative shortint showallconjs showcolumn showconstraintlocation 151071d4279SBram Moolenaarsyn keyword splintFlag contained showconstraintparens showdeephistory showfunc showloadloc showscan 152071d4279SBram Moolenaarsyn keyword splintFlag contained showsourceloc showsummary sizeofformalarray sizeoftype skipisoheaders 153071d4279SBram Moolenaarsyn keyword splintFlag contained skipposixheaders slashslashcomment slovak slovakconsts slovakfcns 154071d4279SBram Moolenaarsyn keyword splintFlag contained slovakmacros slovaktypes slovakvars specglobimponly specimponly 155071d4279SBram Moolenaarsyn keyword splintFlag contained specmacros specretimponly specstructimponly specundecl specundef 156071d4279SBram Moolenaarsyn keyword splintFlag contained stackref statemerge statetransfer staticinittrans statictrans 157071d4279SBram Moolenaarsyn keyword splintFlag contained strictbranchstate strictdestroy strictops strictusereleased stringliterallen 158071d4279SBram Moolenaarsyn keyword splintFlag contained stringliteralnoroom stringliteralnoroomfinalnull stringliteralsmaller stringliteraltoolong structimponly 159071d4279SBram Moolenaarsyn keyword splintFlag contained superuser switchloopbreak switchswitchbreak syntax sysdirerrors 160071d4279SBram Moolenaarsyn keyword splintFlag contained sysdirexpandmacros sysunrecog tagprefix tagprefixexclude temptrans 161071d4279SBram Moolenaarsyn keyword splintFlag contained tmpcomments toctou topuse trytorecover type 162071d4279SBram Moolenaarsyn keyword splintFlag contained typeprefix typeprefixexclude typeuse uncheckedglobalias uncheckedmacroprefix 163071d4279SBram Moolenaarsyn keyword splintFlag contained uncheckedmacroprefixexclude uniondef unixstandard unqualifiedinittrans unqualifiedtrans 164071d4279SBram Moolenaarsyn keyword splintFlag contained unreachable unrecog unrecogcomments unrecogdirective unrecogflagcomments 165071d4279SBram Moolenaarsyn keyword splintFlag contained unsignedcompare unusedspecial usedef usereleased usevarargs 166071d4279SBram Moolenaarsyn keyword splintFlag contained varuse voidabstract warnflags warnlintcomments warnmissingglobs 167071d4279SBram Moolenaarsyn keyword splintFlag contained warnmissingglobsnoglobs warnposixheaders warnrc warnsysfiles warnunixlib 168071d4279SBram Moolenaarsyn keyword splintFlag contained warnuse whileblock whileempty whileloopexec zerobool 169071d4279SBram Moolenaarsyn keyword splintFlag contained zeroptr 170071d4279SBram Moolenaar" Global Flags: 171071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained csv dump errorstream errorstreamstderr errorstreamstdout 172071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained expect f help i isolib 173071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained larchpath lclexpect lclimportdir lcs lh 174071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained load messagestream messagestreamstderr messagestreamstdout mts 175071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained neverinclude nof nolib posixlib posixstrictlib 176071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained showalluses singleinclude skipsysheaders stats streamoverwrite 177071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained strictlib supcounts sysdirs timedist tmpdir 178071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained unixlib unixstrictlib warningstream warningstreamstderr warningstreamstdout 179071d4279SBram Moolenaarsyn keyword splintGlobalFlag contained whichlib 180071d4279SBram Moolenaarsyn match splintFlagExpr contained "[\+\-\=]" nextgroup=splintFlag,splintGlobalFlag 181071d4279SBram Moolenaar 182071d4279SBram Moolenaar" detect missing /*@ and wrong */ 183071d4279SBram Moolenaarsyn match splintAnnError "@\*/" 184071d4279SBram Moolenaarsyn cluster cCommentGroup add=splintAnnError 185071d4279SBram Moolenaarsyn match splintAnnError2 "[^@]\*/"hs=s+1 contained 186071d4279SBram Moolenaarsyn region splintAnnotation start="/\*@" end="@\*/" contains=@splintAnnotElem,cType keepend 187071d4279SBram Moolenaarsyn match splintShortAnn "/\*@\*/" 188071d4279SBram Moolenaarsyn 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 189071d4279SBram Moolenaarsyn cluster splintAllStuff contains=@splintAnnotElem,splintFlag,splintGlobalFlag 190071d4279SBram Moolenaarsyn cluster cParenGroup add=@splintAllStuff 191071d4279SBram Moolenaarsyn cluster cPreProcGroup add=@splintAllStuff 192071d4279SBram Moolenaarsyn cluster cMultiGroup add=@splintAllStuff 193071d4279SBram Moolenaar 194071d4279SBram Moolenaar" Define the default highlighting. 19589bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 196071d4279SBram Moolenaar 197*f37506f6SBram Moolenaarhi def link splintShortAnn splintAnnotation 198*f37506f6SBram Moolenaarhi def link splintAnnotation Comment 199*f37506f6SBram Moolenaarhi def link splintAnnError splintError 200*f37506f6SBram Moolenaarhi def link splintAnnError2 splintError 201*f37506f6SBram Moolenaarhi def link splintFlag SpecialComment 202*f37506f6SBram Moolenaarhi def link splintGlobalFlag splintError 203*f37506f6SBram Moolenaarhi def link splintSpecialAnnot splintAnnKey 204*f37506f6SBram Moolenaarhi def link splintStateAnnot splintAnnKey 205*f37506f6SBram Moolenaarhi def link splintSpecTag splintAnnKey 206*f37506f6SBram Moolenaarhi def link splintModifies splintAnnKey 207*f37506f6SBram Moolenaarhi def link splintRequires splintAnnKey 208*f37506f6SBram Moolenaarhi def link splintGlobals splintAnnKey 209*f37506f6SBram Moolenaarhi def link splintGlobitem Constant 210*f37506f6SBram Moolenaarhi def link splintGlobannot splintAnnKey 211*f37506f6SBram Moolenaarhi def link splintWarning splintAnnKey 212*f37506f6SBram Moolenaarhi def link splintModitem Constant 213*f37506f6SBram Moolenaarhi def link splintIter splintAnnKey 214*f37506f6SBram Moolenaarhi def link splintConst splintAnnKey 215*f37506f6SBram Moolenaarhi def link splintAlt splintAnnKey 216*f37506f6SBram Moolenaarhi def link splintType splintAnnKey 217*f37506f6SBram Moolenaarhi def link splintGlobalType splintAnnKey 218*f37506f6SBram Moolenaarhi def link splintMemMgm splintAnnKey 219*f37506f6SBram Moolenaarhi def link splintAlias splintAnnKey 220*f37506f6SBram Moolenaarhi def link splintExposure splintAnnKey 221*f37506f6SBram Moolenaarhi def link splintDefState splintAnnKey 222*f37506f6SBram Moolenaarhi def link splintGlobState splintAnnKey 223*f37506f6SBram Moolenaarhi def link splintNullState splintAnnKey 224*f37506f6SBram Moolenaarhi def link splintNullPred splintAnnKey 225*f37506f6SBram Moolenaarhi def link splintExit splintAnnKey 226*f37506f6SBram Moolenaarhi def link splintExec splintAnnKey 227*f37506f6SBram Moolenaarhi def link splintSef splintAnnKey 228*f37506f6SBram Moolenaarhi def link splintDecl splintAnnKey 229*f37506f6SBram Moolenaarhi def link splintCase splintAnnKey 230*f37506f6SBram Moolenaarhi def link splintBreak splintAnnKey 231*f37506f6SBram Moolenaarhi def link splintUnreach splintAnnKey 232*f37506f6SBram Moolenaarhi def link splintSpecFunc splintAnnKey 233*f37506f6SBram Moolenaarhi def link splintErrSupp splintAnnKey 234*f37506f6SBram Moolenaarhi def link splintTypeAcc splintAnnKey 235*f37506f6SBram Moolenaarhi def link splintMacro splintAnnKey 236*f37506f6SBram Moolenaarhi def link splintSpecType splintAnnKey 237*f37506f6SBram Moolenaarhi def link splintAnnKey Type 238*f37506f6SBram Moolenaarhi def link splintError Error 239071d4279SBram Moolenaar 240071d4279SBram Moolenaar 241071d4279SBram Moolenaarlet b:current_syntax = "splint" 242071d4279SBram Moolenaar 243071d4279SBram Moolenaar" vim: ts=8 244