diff --git a/muppet/puppet/format/parser.py b/muppet/puppet/format/parser.py
index 3fcf3b316fed0a5a860dc0a7bb8f3aefde8e7f64..e4d345169d56cd264091f9b51ac242552d5d340a 100644
--- a/muppet/puppet/format/parser.py
+++ b/muppet/puppet/format/parser.py
@@ -575,10 +575,11 @@ class ParserFormatter(Serializer[ParseDirective]):
         double_quoted = s('"') & [rich_char(c) for c in it.s] & '"'
 
         if it.s == '':
-            parser = ws & (single_quoted | double_quoted)
+            parser = (single_quoted | double_quoted)
         else:
-            parser = ws & (raw_string | single_quoted | double_quoted)
-        return tag('string', parser)
+            parser = (raw_string | single_quoted | double_quoted)
+        # TODO should the whitespace really be here?
+        return ws & tag('string', name(it.s, parser))
 
     @override
     def _puppet_unary_operator(self, it: PuppetUnaryOperator) -> ParseDirective: