返回介绍

3.4 处理器

发布于 2025-02-24 22:44:37 字数 726 浏览 0 评论 0 收藏 0

我们如何来处理表达式呢?如果我们仅仅想用一些用数字表示的值执行简单的算术。我们可以扩展识别函数并且一旦识别出操作符和操作码就计算出结果如: sum() 应该会期望从每一个对 product() 的调用期望一个 double 类型的结果,尽可能的执行加或减法,并且返回结果,再次作为一个 double 类型函数的值。

如果我们想要建立一个系统用来处理更加复杂的表达式,我们需要存储表达式以便于后续处理。在这种情况下,我们能够不仅仅执行算术,而且可以允许决定并且有条件的评估一个表达式的一部分,且可用存储的表达式作为用户的函数包含在其他表达式中。我们所需要的是一个合理通用的方式代表一个表达式。比较常规的技术是使用一个二叉树在每一个节点上存储 token .

struct Node {
  enum tokens token;
  struct Node * left, * right;
};

然而,这样并不是很灵活。我们需要介绍一个 union 去创建一个节点,在这个节点上我们可存储一个数,并且我们在这些节点代表的一元操作符上浪费了空间。此外, process()delete() 将包含 witch 分支,并 witch 分支会随着我们增加的符号而增多。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文