IP Library Patent Application 12817456
Patent Application
App. No. 12/817,456

DECOMPILING LOOPS IN A SPREADSHEET

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
12/817,456
Abstract

The present invention extends to methods, systems, and computer program products for decompiling loops in a spreadsheet. Embodiments of the invention detect loops by walking a dependency graph on a spreadsheet. As nodes are encountered, sequences of the same formulas are looked for in a normalized representation of the spreadsheet (e.g., R1C1 notation). When the same formulas are identified, the formulas may represent a loop. The spatial structure of the cells is analyzed to determine which cells are to be stored in arrays and which cells can be loop carried dependencies.

Claims (64)

1 . At a computer system including one or more processors and system memory, a method for identifying looping semantics within a spreadsheet, the method comprising:

an act of parsing the spreadsheet to identify a plurality of formulas within the spreadsheet

an act of generating a normalized representation of the plurality of formulas, the normalized representation of the plurality of formulas indicating relative differences between cell positions within the spreadsheet;

an act of calculating dependencies between the plurality of formulas;

an act of detecting any circular references between cells of the spreadsheet based on the calculated dependencies between the plurality of formulas;

an act of marking cells with detected circular references as being part of an iterative calculation;

for one or more of the marked cells, an act of identifying one or more patterns of repetitive formulas from the normalized representation of the plurality of formulas;

an act of determining that the one or more patterns of repetitive formulas represents at least one loop; and

an act of calculating loop input data and loop output data for the at least one loop from the plurality of formulas.

2 . The method as recited in claim 1 , wherein the act of generating a normalized representation of the plurality of formulas comprises an act of converting the plurality of formulas to R1C1 notation.

3 . The method as recited in claim 2 , wherein the act of determining that the one or more patterns of repetitive formulas represents at least one loop comprises an act of identifying formulas that are identical expect for one of: a row and a column offset.

4 . The method as recited in claim 1 , wherein the act of determining that the one or more patterns of repetitive formulas represents at least one loop comprises an act of determining a number of iterations for a loop.

5 . The method as recited in claim 1 , wherein the act of determining that the one or more patterns of repetitive formulas represents at least one loop comprises an act of identifying a nested loop.

6 . The method as recited in claim 1 , wherein the act of calculating loop input data and loop output data for the loop comprise:

an act of detecting that data for the loop is to come from a range of cells within the spreadsheet; and

an act of storing the data from the range of cells in an array.

7 . The method as recited in claim 6 , wherein the act of determining that the one or more patterns of identical formulas represents at least one loop comprises an act of determining that the one or more patterns of repetitive formulas represent a plurality of loops.

8 . The method as recited in claim 7 , wherein the act of calculating loop input data and loop output data for the at least one loop comprises an act of calculating loop input data and loop output data for the plurality of loops.

9 . The method as recited in claim 8 , wherein the act of calculating loop input data and loop output data for the plurality of loops comprises:

an act of detecting that data for a first loop is to come from a first range of cells within the spreadsheet; and

an act of detecting that data for a second loop is to come from a second range of cells within the spreadsheet, wherein the first range of cells and the second ranges of cells at least partially overlap.

10 . The method as recited in claim 9 , further comprising:

an act of creating an array that contains all cells in the first range of cells and all cells in second range of cells.

11 . The method as recited in claim 10 , further comprising:

an act of determining the minimal area within the array to be covered by the first and second ranges of cells, including:

an act of transforming the first range of cells from within the array into a first array;

an act of storing data from the first range of cells in the first array;

an act of transforming the second range of cells from within the array into a second array; and

an act of storing data from the second range of cells in the second array.

12 . A computer program product for use at a computer system, the computer program product of implementing a method for identifying looping semantics within a spreadsheet, the computer program product comprising one or more computer readable media having stored thereon computer-executable instructions that, when executed at a processor, cause the computer system to perform the method, including the following:

parse the spreadsheet to identify a plurality of formulas within the spreadsheet

generate a normalized representation of the plurality of formulas, the normalized representation of the plurality of formulas indicating relative differences between cell positions within the spreadsheet;

calculate dependencies between the plurality of formulas;

detect any circular references between cells of the spreadsheet based on the calculated dependencies between the plurality of formulas;

mark cells with detected circular references as being part of an iterative calculation;

for one or more of the marked cells, identify one or more patterns of repetitive formulas from the normalized representation of the plurality of formulas;

determine that the one or more patterns of repetitive formulas represents at least one loop; and

calculate loop input data and loop output data for the at least one loop from the plurality of formulas.

13 . The computer program product as recited in claim 12 , wherein computer-executable instructions that, when executed, cause the computer system to generate a normalized representation of the plurality of formulas comprise computer-executable instructions that, when executed, cause the computer system to convert the plurality of formulas to R1C1 notation.

14 . The computer program product as recited in claim 13 , wherein computer-executable instructions that, when executed, cause the computer system to determine that the one or more patterns of repetitive formulas represents at least one loop comprise computer-executable instructions that, when executed, cause the computer system to identify formulas that are identical expect for one of: a row and a column offset.

15 . The computer program product as recited in claim 12 , wherein computer-executable instructions that, when executed, cause the computer system to determine that the one or more patterns of repetitive formulas represents at least one loop comprise computer-executable instructions that, when executed, cause the computer system to determining a number of iterations for a loop.

16 . The computer program product as recited in claim 12 , wherein computer-executable instructions that, when executed, cause the computer system to calculate loop input data and loop output data for the at least one loop comprise computer-executable instructions that, when executed, cause the computer system to calculate loop input data and loop output data for a plurality of loops.

17 . The computer program product as recited in claim 16 , wherein computer-executable instructions that, when executed, cause the computer system to calculate loop input data and loop output data for the plurality of loops comprise computer-executable instructions that, when executed, cause the computer system to:

detect that data for a first loop is to come from a first range of cells within the spreadsheet; and

detect that data for a second loop is to come from a second range of cells within the spreadsheet, wherein the first range of cells and the second ranges of cells at least partially overlap.

18 . The computer program product as recited in claim 17 , further comprising computer-executable instructions that, when executed, cause the computer system to create an array that contains all cells in the first range of cells and all cells in second range of cells.

19 . The computer program product as recited in claim 18 , further comprising computer-executable instructions that, when executed, cause the computer system to:

determine the minimal area within the array to be covered by the first and second ranges of cells, including:

transforming the first range of cells from within the array into a first array;

storing data from the first range of cells in the first array;

transforming the second range of cells from within the array into a second array; and

storing data from the second range of cells in the second array.

20 . A computer system, the computer system comprising:

one or more processors;

system memory; and

one or more computer storage media having stored thereon computer-executable instructions representing a formula parser, a normalizer, a dependency calculator, a circular reference calculator, a cell marker, a pattern identifier, a loop identifier, and an I/O calculator, wherein computer-executable instructions are collectively configured to:

parse the spreadsheet to identify a plurality of formulas in A1 format within the spreadsheet

generate a normalized representation of the plurality of formulas in R1C1 format form the plurality of formulas in A1 format, the normalized representation of the plurality of formulas indicating relative differences between cell positions within the spreadsheet;

calculate dependencies between the plurality of formulas;

detect any circular references between cells of the spreadsheet based on the calculated dependencies between the plurality of formulas;

mark cells with detected circular references as being part of an iterative calculation;

for one or more of the marked cells, identify one or more patterns of repetitive formulas from the normalized representation of the plurality of formulas, the repetitive formulas being identical except for differences in one of a row offset and a column offset;

determine that the one or more patterns of repetitive formulas represents at least one loop, including the number of iterations of the at least one loop; and

calculate loop input data and loop output data for the at least one loop from the plurality of formulas from a range of values in an array.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 15, 2015
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034766/0509 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 17, 2010
From: MESSERLY, JOHN BENJAMIN; HUGUNIN, JAMES J.; STALL, JONATHON MICHAEL; HAGENLOCHER, CURT OLIVER
To: MICROSOFT CORPORATION
Reel/Frame 024551/0677 →