2

语法树中表示的公式是否会使用访问者模式等设计模式重新计算?您将如何在代码中重现重新计算过程?

4

3 回答 3

7

Resolver One是使用 IronPython 开发的电子表格。

它的源代码已作为Dirigible Spreadsheet发布。曾经有一篇文章描述了它的整体算法:

在此处输入图像描述

于 2008-11-27T00:11:51.883 回答
3

正如您所说,一个猜测可能是 Excel 创建了一堆 AST,每个独立的单元格组一个,其中叶子是原始静态数据,节点是公式。

然后它使用后序树遍历算法计算每个节点的结果。

您必须考虑叶/节点取消、部分重新计算、ecc。如果我没记错的话,我在某处读到 Excel 可以受益于多核处理器以并行重新计算工作表。

于 2008-11-24T18:37:41.390 回答
2

AST 中表示的公式是否会使用访问者模式等设计模式重新计算?

您正在考虑口译员,而不是访客。虽然使用访问者的 treewalking 可以与口译结合使用,但在这里使用口译员更有意义(因此得名)。这基本上就是friol写的,即后序遍历树,执行每个节点关联的函数。

于 2008-11-24T18:42:11.240 回答