文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
3.4 处理器
我们如何来处理表达式呢?如果我们仅仅想用一些用数字表示的值执行简单的算术。我们可以扩展识别函数并且一旦识别出操作符和操作码就计算出结果如: sum()
应该会期望从每一个对 product()
的调用期望一个 double
类型的结果,尽可能的执行加或减法,并且返回结果,再次作为一个 double
类型函数的值。
如果我们想要建立一个系统用来处理更加复杂的表达式,我们需要存储表达式以便于后续处理。在这种情况下,我们能够不仅仅执行算术,而且可以允许决定并且有条件的评估一个表达式的一部分,且可用存储的表达式作为用户的函数包含在其他表达式中。我们所需要的是一个合理通用的方式代表一个表达式。比较常规的技术是使用一个二叉树在每一个节点上存储 token
.
struct Node {
enum tokens token;
struct Node * left, * right;
};
然而,这样并不是很灵活。我们需要介绍一个 union
去创建一个节点,在这个节点上我们可存储一个数,并且我们在这些节点代表的一元操作符上浪费了空间。此外, process()
和 delete()
将包含 witch
分支,并 witch
分支会随着我们增加的符号而增多。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论