我正在编写一个基于规则的小型“数学”引擎。我意识到这不清楚,所以我将提供一个小例子。
假设您有一些变量 a,它包含一个整数。您还可以将一些功能应用于该号码,即
sqr
- 平方数flp
- 翻转数字的位dec
- 减少数字inc
- 增加数字
然后你可以说,do_formula(a, "2sqr+inc+flp")
。如果 a 是 3,它会将它平方两次(81),增加它(82),然后翻转它的位(~82——如果处理有符号整数,我相信它是 -83)。
解析公式的最佳方法是什么?它相对简单,我正在考虑将所有操作码都设为 3 个字符……使用 Lex 会不会过大?我应该只写一个简单的自制解决方案还是完全使用其他东西?
我意识到上面的例子很愚蠢;我不是在构建一个可以做到这一点的计算器,但它说明了我想要做得足够好。