diff options
author | Tim Hatch <tim@timhatch.com> | 2014-05-16 17:46:51 -0700 |
---|---|---|
committer | Tim Hatch <tim@timhatch.com> | 2014-05-16 17:46:51 -0700 |
commit | 1817074d12abb679e067c5e82a4b480fbe75e157 (patch) | |
tree | cf841d3f4ef895a74bc18b52d8ea705bd8b0e87e | |
parent | 929db39874cb52d14eb14ad41485782d759e60d1 (diff) | |
parent | 9e04788996b3346aa3cf0ccb7eeea690a97d10ec (diff) | |
download | pygments-1817074d12abb679e067c5e82a4b480fbe75e157.tar.gz |
Merged in dscorbett/pygments-racket (pull request #358)
Improve RacketLexer
-rw-r--r-- | pygments/lexers/jvm.py | 22 | ||||
-rw-r--r-- | tests/examplefiles/example.java | 16 |
2 files changed, 27 insertions, 11 deletions
diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py index 69d90b78..4633c66f 100644 --- a/pygments/lexers/jvm.py +++ b/pygments/lexers/jvm.py @@ -34,14 +34,19 @@ class JavaLexer(RegexLexer): filenames = ['*.java'] mimetypes = ['text/x-java'] - flags = re.MULTILINE | re.DOTALL + flags = re.MULTILINE | re.DOTALL | re.UNICODE tokens = { 'root': [ (r'[^\S\n]+', Text), (r'//.*?\n', Comment.Single), (r'/\*.*?\*/', Comment.Multiline), - (r'@[a-zA-Z_][\w\.]*', Name.Decorator), + # method names + (r'((?:(?:[^\W\d]|\$)[\w\.\[\]\$<>]*\s+)+?)' # return arguments + r'((?:[^\W\d]|\$)[\w\$]*)' # method name + r'(\s*)(\()', # signature start + bygroups(using(this), Name.Function, Text, Operator)), + (r'@[^\W\d][\w\.]*', Name.Decorator), (r'(assert|break|case|catch|continue|default|do|else|finally|for|' r'if|goto|instanceof|new|return|switch|this|throw|try|while)\b', Keyword), @@ -50,20 +55,15 @@ class JavaLexer(RegexLexer): r'transient|volatile)\b', Keyword.Declaration), (r'(boolean|byte|char|double|float|int|long|short|void)\b', Keyword.Type), - # method names - (r'^(\s*(?:[a-zA-Z_][\w\.\[\]<>]*\s+)+?)' # return arguments - r'([a-zA-Z_]\w*)' # method name - r'(\s*)(\()', # signature start - bygroups(using(this), Name.Function, Text, Operator)), (r'(package)(\s+)', bygroups(Keyword.Namespace, Text)), (r'(true|false|null)\b', Keyword.Constant), (r'(class|interface)(\s+)', bygroups(Keyword.Declaration, Text), 'class'), (r'(import)(\s+)', bygroups(Keyword.Namespace, Text), 'import'), (r'"(\\\\|\\"|[^"])*"', String), (r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char), - (r'(\.)([a-zA-Z_]\w*)', bygroups(Operator, Name.Attribute)), - (r'[a-zA-Z_]\w*:', Name.Label), - (r'[a-zA-Z_\$]\w*', Name), + (r'(\.)((?:[^\W\d]|\$)[\w\$]*)', bygroups(Operator, Name.Attribute)), + (r'([^\W\d]|\$)[\w\$]*:', Name.Label), + (r'([^\W\d]|\$)[\w\$]*', Name), (r'[~\^\*!%&\[\]\(\)\{\}<>\|+=:;,./?-]', Operator), (r'[0-9][0-9]*\.[0-9]+([eE][0-9]+)?[fd]?', Number.Float), (r'0x[0-9a-fA-F]+', Number.Hex), @@ -71,7 +71,7 @@ class JavaLexer(RegexLexer): (r'\n', Text) ], 'class': [ - (r'[a-zA-Z_]\w*', Name.Class, '#pop') + (r'([^\W\d]|\$)[\w\$]*', Name.Class, '#pop') ], 'import': [ (r'[\w.]+\*?', Name.Namespace, '#pop') diff --git a/tests/examplefiles/example.java b/tests/examplefiles/example.java new file mode 100644 index 00000000..f2e94322 --- /dev/null +++ b/tests/examplefiles/example.java @@ -0,0 +1,16 @@ +class _PostUnico$deClassá +{void fo$o() {} + + void PostUnicodeFunctioná() { + láb$el: + break láb$el; + + } +} + +class áPreUnicode$Class +{ + public int $foo; + public int á$foo; + _PostUnico$deClassá áPreUnicodeFunction() { return null; } +} |