我想计算一个String解决方案。好像输入为“1 + 1”,输出为2,如果为“1/0”,则为错误,如果为“34-8 *(3 + 1)-1”则为将是1 ... 我不能使用指针......这会有点复杂。但我不需要解决方案,我需要一个关于如何预先形成它的想法,你有一个吗?
答案 0 :(得分:2)
你需要一个扫描仪和解析器。扫描仪将输入字符串拆分为令牌。解析器获取这些令牌并进行语义检查和计算。计算可以在f.e.完成。 recursevly。
34-8 *(3 + 1)-1将变为类似[i] 34 [op] - [i] 8 [op] * [bo] [i] 3 [op] + [i] 1 [ BC] [OP] - [I] 1
导致
subtract(34, [i]8[op]*[bo][i]3[op]+[i]1[bc][op]-[i]1)
=> subtract(34, multiply(8, [bo][i]3[op]+[i]1[bc][op]-[i]1))
=> a.s.o.