| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | /*Language: SmaliAuthor: Dennis Titze <dennis.titze@gmail.com>Description: Basic Smali highlightingWebsite: https://github.com/JesusFreke/smali*/function smali(hljs) {  const smali_instr_low_prio = [    'add',    'and',    'cmp',    'cmpg',    'cmpl',    'const',    'div',    'double',    'float',    'goto',    'if',    'int',    'long',    'move',    'mul',    'neg',    'new',    'nop',    'not',    'or',    'rem',    'return',    'shl',    'shr',    'sput',    'sub',    'throw',    'ushr',    'xor'  ];  const smali_instr_high_prio = [    'aget',    'aput',    'array',    'check',    'execute',    'fill',    'filled',    'goto/16',    'goto/32',    'iget',    'instance',    'invoke',    'iput',    'monitor',    'packed',    'sget',    'sparse'  ];  const smali_keywords = [    'transient',    'constructor',    'abstract',    'final',    'synthetic',    'public',    'private',    'protected',    'static',    'bridge',    'system'  ];  return {    name: 'Smali',    contains: [      {        className: 'string',        begin: '"',        end: '"',        relevance: 0      },      hljs.COMMENT(        '#',        '$',        {          relevance: 0        }      ),      {        className: 'keyword',        variants: [          {            begin: '\\s*\\.end\\s[a-zA-Z0-9]*'          },          {            begin: '^[ ]*\\.[a-zA-Z]*',            relevance: 0          },          {            begin: '\\s:[a-zA-Z_0-9]*',            relevance: 0          },          {            begin: '\\s(' + smali_keywords.join('|') + ')'          }        ]      },      {        className: 'built_in',        variants: [          {            begin: '\\s(' + smali_instr_low_prio.join('|') + ')\\s'          },          {            begin: '\\s(' + smali_instr_low_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)+\\s',            relevance: 10          },          {            begin: '\\s(' + smali_instr_high_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)*\\s',            relevance: 10          }        ]      },      {        className: 'class',        begin: 'L[^\(;:\n]*;',        relevance: 0      },      {        begin: '[vp][0-9]+'      }    ]  };}module.exports = smali;
 |