【发布时间】:2019-04-10 22:52:27
【问题描述】:
我正在尝试开发一个程序,用户可以在其中选择给定算术公式或表达式的一部分,还可以从给定的一组转换规则中选择一个转换规则,并且程序会相应地转换公式,如果可能的话。
我已经为公式和转换规则构建了表达式树,但我不知道如何使用它们来实现我的目标。
例如:
如果我有以下公式
a * (b * c) + a - c
并且用户选择了这个子公式a * (b * c)
并且还选择了这个变换规则X * ( Y * Z ) ≡ Y * ( X * Z)
那么预期的结果应该是b * ( a * c ) + a - c
即使表达式/规则中有括号,是否有一种算法可以进行这种转换?
【问题讨论】:
-
将表达式转换为语法树,然后进行树模式匹配。 (Google 会找到很多参考资料。)
标签: algorithm parsing tree formula brackets