diff options
author | David Corbett <corbett.dav@husky.neu.edu> | 2014-05-13 20:50:08 -0400 |
---|---|---|
committer | David Corbett <corbett.dav@husky.neu.edu> | 2014-05-13 20:50:08 -0400 |
commit | 16ca415efcb9c6bd009f6a85f47b47d0f83d9dd3 (patch) | |
tree | e39c0ea37f1a4022abd02ae01484b7fe280c66f3 | |
parent | f7bd44802ad0abdc116b9dfc30c179cd0addecfe (diff) | |
download | pygments-16ca415efcb9c6bd009f6a85f47b47d0f83d9dd3.tar.gz |
Fix Jasmin and Smali code snippet detection
-rw-r--r-- | pygments/lexers/dalvik.py | 19 | ||||
-rw-r--r-- | pygments/lexers/jvm.py | 13 |
2 files changed, 17 insertions, 15 deletions
diff --git a/pygments/lexers/dalvik.py b/pygments/lexers/dalvik.py index 4f250b02..f77a74d6 100644 --- a/pygments/lexers/dalvik.py +++ b/pygments/lexers/dalvik.py @@ -106,8 +106,14 @@ class SmaliLexer(RegexLexer): } def analyse_text(text): - if not re.search(r'^\s*\.class\s', text, re.MULTILINE): - return 0 + score = 0 + if re.search(r'^\s*\.class\s', text, re.MULTILINE): + score += 0.5 + if re.search(r'\b((check-cast|instance-of|throw-verification-error' + r')\b|(-to|add|[ais]get|[ais]put|and|cmpl|const|div|' + r'if|invoke|move|mul|neg|not|or|rem|return|rsub|shl|' + r'shr|sub|ushr)[-/])|{|}', text, re.MULTILINE): + score += 0.3 if re.search(r'(\.(catchall|epilogue|restart local|prologue)|' r'\b(array-data|class-change-error|declared-synchronized|' r'(field|inline|vtable)@0x[0-9a-fA-F]|generic-error|' @@ -115,10 +121,5 @@ class SmaliLexer(RegexLexer): r'illegal-method-access|instantiation-error|no-error|' r'no-such-class|no-such-field|no-such-method|' r'packed-switch|sparse-switch))\b', text, re.MULTILINE): - return 1 - if re.search(r'\b(check-cast|instance-of|throw-verification-error)\b|' - r'\b(-to|add|[ais]get|[ais]put|and|cmpl|const|div|if|' - r'invoke|move|mul|neg|not|or|rem|return|rsub|shl|shr|sub|' - r'ushr)[-/]|{|}', text, re.MULTILINE): - return 0.8 - return 0.5 + score += 0.6 + return score diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py index f0fe6a50..87bf3ff4 100644 --- a/pygments/lexers/jvm.py +++ b/pygments/lexers/jvm.py @@ -1507,12 +1507,13 @@ class JasminLexer(RegexLexer): } def analyse_text(text): - if not re.search(r'^\s*\.class\s', text, re.MULTILINE): - return 0 + score = 0 + if re.search(r'^\s*\.class\s', text, re.MULTILINE): + score += 0.5 + if re.search(r'^\s*[a-z]+_[a-z]+\b', text, re.MULTILINE): + score += 0.3 if re.search(r'^\s*\.(attribute|bytecode|debug|deprecated|enclosing|' r'inner|interface|limit|set|signature|stack)\b', text, re.MULTILINE): - return 1 - if re.search(r'^\s*[a-z]+_[a-z]+\b', text, re.MULTILINE): - return 0.8 - return 0.5 + score += 0.6 + return score |