summaryrefslogtreecommitdiff
path: root/pygments/lexers/jvm.py
diff options
context:
space:
mode:
authorKurt McKee <contactme@kurtmckee.org>2020-11-09 00:26:21 -0600
committerGitHub <noreply@github.com>2020-11-09 07:26:21 +0100
commitfb40b7113e6c71f29c110cc9c32077a0883b732b (patch)
tree0747d9f1df61997fa3247353eeb38566ddecb478 /pygments/lexers/jvm.py
parentafa9e3be5a05a27ed2c8ac515a10e146a766ad15 (diff)
downloadpygments-git-fb40b7113e6c71f29c110cc9c32077a0883b732b.tar.gz
Fix a catastrophic backtracking bug in JavaLexer (#1594)
* JavaLexer: Demonstrate a catastrophic backtracking bug * JavaLexer: Fix a catastrophic backtracking bug Closes #1586
Diffstat (limited to 'pygments/lexers/jvm.py')
-rw-r--r--pygments/lexers/jvm.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/pygments/lexers/jvm.py b/pygments/lexers/jvm.py
index ee0bc7af..2736329d 100644
--- a/pygments/lexers/jvm.py
+++ b/pygments/lexers/jvm.py
@@ -65,7 +65,7 @@ class JavaLexer(RegexLexer):
'var'),
(r'(import(?:\s+static)?)(\s+)', bygroups(Keyword.Namespace, Text),
'import'),
- (r'"(\\\\|\\"|[^"])*"', String),
+ (r'"', String, 'string'),
(r"'\\.'|'[^\\]'|'\\u[0-9a-fA-F]{4}'", String.Char),
(r'(\.)((?:[^\W\d]|\$)[\w$]*)', bygroups(Punctuation,
Name.Attribute)),
@@ -96,6 +96,13 @@ class JavaLexer(RegexLexer):
'import': [
(r'[\w.]+\*?', Name.Namespace, '#pop')
],
+ 'string': [
+ (r'[^\\"]+', String),
+ (r'\\\\', String), # Escaped backslash
+ (r'\\"', String), # Escaped quote
+ (r'\\', String), # Bare backslash
+ (r'"', String, '#pop'), # Closing quote
+ ],
}