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

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language
0003 [
0004     <!ENTITY hex "[\da-fA-F]">
0005     <!ENTITY label "(?&lt;=^|\s|{)\:\w+">
0006     <!ENTITY typeIdentifiers "ZBSCIJFD">
0007     <!ENTITY fieldTypeLookBehind "\w\:">
0008     <!ENTITY fieldLookBehind "[\s,;\(\)]">
0009     <!ENTITY builtin "(javax?|dalvik|android)/[\w\$/]+">
0010 
0011     <!ENTITY float1 "\-?\d*(\d+\.|\.\d+|\d+)\d*[eE][\-\+]?\d+[dDfF]?\b">
0012     <!ENTITY float2 "\-?\d*(\d+\.|\.\d+)\d*[dDfF]?">
0013     <!ENTITY float3 "\-?\d+[dDfF]\b">
0014     <!ENTITY float4 "\-?0x&hex;*(\.|&hex;+)&hex;*[pP]\-?\d+[dDfF]?\b">
0015 ]>
0016 <language name="Smali" version="4" kateversion="5.0" section="Sources" extensions="*.smali" mimetype="text/x-smali" license="MIT">
0017     <highlighting>
0018         <list name="mnemonics">
0019             <item>nop</item>
0020             <item>move</item>
0021             <item>move/from16</item>
0022             <item>move/16</item>
0023             <item>move-wide</item>
0024             <item>move-wide/from16</item>
0025             <item>move-wide/16</item>
0026             <item>move-object</item>
0027             <item>move-object/from16</item>
0028             <item>move-object/16</item>
0029             <item>move-result</item>
0030             <item>move-result-wide</item>
0031             <item>move-result-object</item>
0032             <item>move-exception</item>
0033             <item>return-void</item>
0034             <item>return</item>
0035             <item>return-wide</item>
0036             <item>return-object</item>
0037             <item>const/4</item>
0038             <item>const/16</item>
0039             <item>const</item>
0040             <item>const/high16</item>
0041             <item>const-wide/16</item>
0042             <item>const-wide/32</item>
0043             <item>const-wide</item>
0044             <item>const-wide/high16</item>
0045             <item>const-string</item>
0046             <item>const-string/jumbo</item>
0047             <item>const-class</item>
0048             <item>monitor-enter</item>
0049             <item>monitor-exit</item>
0050             <item>check-cast</item>
0051             <item>instance-of</item>
0052             <item>array-length</item>
0053             <item>new-instance</item>
0054             <item>new-array</item>
0055             <item>filled-new-array</item>
0056             <item>filled-new-array/range</item>
0057             <item>fill-array-data</item>
0058             <item>throw</item>
0059             <item>goto</item>
0060             <item>goto/16</item>
0061             <item>goto/32</item>
0062             <item>packed-switch</item>
0063             <item>sparse-switch</item>
0064             <item>cmpl-float</item>
0065             <item>cmpg-float</item>
0066             <item>cmpl-double</item>
0067             <item>cmpg-double</item>
0068             <item>cmp-long</item>
0069             <item>if-eq</item>
0070             <item>if-ne</item>
0071             <item>if-lt</item>
0072             <item>if-ge</item>
0073             <item>if-gt</item>
0074             <item>if-le</item>
0075             <item>if-eqz</item>
0076             <item>if-nez</item>
0077             <item>if-ltz</item>
0078             <item>if-gez</item>
0079             <item>if-gtz</item>
0080             <item>if-lez</item>
0081             <item>aget</item>
0082             <item>aget-wide</item>
0083             <item>aget-object</item>
0084             <item>aget-boolean</item>
0085             <item>aget-byte</item>
0086             <item>aget-char</item>
0087             <item>aget-short</item>
0088             <item>aput</item>
0089             <item>aput-wide</item>
0090             <item>aput-object</item>
0091             <item>aput-boolean</item>
0092             <item>aput-byte</item>
0093             <item>aput-char</item>
0094             <item>aput-short</item>
0095             <item>iget</item>
0096             <item>iget-wide</item>
0097             <item>iget-object</item>
0098             <item>iget-boolean</item>
0099             <item>iget-byte</item>
0100             <item>iget-char</item>
0101             <item>iget-short</item>
0102             <item>iput</item>
0103             <item>iput-wide</item>
0104             <item>iput-object</item>
0105             <item>iput-boolean</item>
0106             <item>iput-byte</item>
0107             <item>iput-char</item>
0108             <item>iput-short</item>
0109             <item>sget</item>
0110             <item>sget-wide</item>
0111             <item>sget-object</item>
0112             <item>sget-boolean</item>
0113             <item>sget-byte</item>
0114             <item>sget-char</item>
0115             <item>sget-short</item>
0116             <item>sput</item>
0117             <item>sput-wide</item>
0118             <item>sput-object</item>
0119             <item>sput-boolean</item>
0120             <item>sput-byte</item>
0121             <item>sput-char</item>
0122             <item>sput-short</item>
0123             <item>invoke-virtual</item>
0124             <item>invoke-super</item>
0125             <item>invoke-direct</item>
0126             <item>invoke-static</item>
0127             <item>invoke-interface</item>
0128             <item>invoke-virtual/range</item>
0129             <item>invoke-super/range</item>
0130             <item>invoke-direct/range</item>
0131             <item>invoke-static/range</item>
0132             <item>invoke-interface/range</item>
0133             <item>neg-int</item>
0134             <item>not-int</item>
0135             <item>neg-long</item>
0136             <item>not-long</item>
0137             <item>neg-float</item>
0138             <item>neg-double</item>
0139             <item>int-to-long</item>
0140             <item>int-to-float</item>
0141             <item>int-to-double</item>
0142             <item>long-to-int</item>
0143             <item>long-to-float</item>
0144             <item>long-to-double</item>
0145             <item>float-to-int</item>
0146             <item>float-to-long</item>
0147             <item>float-to-double</item>
0148             <item>double-to-int</item>
0149             <item>double-to-long</item>
0150             <item>double-to-float</item>
0151             <item>int-to-byte</item>
0152             <item>int-to-char</item>
0153             <item>int-to-short</item>
0154             <item>add-int</item>
0155             <item>sub-int</item>
0156             <item>mul-int</item>
0157             <item>div-int</item>
0158             <item>rem-int</item>
0159             <item>and-int</item>
0160             <item>or-int</item>
0161             <item>xor-int</item>
0162             <item>shl-int</item>
0163             <item>shr-int</item>
0164             <item>ushr-int</item>
0165             <item>add-long</item>
0166             <item>sub-long</item>
0167             <item>mul-long</item>
0168             <item>div-long</item>
0169             <item>rem-long</item>
0170             <item>and-long</item>
0171             <item>or-long</item>
0172             <item>xor-long</item>
0173             <item>shl-long</item>
0174             <item>shr-long</item>
0175             <item>ushr-long</item>
0176             <item>add-float</item>
0177             <item>sub-float</item>
0178             <item>mul-float</item>
0179             <item>div-float</item>
0180             <item>rem-float</item>
0181             <item>add-double</item>
0182             <item>sub-double</item>
0183             <item>mul-double</item>
0184             <item>div-double</item>
0185             <item>rem-double</item>
0186             <item>add-int/2addr</item>
0187             <item>sub-int/2addr</item>
0188             <item>mul-int/2addr</item>
0189             <item>div-int/2addr</item>
0190             <item>rem-int/2addr</item>
0191             <item>and-int/2addr</item>
0192             <item>or-int/2addr</item>
0193             <item>xor-int/2addr</item>
0194             <item>shl-int/2addr</item>
0195             <item>shr-int/2addr</item>
0196             <item>ushr-int/2addr</item>
0197             <item>add-long/2addr</item>
0198             <item>sub-long/2addr</item>
0199             <item>mul-long/2addr</item>
0200             <item>div-long/2addr</item>
0201             <item>rem-long/2addr</item>
0202             <item>and-long/2addr</item>
0203             <item>or-long/2addr</item>
0204             <item>xor-long/2addr</item>
0205             <item>shl-long/2addr</item>
0206             <item>shr-long/2addr</item>
0207             <item>ushr-long/2addr</item>
0208             <item>add-float/2addr</item>
0209             <item>sub-float/2addr</item>
0210             <item>mul-float/2addr</item>
0211             <item>div-float/2addr</item>
0212             <item>rem-float/2addr</item>
0213             <item>add-double/2addr</item>
0214             <item>sub-double/2addr</item>
0215             <item>mul-double/2addr</item>
0216             <item>div-double/2addr</item>
0217             <item>rem-double/2addr</item>
0218             <item>add-int/lit16</item>
0219             <item>rsub-int</item>
0220             <item>mul-int/lit16</item>
0221             <item>div-int/lit16</item>
0222             <item>rem-int/lit16</item>
0223             <item>and-int/lit16</item>
0224             <item>or-int/lit16</item>
0225             <item>xor-int/lit16</item>
0226             <item>add-int/lit8</item>
0227             <item>rsub-int/lit8</item>
0228             <item>mul-int/lit8</item>
0229             <item>div-int/lit8</item>
0230             <item>rem-int/lit8</item>
0231             <item>and-int/lit8</item>
0232             <item>or-int/lit8</item>
0233             <item>xor-int/lit8</item>
0234             <item>shl-int/lit8</item>
0235             <item>shr-int/lit8</item>
0236             <item>ushr-int/lit8</item>
0237             <item>iget-volatile</item>
0238             <item>iput-volatile</item>
0239             <item>sget-volatile</item>
0240             <item>sput-volatile</item>
0241             <item>iget-object-volatile</item>
0242             <item>iget-wide-volatile</item>
0243             <item>iput-wide-volatile</item>
0244             <item>sget-wide-volatile</item>
0245             <item>sput-wide-volatile</item>
0246             <item>sget-object-volatile</item>
0247             <item>throw-verification-error</item>
0248             <item>execute-inline</item>
0249             <item>execute-inline/range</item>
0250             <item>invoke-object-init/range</item>
0251             <item>return-void-barrier</item>
0252             <item>iget-quick</item>
0253             <item>invoke-polymorphic</item>
0254             <item>invoke-polymorphic/range</item>
0255             <item>invoke-custom</item>
0256             <item>invoke-custom/range</item>
0257             <item>const-method-handle</item>
0258             <item>const-method-type</item>
0259         </list>
0260         <list name="keywords">
0261             <!-- Access flags -->
0262             <item>public</item>
0263             <item>private</item>
0264             <item>protected</item>
0265             <item>static</item>
0266             <item>final</item>
0267             <item>synchronized</item>
0268             <item>volatile</item>
0269             <item>bridge</item>
0270             <item>transient</item>
0271             <item>varargs</item>
0272             <item>native</item>
0273             <item>interface</item>
0274             <item>abstract</item>
0275             <item>strictfp</item>
0276             <item>synthetic</item>
0277             <item>annotation</item>
0278             <item>enum</item>
0279             <item>constructor</item>
0280             <item>declared-synchronized</item>
0281 
0282             <!-- Visibility values -->
0283             <item>build</item>
0284             <item>runtime</item>
0285             <item>system</item>
0286         </list>
0287         <contexts>
0288             <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
0289                 <WordDetect attribute="Attribute" String=".class" context="#stay" />
0290                 <WordDetect attribute="Attribute" String=".super" context="#stay" />
0291                 <WordDetect attribute="Attribute" String=".implements" context="#stay" />
0292                 <WordDetect attribute="Attribute" String=".source" context="#stay" />
0293                 <WordDetect attribute="Attribute" String=".field" context="#stay" />
0294                 <RegExpr attribute="Attribute" String="\.end\s+field" firstNonSpace="true" context="#stay" />
0295                 <WordDetect attribute="Attribute" String=".annotation" context="Annotation" beginRegion="Annotation" />
0296                 <WordDetect attribute="Attribute" String=".subannotation" context="#stay" />
0297                 <RegExpr attribute="Attribute" String="\.end\s+subannotation" firstNonSpace="true" context="#stay" />
0298                 <WordDetect attribute="Attribute" String=".enum" context="#stay" />
0299                 <WordDetect attribute="Attribute" String=".method" context="MethodDeclaration" beginRegion="Method" />
0300                 <keyword attribute="Keyword" context="#stay" String="keywords" />
0301                 <IncludeRules context="Global" />
0302             </context>
0303             <context attribute="Normal Text" lineEndContext="#stay" name="Literal">
0304                 <WordDetect attribute="Bool" String="true" context="#stay" />
0305                 <WordDetect attribute="Bool" String="false" context="#stay" />
0306                 <WordDetect attribute="Float" String="-infinity" insensitive="true" context="#stay" />
0307                 <WordDetect attribute="Float" String="infinity" insensitive="true" context="#stay" />
0308                 <WordDetect attribute="Float" String="-infinityD" insensitive="true" context="#stay" />
0309                 <WordDetect attribute="Float" String="infinityD" insensitive="true" context="#stay" />
0310                 <WordDetect attribute="Float" String="-infinityF" insensitive="true" context="#stay" />
0311                 <WordDetect attribute="Float" String="infinityF" insensitive="true" context="#stay" />
0312                 <WordDetect attribute="Float" String="NaN" insensitive="true" context="#stay" />
0313                 <WordDetect attribute="Float" String="NaND" insensitive="true" context="#stay" />
0314                 <WordDetect attribute="Float" String="NaNF" insensitive="true" context="#stay" />
0315                 <RegExpr attribute="Float" context="#stay" String="&float1;|&float2;|&float3;|&float4;" />
0316                 <RegExpr attribute="Hex" context="#stay" String="\-?0x&hex;+[LtTsS]?\b" />
0317                 <RegExpr attribute="Decimal" context="#stay" String="\-?\d+[tTLsS]?\b" />
0318                 <HlCChar attribute="Char" context="#stay" />
0319                 <RegExpr attribute="Char" context="#stay" String="'\\u&hex;{4}'" />
0320                 <DetectChar attribute="String" context="String" char="&quot;" />
0321             </context>
0322             <context attribute="Normal Text" lineEndContext="#stay" name="Global">
0323                 <DetectChar attribute="Comment" context="Comment" char="#" />
0324                 <RegExpr attribute="Method" context="#stay" String="\b[\w\$]+\s*(?=\s*>?\s*\()" />
0325                 <RegExpr attribute="Field" context="#stay" String="\b[\w\$]+\s*(?=\:)" />
0326                 <IncludeRules context="Literal" />
0327                 <RegExpr attribute="Built-in" context="#stay" String="((?&lt;=&fieldTypeLookBehind;L)|(?&lt;=&fieldLookBehind;L)|(?&lt;=\[L)|(?&lt;=[&typeIdentifiers;]L))&builtin;" />
0328                 <RegExpr attribute="Data Type" context="#stay" String="((?&lt;=&fieldTypeLookBehind;L)|(?&lt;=&fieldLookBehind;L)|(?&lt;=\[L)|(?&lt;=[&typeIdentifiers;]L))[\w/\$]+" />
0329                 <RegExpr attribute="Type Identifier" context="#stay" String="((?&lt;=&fieldTypeLookBehind;)|(?&lt;=&fieldLookBehind;)(\[*[&typeIdentifiers;])*)\[*([&typeIdentifiers;]|L)|(?&lt;=[;&typeIdentifiers;\(]\))V" />
0330                 <Detect2Chars attribute="Operator" context="#stay" char="." char1="." />
0331                 <AnyChar attribute="Symbol" context="#stay" String="{}&lt;&gt;:;=()" />
0332             </context>
0333             <context attribute="Normal Text" lineEndContext="Method" name="MethodDeclaration">
0334                 <keyword attribute="Keyword" context="#stay" String="keywords" />
0335                 <IncludeRules context="Global" />
0336             </context>
0337             <context attribute="Normal Text" lineEndContext="#stay" name="Method">
0338                 <WordDetect attribute="Attribute" String=".registers" context="#stay" />
0339                 <WordDetect attribute="Attribute" String=".locals" context="#stay" />
0340                 <WordDetect attribute="Attribute" String=".annotation" context="Annotation" beginRegion="Annotation" />
0341                 <WordDetect attribute="Attribute" String=".array-data" context="ArrayData" beginRegion="ArrayData" />
0342                 <WordDetect attribute="Attribute" String=".packed-switch" context="PackedSwitch" beginRegion="PackedSwitch" />
0343                 <WordDetect attribute="Attribute" String=".sparse-switch" context="SparseSwitch" beginRegion="SparseSwitch" />
0344                 <WordDetect attribute="Attribute" String=".catch" context="#stay" />
0345                 <WordDetect attribute="Attribute" String=".catchall" context="#stay" />
0346                 <WordDetect attribute="Attribute" String=".line" context="#stay" />
0347                 <WordDetect attribute="Attribute" String=".param" context="Param" />
0348                 <WordDetect attribute="Attribute" String=".local" context="#stay" />
0349                 <RegExpr attribute="Attribute" String="\.end\s+param|\.(end|restart)\s+local" firstNonSpace="true" context="#stay" />
0350                 <RegExpr attribute="Attribute" String="\.end\s+method" firstNonSpace="true" context="#pop#pop" endRegion="Method" />
0351                 <WordDetect attribute="Attribute" String=".prologue" context="#stay" />
0352                 <WordDetect attribute="Attribute" String=".epilogue" context="#stay" />
0353                 <keyword attribute="Mnemonic" context="#stay" String="mnemonics" />
0354                 <RegExpr attribute="Register" context="#stay" String="\b(v|p)[0-9]+\b" />
0355                 <RegExpr attribute="Label" context="#stay" String="&label;" />
0356                 <Detect2Chars attribute="Operator" context="#stay" char="-" char1=">" />
0357                 <IncludeRules context="Global" />
0358             </context>
0359             <context attribute="Annotation" lineEndContext="AnnotationBody" name="Annotation">
0360                 <IncludeRules context="Global" />
0361                 <keyword attribute="Keyword" context="#stay" String="keywords" />
0362             </context>
0363             <context attribute="Attribute" lineEndContext="#stay" name="AnnotationBody">
0364                 <IncludeRules context="Global" />
0365                 <RegExpr attribute="Attribute" String="\.end\s+annotation" firstNonSpace="true" context="#pop#pop" endRegion="Annotation" />
0366             </context>
0367             <context attribute="Attribute" lineEndContext="PackedSwitchBody" name="PackedSwitch">
0368                 <IncludeRules context="Literal" />
0369             </context>
0370             <context attribute="Normal Text" lineEndContext="#stay" name="PackedSwitchBody">
0371                 <DetectChar attribute="Comment" context="Comment" char="#" />
0372                 <RegExpr attribute="Label" context="#stay" String="&label;" />
0373                 <RegExpr attribute="Attribute" String="\.end\s+packed\-switch" firstNonSpace="true" context="#pop#pop" endRegion="PackedSwitch" />
0374             </context>
0375             <context attribute="Attribute" lineEndContext="SparseSwitchBody" name="SparseSwitch">
0376                 <IncludeRules context="Literal" />
0377             </context>
0378             <context attribute="Normal Text" lineEndContext="#stay" name="SparseSwitchBody">
0379                 <DetectChar attribute="Comment" context="Comment" char="#" />
0380                 <IncludeRules context="Literal" />
0381                 <RegExpr attribute="Label" context="#stay" String="&label;" />
0382                 <Detect2Chars attribute="Operator" context="#stay" char="-" char1=">" />
0383                 <RegExpr attribute="Attribute" String="\.end\s+sparse\-switch" firstNonSpace="true" context="#pop#pop" endRegion="SparseSwitch" />
0384             </context>
0385             <context attribute="Normal Text" lineEndContext="ArrayDataBody" name="ArrayData">
0386                 <IncludeRules context="Literal" />
0387             </context>
0388             <context attribute="Normal Text" lineEndContext="#stay" name="ArrayDataBody">
0389                 <DetectChar attribute="Comment" context="Comment" char="#" />
0390                 <IncludeRules context="Literal" />
0391                 <RegExpr attribute="Attribute" String="\.end\s+array\-data" firstNonSpace="true" context="#pop#pop" endRegion="ArrayData" />
0392             </context>
0393             <context attribute="Normal Text" lineEndContext="#pop" name="Param">
0394                 <RegExpr attribute="Register" context="#stay" String="\bp[0-9]+\b" />
0395                 <RegExpr attribute="Variable" context="#stay" String="(?&lt;=,)\s*[\w]+" />
0396                 <IncludeRules context="Literal" />
0397             </context>
0398             <context attribute="String" lineEndContext="#pop" name="String">
0399                 <LineContinue attribute="String" context="#stay"/>
0400                 <HlCStringChar attribute="String Char" context="#stay"/>
0401                 <RegExpr attribute="String Char" context="#stay" String="\\u[0-9a-fA-F]{4}"/>
0402                 <DetectChar attribute="String" context="#pop" char="&quot;"/>
0403             </context>
0404             <context attribute="Comment" lineEndContext="#pop" name="Comment">
0405                 <DetectSpaces />
0406                 <IncludeRules context="##Comments"/>
0407             </context>
0408         </contexts>
0409         <itemDatas>
0410             <itemData name="Normal Text"     defStyleNum="dsNormal" spellChecking="false" />
0411             <itemData name="Attribute"       defStyleNum="dsAttribute" spellChecking="false" />
0412             <itemData name="Annotation"      defStyleNum="dsAttribute" spellChecking="false" />
0413             <itemData name="Mnemonic"        defStyleNum="dsKeyword" spellChecking="false" />
0414             <itemData name="Keyword"         defStyleNum="dsKeyword" spellChecking="false" />
0415             <itemData name="Method"          defStyleNum="dsFunction" spellChecking="false" />
0416             <itemData name="Register"        defStyleNum="dsVariable" spellChecking="false" />
0417             <itemData name="Field"           defStyleNum="dsVariable" spellChecking="false" />
0418             <itemData name="Variable"        defStyleNum="dsVariable" />
0419             <itemData name="Operator"        defStyleNum="dsOperator" spellChecking="false" />
0420             <itemData name="Type Identifier" defStyleNum="dsDataType" italic="true" spellChecking="false" />
0421             <itemData name="Data Type"       defStyleNum="dsDataType" italic="false" spellChecking="false" />
0422             <itemData name="Label"           defStyleNum="dsOthers" spellChecking="false" />
0423             <itemData name="Decimal"         defStyleNum="dsDecVal" spellChecking="false" />
0424             <itemData name="Bool"            defStyleNum="dsBaseN" spellChecking="false" />
0425             <itemData name="Hex"             defStyleNum="dsBaseN" spellChecking="false" />
0426             <itemData name="Float"           defStyleNum="dsFloat" spellChecking="false" />
0427             <itemData name="Char"            defStyleNum="dsChar" spellChecking="false" />
0428             <itemData name="String"          defStyleNum="dsString" />
0429             <itemData name="String Char"     defStyleNum="dsSpecialChar" spellChecking="false" />
0430             <itemData name="Comment"         defStyleNum="dsComment" />
0431             <itemData name="Symbol"          defStyleNum="dsNormal" spellChecking="false" />
0432             <itemData name="Built-in"        defStyleNum="dsBuiltIn" spellChecking="false" />
0433         </itemDatas>
0434     </highlighting>
0435     <general>
0436         <comments>
0437             <comment name="singleLine" start="#" position="afterwhitespace"/>
0438         </comments>
0439         <keywords casesensitive="1" weakDeliminator="-/[$" />
0440     </general>
0441 </language>
0442 <!-- kate: replace-tabs on; tab-width 4; indent-width 4; -->