Mon, 25 Mar 2013 03:11:06 +0100
Script changes: Future import added, super calls modified and unicode behavior for str.
2426
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | pygments.lexers.dalvik |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~~~~ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | Pygments lexers for Dalvik VM-related languages. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
2525
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2426
diff
changeset
|
12 | from __future__ import unicode_literals # __IGNORE_WARNING__ |
8b507a9a2d40
Script changes: Future import added, super calls modified and unicode behavior for str.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2426
diff
changeset
|
13 | |
2426
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | from pygments.lexer import RegexLexer, include, bygroups |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | from pygments.token import Keyword, Text, Comment, Name, String, Number, \ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | Punctuation |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | __all__ = ['SmaliLexer'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | class SmaliLexer(RegexLexer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | For `Smali <http://code.google.com/p/smali/>`_ (Android/Dalvik) assembly |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | code. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | *New in Pygments 1.6.* |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | name = 'Smali' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | aliases = ['smali'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | filenames = ['*.smali'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | mimetypes = ['text/smali'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | tokens = { |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | 'root': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | include('comment'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | include('label'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | include('field'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | include('method'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | include('class'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | include('directive'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | include('access-modifier'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | include('instruction'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | include('literal'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | include('punctuation'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | include('type'), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | include('whitespace') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | 'directive': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | (r'^[ \t]*\.(class|super|implements|field|subannotation|annotation|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | r'enum|method|registers|locals|array-data|packed-switch|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | r'sparse-switch|catchall|catch|line|parameter|local|prologue|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | r'epilogue|source)', Keyword), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | (r'^[ \t]*\.end (field|subannotation|annotation|method|array-data|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | 'packed-switch|sparse-switch|parameter|local)', Keyword), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | (r'^[ \t]*\.restart local', Keyword), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | 'access-modifier': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | (r'(public|private|protected|static|final|synchronized|bridge|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | r'varargs|native|abstract|strictfp|synthetic|constructor|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | r'declared-synchronized|interface|enum|annotation|volatile|' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | r'transient)', Keyword), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | 'whitespace': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | (r'\n', Text), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | (r'\s+', Text), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | 'instruction': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | (r'\b[vp]\d+\b', Name.Builtin), # registers |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | (r'\b[a-z][A-Za-z0-9/-]+\s+', Text), # instructions |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | 'literal': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | (r'".*"', String), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | (r'0x[0-9A-Fa-f]+t?', Number.Hex), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | (r'[0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | (r'[0-9]+L?', Number.Integer), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | 'field': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | (r'(\$?\b)([A-Za-z0-9_$]*)(:)', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | bygroups(Punctuation, Name.Variable, Punctuation)), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | 'method': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | (r'<(?:cl)?init>', Name.Function), # constructor |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | (r'(\$?\b)([A-Za-z0-9_$]*)(\()', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | bygroups(Punctuation, Name.Function, Punctuation)), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | 'label': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | (r':[A-Za-z0-9_]+', Name.Label), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | 'class': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | # class names in the form Lcom/namespace/ClassName; |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | # I only want to color the ClassName part, so the namespace part is |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | # treated as 'Text' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | (r'(L)((?:[A-Za-z0-9_$]+/)*)([A-Za-z0-9_$]+)(;)', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | bygroups(Keyword.Type, Text, Name.Class, Text)), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | 'punctuation': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | (r'->', Punctuation), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | (r'[{},\(\):=\.-]', Punctuation), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | 'type': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | (r'[ZBSCIJFDV\[]+', Keyword.Type), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | 'comment': [ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | (r'#.*?\n', Comment), |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | ], |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | } |