Какой алгоритм использует Excel для пересчета формул? - PullRequest
1 голос
/ 24 ноября 2008

Затем формулы, представленные в синтаксическом дереве , пересчитываются с использованием шаблона проектирования, например шаблона Visitor? Как бы вы воспроизвели процесс пересчета в коде?

Ответы [ 3 ]

4 голосов
/ 27 ноября 2008

Resolver One - это электронная таблица, разработанная с использованием IronPython.

Его исходный код был выпущен как Электронная таблица . Раньше была статья , в которой описывался общий алгоритм:

enter image description here

2 голосов
/ 24 ноября 2008

Затем формулы, представленные в AST, пересчитываются с использованием шаблона проектирования, такого как шаблон Visitor?

Ты думаешь переводчик , а не посетитель. В то время как ходьба с использованием посетителя может использоваться в сочетании с переводом, использование переводчика имеет больше смысла (отсюда и название). Это в основном то, что написал friol, то есть обойти дерево в последующем порядке и выполнить функцию, связанную с каждым узлом.

2 голосов
/ 24 ноября 2008

Вероятно, как вы говорите, одна из догадок состоит в том, что Excel создает набор AST, по одному для каждой независимой группы ячеек, где листья - это исходные, статические данные, а узлы - формулы.

Затем он вычисляет результат для каждого узла с помощью алгоритма обхода дерева после заказа .

Необходимо учитывать отмену листа / узла, частичный пересчет и т. Д. Если я не ошибаюсь, я где-то читал, что Excel может воспользоваться многоядерными процессорами для параллельного пересчета листа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...