From 198e3beaaca7b7a55bf03d56b106e443716523f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= <hugo@lysator.liu.se> Date: Thu, 21 Sep 2023 02:10:16 +0200 Subject: [PATCH] Fix remaining errors reported. --- muppet/puppet/format/parser.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/muppet/puppet/format/parser.py b/muppet/puppet/format/parser.py index 872a1f5..68c80f4 100644 --- a/muppet/puppet/format/parser.py +++ b/muppet/puppet/format/parser.py @@ -176,7 +176,7 @@ class rich_char(ParseDirective): match self.c: case '\\': - return parser.get(r'\\') + return parser.get(s(r'\\') | '\\') case '\n': return parser.get(s('\n') | r'\n') case '\r': @@ -195,7 +195,7 @@ class rich_char(ParseDirective): # Literal linebreaks can apparently be escaped inside # "rich" strings (thankfully not inside 'plain' strings). try: - return parser.get(s("\\\n") & self.c) + return parser.get(s("\\\n") & many(space) & self.c) except ParseError: return parser.get(self.c) @@ -560,6 +560,10 @@ class ParserFormatter(Serializer[ParseDirective]): case _: parser &= interpolated_form(self.s(fragment)) + # Apparently can a heredoc end with an escaped literal + # newline... + parser &= optional(many(space) & '\\') + parser &= heredoc_end return parser -- GitLab