summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPHO <pho@cielonegro.org>2016-01-25 12:29:27 +0900
committerPHO <pho@cielonegro.org>2016-01-25 12:29:27 +0900
commite5b03dddcfa965846639a1a9adff0df492ab59bb (patch)
treec49d99b0637bfe3ec7038f5dd20ec9a831f9f28a
parent1b491356e14fe2dc89e51dad0e6094e7aac068e7 (diff)
downloadpygments-e5b03dddcfa965846639a1a9adff0df492ab59bb.tar.gz
Erlang lexer: Support more escape sequences
-rw-r--r--pygments/lexers/erlang.py6
-rw-r--r--tests/examplefiles/test.erl8
2 files changed, 13 insertions, 1 deletions
diff --git a/pygments/lexers/erlang.py b/pygments/lexers/erlang.py
index c353a4dc..2bd9057c 100644
--- a/pygments/lexers/erlang.py
+++ b/pygments/lexers/erlang.py
@@ -82,7 +82,11 @@ class ErlangLexer(RegexLexer):
variable_re = r'(?:[A-Z_]\w*)'
- escape_re = r'(?:\\(?:[bdefnrstv\'"\\/]|[0-7][0-7]?[0-7]?|\^[a-zA-Z]))'
+ esc_char_re = r'[bdefnrstv\'"\\]'
+ esc_octal_re = r'[0-7][0-7]?[0-7]?'
+ esc_hex_re = r'(?:x[0-9a-fA-F]{2}|x\{[0-9a-fA-F]+\})'
+ esc_ctrl_re = r'\^[a-zA-Z]'
+ escape_re = r'(?:\\(?:'+esc_char_re+r'|'+esc_octal_re+r'|'+esc_hex_re+r'|'+esc_ctrl_re+r'))'
macro_re = r'(?:'+variable_re+r'|'+atom_re+r')'
diff --git a/tests/examplefiles/test.erl b/tests/examplefiles/test.erl
index 5b983e75..bcf9a0b7 100644
--- a/tests/examplefiles/test.erl
+++ b/tests/examplefiles/test.erl
@@ -152,6 +152,14 @@ a_binary() ->
a_list_comprehension() ->
[X*2 || X <- [1,2,3]].
+escape_sequences() ->
+ [ "\b\d\e\f\n\r\s\t\v\'\"\\"
+ , "\1\12\123" % octal
+ , "\x01" % short hex
+ , "\x{fff}" % long hex
+ , "\^a\^A" % control characters
+ ].
+
map(Fun, [H|T]) ->
[Fun(H) | map(Fun, T)];