Warning, /frameworks/syntax-highlighting/data/syntax/viper.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language [<!ENTITY identifier "[a-zA-Z$_][a-zA-Z0-9$_'\[\]]*">]>
0003 
0004 <!-- The Viper intermediate verification language
0005      https://github.com/viperproject/silver -->
0006 <language name="Viper" section="Sources" version="1" kateversion="5.0" indenter="cstyle"
0007           extensions="*.vpr" mimetype="text/x-vpr" author="nishanthkarthik" license="MIT">
0008     <highlighting>
0009         <list name="blocks">
0010             <item>domain</item>
0011             <item>axiom</item>
0012             <item>define</item>
0013             <item>function</item>
0014             <item>predicate</item>
0015             <item>method</item>
0016             <item>field</item>
0017         </list>
0018 
0019         <list name="constants">
0020             <item>true</item>
0021             <item>false</item>
0022             <item>null</item>
0023         </list>
0024 
0025         <list name="controlFlow">
0026             <item>goto</item>
0027             <item>label</item>
0028             <item>if</item>
0029             <item>elseif</item>
0030             <item>else</item>
0031             <item>while</item>
0032         </list>
0033 
0034         <list name="kw">
0035             <item>result</item>
0036             <item>old</item>
0037             <item>acc</item>
0038 
0039             <item>none</item>
0040             <item>write</item>
0041             <item>epsilon</item>
0042             <item>wildcard</item>
0043             <item>perm</item>
0044             <item>unfolding</item>
0045             <item>folding</item>
0046             <item>applying</item>
0047             <item>packaging</item>
0048             <item>forperm</item>
0049             <item>constraining</item>
0050 
0051             <item>let</item>
0052             <item>in</item>
0053 
0054             <item>var</item>
0055             <item>fresh</item>
0056 
0057             <item>forall</item>
0058             <item>exists</item>
0059             <item>unique</item>
0060             <item>returns</item>
0061             <item>requires</item>
0062             <item>ensures</item>
0063             <item>invariant</item>
0064 
0065             <item>assert</item>
0066             <item>assume</item>
0067             <item>inhale</item>
0068             <item>exhale</item>
0069             <item>fold</item>
0070             <item>unfold</item>
0071 
0072             <item>wand</item>
0073             <item>package</item>
0074             <item>apply</item>
0075         </list>
0076 
0077         <list name="ops">
0078             <item>==</item>
0079             <item>!=</item>
0080             <item>==></item>
0081             <item>&lt;==></item>
0082             <item>||</item>
0083             <item>&amp;&amp;</item>
0084             <item>&lt;</item>
0085             <item>&gt;</item>
0086             <item>&lt;=</item>
0087             <item>&gt;=</item>
0088             <item>+</item>
0089             <item>-</item>
0090             <item>*</item>
0091             <item>/</item>
0092             <item>\\</item>
0093             <item>\%</item>
0094             <item>\/</item>
0095             <item>--*</item>
0096             <item>union</item>
0097             <item>intersection</item>
0098             <item>setminus</item>
0099             <item>++</item>
0100             <item>in</item>
0101             <item>subset</item>
0102             <item>!</item>
0103             <item>+</item>
0104             <item>-</item>
0105             <item>::</item>
0106         </list>
0107 
0108         <list name="types">
0109             <item>Int</item>
0110             <item>Bool</item>
0111             <item>Rational</item>
0112             <item>Perm</item>
0113             <item>Ref</item>
0114             <item>Seq</item>
0115             <item>Set</item>
0116             <item>Multiset</item>
0117         </list>
0118 
0119         <contexts>
0120             <context name="normal" attribute="Normal" lineEndContext="#stay">
0121                 <DetectSpaces/>
0122                 <WordDetect String="import" lookAhead="true" context="import"/>
0123                 <keyword String="blocks" lookAhead="true" context="block"/>
0124                 <WordDetect String="/*" lookAhead="true" context="mlComment"/>
0125                 <WordDetect String="//" lookAhead="true" context="comment"/>
0126                 <keyword String="constants" attribute="Constant"/>
0127                 <keyword String="kw" attribute="Keyword"/>
0128                 <RegExpr String="([:]{2})" context="quantifier" lookAhead="true"/>
0129                 <keyword String="ops" attribute="Operator"/>
0130                 <keyword String="types" attribute="DataType"/>
0131                 <keyword String="controlFlow" attribute="ControlFlow"/>
0132                 <DetectChar char="{" context="#stay" attribute="Operator" beginRegion="regionBraced"/>
0133                 <DetectChar char="}" context="#stay" attribute="Operator" endRegion="regionBraced"/>
0134                 <RegExpr String="(&identifier;)(\.\b&identifier;)" lookAhead="true" context="fieldAccess"/>
0135                 <Int attribute="DecVal"/>
0136             </context>
0137 
0138             <context name="quantifier" attribute="Normal" lineEndContext="#stay">
0139                 <StringDetect String="%1" dynamic="true"/>
0140                 <IncludeRules context="nextTrigger"/>
0141             </context>
0142 
0143             <context name="nextTrigger" attribute="Normal" lineEndContext="#stay">
0144                 <DetectChar char="{" context="#pop!inTrigger" attribute="TriggerZone"/>
0145                 <RegExpr String="[^\{\s]" context="#pop#pop"/>
0146             </context>
0147 
0148             <context name="inTrigger" attribute="Normal" lineEndContext="#stay">
0149                 <DetectChar char="}" context="#pop!nextTrigger" attribute="TriggerZone"/>
0150                 <RegExpr String="[^\}\s]" attribute="Italic"/>
0151             </context>
0152 
0153             <context name="import" attribute="Keyword" lineEndContext="#pop">
0154                 <WordDetect String="import" attribute="Keyword"/>
0155                 <DetectChar char='"' context="string" attribute="String"/>
0156             </context>
0157 
0158             <context name="fieldAccess" attribute="Normal" lineEndContext="#stay">
0159                 <StringDetect String="%1" dynamic="true" context="#stay"/>
0160                 <StringDetect String="%2" attribute="Field" dynamic="true" context="#pop"/>
0161             </context>
0162 
0163             <context name="block" attribute="Normal" lineEndContext="#stay">
0164                 <keyword String="blocks" attribute="Keyword"/>
0165                 <AnyChar String="{[(" lookAhead="true" context="#pop"/>
0166                 <RegExpr String="&identifier;" attribute="Declaration" context="#pop"/>
0167             </context>
0168 
0169             <context name="string" attribute="String" lineEndContext="#stay">
0170                 <RegExpr String='[^"]+' attribute="String" context="#stay"/>
0171                 <DetectChar char='"' attribute="String" context="#pop"/>
0172             </context>
0173 
0174             <context name="comment" attribute="Comment" lineEndContext="#pop">
0175                 <Detect2Chars char="/" char1="/"/>
0176             </context>
0177 
0178             <context name="mlComment" attribute="Comment" lineEndContext="#stay">
0179                 <Detect2Chars char="/" char1="*"/>
0180                 <RegExpr String="[^(*/)]*"/>
0181                 <Detect2Chars char="*" char1="/" attribute="Comment" context="#pop"/>
0182             </context>
0183         </contexts>
0184 
0185         <itemDatas>
0186             <itemData name="Declaration" defStyleNum="dsFunction"/>
0187             <itemData name="Italic" defStyleNum="dsNormal" italic="true"/>
0188             <itemData name="Field" defStyleNum="dsNormal" italic="true"/>
0189             <itemData name="TriggerZone" defStyleNum="dsSpecialChar"/>
0190 
0191             <itemData name="Normal" defStyleNum="dsNormal"/>
0192             <itemData name="Keyword" defStyleNum="dsKeyword"/>
0193             <itemData name="ControlFlow" defStyleNum="dsControlFlow"/>
0194             <itemData name="Operator" defStyleNum="dsOperator"/>
0195             <itemData name="String" defStyleNum="dsString"/>
0196             <itemData name="DataType" defStyleNum="dsDataType"/>
0197             <itemData name="DecVal" defStyleNum="dsDecVal"/>
0198             <itemData name="Constant" defStyleNum="dsConstant"/>
0199             <itemData name="Comment" defStyleNum="dsComment"/>
0200         </itemDatas>
0201     </highlighting>
0202 </language>