diff --git a/hy/lex/lexer.py b/hy/lex/lexer.py index 1480413..4a770f5 100644 --- a/hy/lex/lexer.py +++ b/hy/lex/lexer.py @@ -50,7 +50,7 @@ partial_string = r'''(?x) " # start string (?: | [^"\\] # non-quote or backslash - | \\. # or escaped single character + | \\(.|\n) # or escaped single character or newline | \\x[0-9a-fA-F]{2} # or escaped raw character | \\u[0-9a-fA-F]{4} # or unicode escape | \\U[0-9a-fA-F]{8} # or long unicode escape diff --git a/tests/lex/test_lex.py b/tests/lex/test_lex.py index 56ed52a..4413a6b 100644 --- a/tests/lex/test_lex.py +++ b/tests/lex/test_lex.py @@ -98,8 +98,14 @@ def test_lex_symbols(): def test_lex_strings(): """ Make sure that strings are valid expressions""" - objs = tokenize("\"foo\" ") + objs = tokenize('"foo"') assert objs == [HyString("foo")] + # Make sure backslash-escaped newlines work (see issue #831) + objs = tokenize(r""" +"a\ +bc" +""") + assert objs == [HyString("abc")] def test_lex_integers():