Calculator 使用C创建计算器

Calculator 使用C创建计算器,calculator,Calculator,我知道如何轻松地制作一个计算器,用单个运算符(乘法、除法或…)处理两个或三个操作数 但是如何编写一个处理正常语法和多个操作数的解析器呢,比如说6*6/3+2,或者仅仅是它们的反向波兰符号等价物6*3/2+您可以创建一个相当简单的递归下降解析器,它可以解析任意复杂的算术表达式。解析器生成表达式的树表示,它对算术的各种优先级/关联性规则进行编码 树的节点将是操作(*、/、+、-),叶子将是数字 然后,计算表达式只需遍历树并自下而上计算每个节点,直到到达顶部,这是最终结果 谷歌会用各种语言提供大量这样

我知道如何轻松地制作一个计算器,用单个运算符(乘法、除法或…)处理两个或三个操作数


但是如何编写一个处理正常语法和多个操作数的解析器呢,比如说
6*6/3+2
,或者仅仅是它们的反向波兰符号等价物
6*3/2+

您可以创建一个相当简单的递归下降解析器,它可以解析任意复杂的算术表达式。解析器生成表达式的树表示,它对算术的各种优先级/关联性规则进行编码

树的节点将是操作(*、/、+、-),叶子将是数字

然后,计算表达式只需遍历树并自下而上计算每个节点,直到到达顶部,这是最终结果


谷歌会用各种语言提供大量这样做的例子。

你有没有尝试过在enter事件之前存储所有输入?看看表达式树。下面是一个网站,它在页面的一半解释了这一点