added a few tests, might change the format though
[linpy.git] / pypol / linexprs.py
index 0db7edd..9ab5c86 100644 (file)
@@ -252,9 +252,12 @@ class Expression:
                 return left / right
         raise SyntaxError('invalid syntax')
 
+    _RE_NUM_VAR = re.compile(r'(\d+|\))\s*([^\W\d_]\w*|\()')
+
     @classmethod
     def fromstring(cls, string):
-        string = re.sub(r'(\d+|\))\s*([^\W\d_]\w*|\()', r'\1*\2', string)
+        # add implicit multiplication operators, e.g. '5x' -> '5*x'
+        string = cls._RE_NUM_VAR.sub(r'\1*\2', string)
         tree = ast.parse(string, 'eval')
         return cls._fromast(tree)