Domanda

Le formule sono rappresentate in un albero di sintassi e quindi ricalcolate utilizzando un modello di progettazione come il Visitatore modello? Come faresti a riprodurre il processo di ricalcolo nel codice?

È stato utile?

Soluzione

Probabilmente, come dici tu, un'ipotesi è che Excel crea un gruppo di AST, uno per ogni gruppo indipendente di celle, in cui le foglie sono i dati statici di origine e i nodi sono formule.

Quindi calcola il risultato per ciascun nodo, con un post-order algoritmo di attraversamento.

Devi tenere conto dell'annullamento foglia / nodo, ricalcolo parziale, ecc. Se non sbaglio, ho letto da qualche parte che Excel potrebbe trarre vantaggio dai processori multicore per ricalcolare un foglio in parallelo.

Altri suggerimenti

Resolver One era un foglio di calcolo sviluppato utilizzando IronPython.

Il suo codice sorgente è stato rilasciato come Dirigible Spreadsheet . C'era un articolo che descriveva il suo algoritmo generale:

 inserisci qui la descrizione dell'immagine

  

Le formule rappresentate in un AST vengono quindi ricalcolate utilizzando un modello di progettazione come il modello Visitatore?

Stai pensando interprete , non visitatore. Mentre il treewalking con un visitatore può essere impiegato insieme all'interpretazione, impiegare un interprete ha più senso qui (da qui il nome). Ciò che fa è fondamentalmente ciò che Friol ha scritto, ovvero attraversare l'albero in ordine post ed eseguire la funzione associata a ciascun nodo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top