diff options
author | gbrandl <devnull@localhost> | 2009-02-14 14:19:48 +0100 |
---|---|---|
committer | gbrandl <devnull@localhost> | 2009-02-14 14:19:48 +0100 |
commit | cd428a682b1270a2bf327d1522d14081571e5412 (patch) | |
tree | 0e29351760f7d59b372cbb4b7e308aae36f92a54 | |
parent | a63ad537982d9b92c112f9be5d380abb0341e545 (diff) | |
download | pygments-cd428a682b1270a2bf327d1522d14081571e5412.tar.gz |
#392: Fix fatal backtracking in Scala lexer.
-rw-r--r-- | pygments/lexer.py | 1 | ||||
-rw-r--r-- | pygments/lexers/compiled.py | 17 |
2 files changed, 8 insertions, 10 deletions
diff --git a/pygments/lexer.py b/pygments/lexer.py index 0e6f06bb..053df0fd 100644 --- a/pygments/lexer.py +++ b/pygments/lexer.py @@ -477,7 +477,6 @@ class RegexLexer(Lexer): for rexmatch, action, new_state in statetokens: m = rexmatch(text, pos) if m: - # print rex.pattern if type(action) is _TokenType: yield pos, action, m.group() else: diff --git a/pygments/lexers/compiled.py b/pygments/lexers/compiled.py index dbd1173b..f361de3a 100644 --- a/pygments/lexers/compiled.py +++ b/pygments/lexers/compiled.py @@ -992,23 +992,22 @@ class ScalaLexer(RegexLexer): (ur'%s|%s|`[^`]+`' % (idrest, op), Name.Class, '#pop'), ], 'type': [ - (r'(?<=\])(\s*$)', Text, '#pop'), - (r'[\s\n]+', Text), - (ur'<[%:]|=>|>:|[#_\u21D2]|forSome|type', Keyword), - (r'([,\);}]|=(?!>))([\s\n]*)', bygroups(Operator, Text), '#pop'), + (r'\s+', Text), + (ur'<[%:]|>:|[#_\u21D2]|forSome|type', Keyword), + (r'([,\);}]|=>|=)([\s\n]*)', bygroups(Operator, Text), '#pop'), (r'[\(\{]', Operator, '#push'), - (ur'((?:\.|%s|%s|`[^`]+`)+)([\s]*)(\[)' % (idrest, op), - bygroups(Keyword.Type, Text, Operator), 'typeparam'), - (ur'((?:\.|%s|%s|`[^`]+`)+)(\s*)$' % (idrest, op), + (ur'((?:%s|%s|`[^`]+`)(?:\.(?:%s|%s|`[^`]+`))*)(\s*)(\[)' % (idrest, op, idrest, op), + bygroups(Keyword.Type, Text, Operator), ('#pop', 'typeparam')), + (ur'((?:%s|%s|`[^`]+`)(?:\.(?:%s|%s|`[^`]+`))*)(\s*)$' % (idrest, op, idrest, op), bygroups(Keyword.Type, Text), '#pop'), - (ur'(\.|%s|%s|`[^`]+`)+' % (idrest, op), Keyword.Type) + (ur'\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type) ], 'typeparam': [ (r'[\s\n,]+', Text), (ur'<[%:]|=>|>:|[#_\u21D2]|forSome|type', Keyword), (r'([\]\)\}])', Operator, '#pop'), (r'[\(\[\{]', Operator, '#push'), - (ur'(\.|%s|%s|`[^`]+`)+' % (idrest, op), Keyword.Type) + (ur'\.|%s|%s|`[^`]+`' % (idrest, op), Keyword.Type) ], 'comment': [ (r'[^/\*]+', Comment.Multiline), |