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 "(?<=^|\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=""" />
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="((?<=&fieldTypeLookBehind;L)|(?<=&fieldLookBehind;L)|(?<=\[L)|(?<=[&typeIdentifiers;]L))&builtin;" />
0328 <RegExpr attribute="Data Type" context="#stay" String="((?<=&fieldTypeLookBehind;L)|(?<=&fieldLookBehind;L)|(?<=\[L)|(?<=[&typeIdentifiers;]L))[\w/\$]+" />
0329 <RegExpr attribute="Type Identifier" context="#stay" String="((?<=&fieldTypeLookBehind;)|(?<=&fieldLookBehind;)(\[*[&typeIdentifiers;])*)\[*([&typeIdentifiers;]|L)|(?<=[;&typeIdentifiers;\(]\))V" />
0330 <Detect2Chars attribute="Operator" context="#stay" char="." char1="." />
0331 <AnyChar attribute="Symbol" context="#stay" String="{}<>:;=()" />
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="(?<=,)\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="""/>
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; -->