Excel使用什么算法重新计算公式?

时间:2008-11-24 18:15:25

标签: algorithm data-structures excel-formula

然后使用像访客模式这样的设计模式重新计算syntax tree中表示的公式?您将如何在代码中重现重新计算过程?

3 个答案:

答案 0 :(得分:4)

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

其源代码已发布为Dirigible Spreadsheet。描述其整体算法的There used to be an article

enter image description here

答案 1 :(得分:2)

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

然后使用post-order树遍历算法计算每个节点的结果。

你必须考虑叶/节点取消,部分重新计算,ecc。如果我没有错,我会在某处读到Excel可以从多核处理器中获益并行地重新计算工作表。

答案 2 :(得分:2)

  

然后使用像访客模式这样的设计模式重新计算AST中表示的公式吗?

你在考虑interpreter,而不是访客。虽然使用访客的树木行走可以与解释一起使用,但使用解释器在这里更有意义(因此名称)。这样做基本上就是friol编写的内容,即按顺序遍历树并执行与每个节点关联的函数。