然后使用像访客模式这样的设计模式重新计算syntax tree中表示的公式?您将如何在代码中重现重新计算过程?
答案 0 :(得分:4)
Resolver One是使用IronPython开发的电子表格。
其源代码已发布为Dirigible Spreadsheet。描述其整体算法的There used to be an article:
答案 1 :(得分:2)
正如你所说,可能有人猜测,Excel会创建一堆AST,每个独立的一组单元格,其中叶子是原始的静态数据,节点是公式。
然后使用post-order树遍历算法计算每个节点的结果。
你必须考虑叶/节点取消,部分重新计算,ecc。如果我没有错,我会在某处读到Excel可以从多核处理器中获益并行地重新计算工作表。
答案 2 :(得分:2)
然后使用像访客模式这样的设计模式重新计算AST中表示的公式吗?
你在考虑interpreter,而不是访客。虽然使用访客的树木行走可以与解释一起使用,但使用解释器在这里更有意义(因此名称)。这样做基本上就是friol编写的内容,即按顺序遍历树并执行与每个节点关联的函数。