X-Git-Url: https://scm.cri.ensmp.fr/git/linpy.git/blobdiff_plain/1d494bb187b70135df721c13306d7f26fdf33f50..0da8076d0fb7aab6c4cb61b55db4fcf3a916f588:/pypol/linexprs.py diff --git a/pypol/linexprs.py b/pypol/linexprs.py index 0db7edd..9ab5c86 100644 --- a/pypol/linexprs.py +++ b/pypol/linexprs.py @@ -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)