82 lines
2.2 KiB
JavaScript
82 lines
2.2 KiB
JavaScript
|
module.exports = function(hljs) {
|
||
|
var 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'];
|
||
|
var smali_instr_high_prio = ['aget', 'aput', 'array', 'check', 'execute', 'fill', 'filled', 'goto/16', 'goto/32', 'iget', 'instance', 'invoke', 'iput', 'monitor', 'packed', 'sget', 'sparse'];
|
||
|
var smali_keywords = ['transient', 'constructor', 'abstract', 'final', 'synthetic', 'public', 'private', 'protected', 'static', 'bridge', 'system'];
|
||
|
return {
|
||
|
aliases: ['smali'],
|
||
|
contains: [
|
||
|
{
|
||
|
className: 'string',
|
||
|
begin: '"', end: '"',
|
||
|
relevance: 0
|
||
|
},
|
||
|
hljs.COMMENT(
|
||
|
'#',
|
||
|
'$',
|
||
|
{
|
||
|
relevance: 0
|
||
|
}
|
||
|
),
|
||
|
{
|
||
|
className: 'keyword',
|
||
|
begin: '\\s*\\.end\\s[a-zA-Z0-9]*',
|
||
|
relevance: 1
|
||
|
},
|
||
|
{
|
||
|
className: 'keyword',
|
||
|
begin: '^[ ]*\\.[a-zA-Z]*',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'keyword',
|
||
|
begin: '\\s:[a-zA-Z_0-9]*',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'keyword',
|
||
|
begin: '\\s('+smali_keywords.join('|')+')',
|
||
|
relevance: 1
|
||
|
},
|
||
|
{
|
||
|
className: 'keyword',
|
||
|
begin: '\\[',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'instruction',
|
||
|
begin: '\\s('+smali_instr_low_prio.join('|')+')\\s',
|
||
|
relevance: 1
|
||
|
},
|
||
|
{
|
||
|
className: 'instruction',
|
||
|
begin: '\\s('+smali_instr_low_prio.join('|')+')((\\-|/)[a-zA-Z0-9]+)+\\s',
|
||
|
relevance: 10
|
||
|
},
|
||
|
{
|
||
|
className: 'instruction',
|
||
|
begin: '\\s('+smali_instr_high_prio.join('|')+')((\\-|/)[a-zA-Z0-9]+)*\\s',
|
||
|
relevance: 10
|
||
|
},
|
||
|
{
|
||
|
className: 'class',
|
||
|
begin: 'L[^\(;:\n]*;',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'function',
|
||
|
begin: '( |->)[^(\n ;"]*\\(',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'function',
|
||
|
begin: '\\)',
|
||
|
relevance: 0
|
||
|
},
|
||
|
{
|
||
|
className: 'variable',
|
||
|
begin: '[vp][0-9]+',
|
||
|
relevance: 0
|
||
|
}
|
||
|
]
|
||
|
};
|
||
|
};
|