我想做一些类似于使用 Python 进行常量折叠的事情。
Python 有一个方便的内置函数 eval(),因此可以通过应用 eval() 轻松折叠只有常量的方程。
例子:
s = '4 + (5) * 2'
reduced_s = str(eval(s)) # '14'
但是,我想实现的常量折叠应该处理非常量标签。
例子:
s = '_tbl + (2) + (2) * 4'
should be folded to '_tbl + 10'.
如果常量部分由标签分隔,例如 (s = '2 + _tbl + 4'),它仍应生成 '_tbl + 6' (或 '6 + _tbl)。
几年前,我使用“C”编写了一个常量折叠例程。这不是一个小例程,因为我需要构建一棵树并评估运算符的优先级。
由于 Python 语言比“C”强大得多,所以在使用 Python 做同样的事情之前,我想寻求其他人的智慧。
非常感谢您对这一挑战的见解。