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