You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
135 lines
2.3 KiB
135 lines
2.3 KiB
/* |
|
Language: Smali |
|
Author: Dennis Titze <dennis.titze@gmail.com> |
|
Description: Basic Smali highlighting |
|
Website: 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;
|
|
|