小编alc*_*111的帖子

将自定义公式转换为python函数

考虑一下我们有以下输入

formula = "(([foo] + [bar]) - ([baz]/2) )"

function_mapping = {
                   "foo" : FooFunction,
                   "bar" : BarFunction,
                   "baz" : BazFunction,  
                  }
Run Code Online (Sandbox Code Playgroud)

是否有任何python库可以解析公式并将其转换为python函数表示.

例如.

converted_formula = ((FooFunction() + BarFunction() - (BazFunction()/2))
Run Code Online (Sandbox Code Playgroud)

我目前正在研究类似的东西

In [11]: ast = compiler.parse(formula)

In [12]: ast
Out[12]: Module(None, Stmt([Discard(Sub((Add((List([Name('foo')]), List([Name('bar')]))), Div((List([Name('baz')]), Const(2))))))]))
Run Code Online (Sandbox Code Playgroud)

然后进一步处理这个树.

你知道任何更清洁的替代解决方案吗?非常感谢任何帮助或见解!

python dsl parsing abstract-syntax-tree

6
推荐指数
1
解决办法
620
查看次数

标签 统计

abstract-syntax-tree ×1

dsl ×1

parsing ×1

python ×1