2008-11-24 105 views

回答

2

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

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

您必须考虑叶/节点取消,部分重新计算,ecc。如果我没有错,我会在某处阅读Excel可以从多核处理器中并行重新计算一张表。

2

是否在AST中表示公式然后使用设计模式(如Visitor模式)重新计算?

你在想interpreter,不是访客。虽然使用访客的树行程可以与解释一起使用,但在这里使用解释器更有意义(因此名称)。这个功能基本上是friol写的,即按照后序遍历树并执行与每个节点相关的功能。

+0

谢谢 - 我已经看到用于走AST的Visitor模式,并认为这是最常用的方法。我会按照您的建议检查解释器模式。 – 2008-11-24 22:30:10

4

Resolver One是IronPython制作的电子表格应用程序。

an explanation of the overall mechanic for the calculation [pythonology.org]它用于用户生成的ecuations。

Overview of Resolver One's overall algorithm to deal with user generated ecuations http://pythonology.org/images/final/resolver/images/basic-spreadsheet-eval-web.png

相关的图像显示解析器一个整体的算法。

应该注意,用户可以编写python代码,以便在单元格和特殊的“工作表外”位置上进行解释。