diff options
| author | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2021-12-30 19:47:21 +0100 |
| commit | a98b5ea6fe8e8cc98a55e0fd793e6e8660ea31c1 (patch) | |
| tree | 542810ab5aef99150db228bb54fd58303dcb31c7 /public/prism/prism-smali.js | |
| parent | ab355897a12b7bda1089a44de326d41455a0f7a3 (diff) | |
chore: add prismjs for syntax highlighting
Diffstat (limited to 'public/prism/prism-smali.js')
| -rw-r--r-- | public/prism/prism-smali.js | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/public/prism/prism-smali.js b/public/prism/prism-smali.js new file mode 100644 index 0000000..2012d45 --- /dev/null +++ b/public/prism/prism-smali.js @@ -0,0 +1,90 @@ +// Test files for the parser itself: +// https://github.com/JesusFreke/smali/tree/master/smali/src/test/resources/LexerTest + +Prism.languages.smali = { + comment: /#.*/, + string: { + pattern: /"(?:[^\r\n\\"]|\\.)*"|'(?:[^\r\n\\']|\\(?:.|u[\da-fA-F]{4}))'/, + greedy: true, + }, + + 'class-name': { + pattern: + /(^|[^L])L(?:(?:\w+|`[^`\r\n]*`)\/)*(?:[\w$]+|`[^`\r\n]*`)(?=\s*;)/, + lookbehind: true, + inside: { + 'class-name': { + pattern: /(^L|\/)(?:[\w$]+|`[^`\r\n]*`)$/, + lookbehind: true, + }, + namespace: { + pattern: /^(L)(?:(?:\w+|`[^`\r\n]*`)\/)+/, + lookbehind: true, + inside: { + punctuation: /\//, + }, + }, + builtin: /^L/, + }, + }, + builtin: [ + { + // Reference: https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields#types + pattern: /([();\[])[BCDFIJSVZ]+/, + lookbehind: true, + }, + { + // e.g. .field mWifiOnUid:I + pattern: /([\w$>]:)[BCDFIJSVZ]/, + lookbehind: true, + }, + ], + keyword: [ + { + pattern: /(\.end\s+)[\w-]+/, + lookbehind: true, + }, + { + pattern: /(^|[^\w.-])\.(?!\d)[\w-]+/, + lookbehind: true, + }, + { + pattern: + /(^|[^\w.-])(?:abstract|annotation|bridge|constructor|enum|final|interface|private|protected|public|runtime|static|synthetic|system|transient)(?![\w.-])/, + lookbehind: true, + }, + ], + function: { + pattern: /(^|[^\w.-])(?:\w+|<[\w$-]+>)(?=\()/, + lookbehind: true, + }, + + field: { + pattern: /[\w$]+(?=:)/, + alias: 'variable', + }, + register: { + pattern: /(^|[^\w.-])[vp]\d(?![\w.-])/, + lookbehind: true, + alias: 'variable', + }, + + boolean: { + pattern: /(^|[^\w.-])(?:false|true)(?![\w.-])/, + lookbehind: true, + }, + number: { + pattern: + /(^|[^/\w.-])-?(?:NAN|INFINITY|0x(?:[\dA-F]+(?:\.[\dA-F]*)?|\.[\dA-F]+)(?:p[+-]?[\dA-F]+)?|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?)[dflst]?(?![\w.-])/i, + lookbehind: true, + }, + + label: { + pattern: /(:)\w+/, + lookbehind: true, + alias: 'property', + }, + + operator: /->|\.\.|[\[=]/, + punctuation: /[{}(),;:]/, +}; |
