]> luflow.net public git repositories - flow-web.git/blob - static/highlight/languages/smali.js
Initial commit.
[flow-web.git] / static / highlight / languages / smali.js
1 /*! `smali` grammar compiled for Highlight.js 11.11.1 */
2 (function(){
3 var hljsGrammar = (function () {
4 'use strict';
5
6 /*
7 Language: Smali
8 Author: Dennis Titze <dennis.titze@gmail.com>
9 Description: Basic Smali highlighting
10 Website: https://github.com/JesusFreke/smali
11 Category: assembler
12 */
13
14 function smali(hljs) {
15 const smali_instr_low_prio = [
16 'add',
17 'and',
18 'cmp',
19 'cmpg',
20 'cmpl',
21 'const',
22 'div',
23 'double',
24 'float',
25 'goto',
26 'if',
27 'int',
28 'long',
29 'move',
30 'mul',
31 'neg',
32 'new',
33 'nop',
34 'not',
35 'or',
36 'rem',
37 'return',
38 'shl',
39 'shr',
40 'sput',
41 'sub',
42 'throw',
43 'ushr',
44 'xor'
45 ];
46 const smali_instr_high_prio = [
47 'aget',
48 'aput',
49 'array',
50 'check',
51 'execute',
52 'fill',
53 'filled',
54 'goto/16',
55 'goto/32',
56 'iget',
57 'instance',
58 'invoke',
59 'iput',
60 'monitor',
61 'packed',
62 'sget',
63 'sparse'
64 ];
65 const smali_keywords = [
66 'transient',
67 'constructor',
68 'abstract',
69 'final',
70 'synthetic',
71 'public',
72 'private',
73 'protected',
74 'static',
75 'bridge',
76 'system'
77 ];
78 return {
79 name: 'Smali',
80 contains: [
81 {
82 className: 'string',
83 begin: '"',
84 end: '"',
85 relevance: 0
86 },
87 hljs.COMMENT(
88 '#',
89 '$',
90 { relevance: 0 }
91 ),
92 {
93 className: 'keyword',
94 variants: [
95 { begin: '\\s*\\.end\\s[a-zA-Z0-9]*' },
96 {
97 begin: '^[ ]*\\.[a-zA-Z]*',
98 relevance: 0
99 },
100 {
101 begin: '\\s:[a-zA-Z_0-9]*',
102 relevance: 0
103 },
104 { begin: '\\s(' + smali_keywords.join('|') + ')' }
105 ]
106 },
107 {
108 className: 'built_in',
109 variants: [
110 { begin: '\\s(' + smali_instr_low_prio.join('|') + ')\\s' },
111 {
112 begin: '\\s(' + smali_instr_low_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)+\\s',
113 relevance: 10
114 },
115 {
116 begin: '\\s(' + smali_instr_high_prio.join('|') + ')((-|/)[a-zA-Z0-9]+)*\\s',
117 relevance: 10
118 }
119 ]
120 },
121 {
122 className: 'class',
123 begin: 'L[^\(;:\n]*;',
124 relevance: 0
125 },
126 { begin: '[vp][0-9]+' }
127 ]
128 };
129 }
130
131 return smali;
132
133 })();
134
135 hljs.registerLanguage('smali', hljsGrammar);
136 })();