2 from sympy
import sympify
5 return sympify(parse(s
))
12 (r
"\A(\w+)\[([^\]]+[^\[]*)\]\Z", #Function call
13 lambda m
: translateFunction(m
.group(1)) + "(" + parse(m
.group(2)) + ")" ),
15 (r
"\((.+)\)\((.+)\)", #Parenthesized implied multiplication
16 lambda m
: "(" + parse(m
.group(1)) + ")*(" + parse(m
.group(2)) + ")" ),
18 (r
"\A\((.+)\)\Z", #Parenthesized expression
19 lambda m
: "(" + parse(m
.group(1)) + ")" ),
21 (r
"\A(.*[\w\.])\((.+)\)\Z", #Implied multiplication - a(b)
22 lambda m
: parse(m
.group(1)) + "*(" + parse(m
.group(2)) + ")" ),
24 (r
"\A\((.+)\)([\w\.].*)\Z", #Implied multiplication - (a)b
25 lambda m
: "(" + parse(m
.group(1)) + ")*" + parse(m
.group(2)) ),
27 (r
"\A([\d\.]+)([a-zA-Z].*)\Z", #Implied multiplicatin - 2a
28 lambda m
: parse(m
.group(1)) + "*" + parse(m
.group(2)) ),
30 (r
"\A([^=]+)([\^\-\*/\+=]=?)(.+)\Z", #Infix operator
31 lambda m
: parse(m
.group(1)) + translateOperator(m
.group(2)) + parse(m
.group(3)) ))
34 for rule
, action
in rules
:
41 def translateFunction (s
):
46 def translateOperator (s
):
47 dictionary
= {'^':'**'}