diff options
author | Georg Brandl <georg@python.org> | 2014-10-08 00:12:29 +0200 |
---|---|---|
committer | Georg Brandl <georg@python.org> | 2014-10-08 00:12:29 +0200 |
commit | 1fd65ff28bc90c6ea89a4f4e6397818ab1a99b4c (patch) | |
tree | 428190f76c144f08d6b8f7e058ad10667905e03e | |
parent | 91a1dc56d38e918f69bf690675583f60a0b6425d (diff) | |
download | pygments-1fd65ff28bc90c6ea89a4f4e6397818ab1a99b4c.tar.gz |
Closes #1015: fix lexing of Haskell char literals.
In the case of TH quoting, 'f'7 means char literal and then numeric 7, not quoted f'7, see
http://www.haskell.org/ghc/docs/7.6.2/html/users_guide/template-haskell.html
-rw-r--r-- | pygments/lexers/haskell.py | 3 | ||||
-rw-r--r-- | tests/examplefiles/example.hs | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/pygments/lexers/haskell.py b/pygments/lexers/haskell.py index 9b13cbc6..6c71aa97 100644 --- a/pygments/lexers/haskell.py +++ b/pygments/lexers/haskell.py @@ -59,8 +59,9 @@ class HaskellLexer(RegexLexer): (r'\bmodule\b', Keyword.Reserved, 'module'), (r'\berror\b', Name.Exception), (r'\b(%s)(?!\')\b' % '|'.join(reserved), Keyword.Reserved), + (r"'[^\\]'", String.Char), # this has to come before the TH quote (r'^[_' + uni.Ll + r'][\w\']*', Name.Function), - (r"'?[_" + uni.Ll + r"'][\w']*", Name), + (r"'?[_" + uni.Ll + r"][\w']*", Name), (r"('')?[" + uni.Lu + r"][\w\']*", Keyword.Type), # Operators (r'\\(?![:!#$%&*+.\\/<=>?@^|~-]+)', Name.Function), # lambda operator diff --git a/tests/examplefiles/example.hs b/tests/examplefiles/example.hs index 9efd3364..f5e2b555 100644 --- a/tests/examplefiles/example.hs +++ b/tests/examplefiles/example.hs @@ -25,3 +25,7 @@ data ĈrazyThings = House | Peár deriving (Show, Eq) + +-- some char literals: + +charl = ['"', 'a', '\ESC', '\'', ' '] |