Browse Source

Add translation rules for \n, \t, and \"

Yentl Van Tendeloo 8 years ago
parent
commit
81e99e84a1

+ 5 - 1
interface/HUTN/hutn_compiler/constructors_visitor.py

@@ -105,7 +105,11 @@ class ConstructorsVisitor(Visitor):
             {"value": tree.get_tail()[0].get_text()[1:]})
 
     def visit_string(self, tree):
-        self.add_constructors("const", tree.get_text()[1:-1])
+        v = tree.get_text()[1:-1]
+        v = v.replace("\\n", "\n")
+        v = v.replace("\\t", "\t")
+        v = v.replace("\\\"", "\"")
+        self.add_constructors("const", v)
 
     def visit_integer(self, tree):
         self.add_constructors("const", int(tree.get_text()))

+ 7 - 0
interface/HUTN/hutn_compiler/primitives_visitor.py

@@ -174,6 +174,13 @@ class PrimitivesVisitor(Visitor):
             v = tree.get_text()[1:]
         else:
             v = tree.get_text()
+
+            if isinstance(v, (str, unicode)):
+                # Rewrite \n
+                print("Rewriting!")
+                v = v.replace("\\n", "\n")
+                v = v.replace("\\t", "\t")
+                v = v.replace("\\\"", "\"")
         #NOTE Wrap this in an Action, even though it might not be an action: this has to be seen directly in the Mv without additional wrapping
         n = self.value(Action(v))
         self.dict(c, "node", n)