数式は構文ツリーで表され、ビジター パターンのような設計パターンを使用して再計算されますか? 再計算プロセスをコードで再現するにはどうすればよいでしょうか?
3 に答える
Resolver Oneは、IronPythonを使用して開発されたスプレッドシートでした。
そのソースコードはDirigibleSpreadsheetとしてリリースされています。その全体的なアルゴリズムを説明する記事がありました:
おそらく、あなたが言うように、Excelは、独立したセルのグループごとに1つずつ、一連のASTを作成します。ここで、葉は元の静的データであり、ノードは数式です。
次に、ポストオーダーツリートラバーサルアルゴリズムを使用して、各ノードの結果を計算します。
リーフ/ノードのキャンセル、部分的な再計算などを考慮に入れる必要があります。私が間違っていなければ、Excelがマルチコアプロセッサを使用してシートを並行して再計算できるという利点があることをどこかで読みました。
ASTで表された数式は、Visitorパターンのようなデザインパターンを使用して再計算されますか?
あなたは訪問者ではなく通訳を考えています。訪問者を使ったツリーウォーキングは通訳と組み合わせて使用できますが、ここでは通訳を使用する方が理にかなっています(そのため名前が付けられています)。これが行うことは、基本的にfriolが書いたものです。つまり、ポストオーダーでツリーをトラバースし、各ノードに関連付けられた関数を実行します。