2008-11-24 148 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代碼,以便在單元格和特殊的「工作表外」位置上進行解釋。