# US 2013/0159967 A1 · Available symbol set generation using untyped variable

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2013/0159967 A1
- Document ID: US20130159967A1
- Status: Published application
- Kind: A1
- Application number: 13/329,136
- Filed: 2011-12-16
- Published: 2013-06-20
- Earliest claimed: 2011-12-16
- Assignees: Microsoft Corporation
- Inventors: Charles P. Jazdzewski; Michael C. Fanning
- Web page: https://patentgrep.com/patent/US20130159967A1

## CPC

- G06F 8/313: {Logic programming, e.g. PROLOG programming language}
- G06F 8/41: Compilation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The facilitated computation of an available symbol set at code locations in a dynamic language program, in which the program is executed up to a particular halt point for which an available symbol set is to be generated. At the halt point, a type of a value of a particular variable may be used in order to generate the available symbol set. However, at the halt point, the variable does not yet have a value of a useful type (e.g., null or undefined), which is possible in a dynamic language program. Rather than return an error, the principles described herein returns an arbitrary symbol set anyway. Specifically, the variable had previously been annotated with information represented accessed type information for the variable, even though the variable has not formally been defined. This annotated information may be used to generate the available symbol set.

## Claims

### Claim 1

A computer program product comprising one or more computer-readable media having thereon computer-executable instructions that are structured such that, when executed by the one or more processors of a computing system, causes the computing system to perform a method for facilitating computation of an available symbol set at code locations in a dynamic language program, the method comprising:
an act of the computing system accessing a dynamic language program;
an act of accessing type information for at least one variable of the dynamic language program;
an act of annotating the variable with information representing the accessed type information without declaring the variable as being of a particular type;
an act of executing the dynamic language program;
an act of halting execution of the dynamic language program at a halt point in which an available symbol set would be derived based on a value of the variable having a useful type;
an act of determining that the variable does not have a value of a useful type to formulate an available symbol set at the halt point;
an act of accessing the annotated information to determine the type information; and
an act of generating the available symbol set based on the type information even though the variable does not have a value of a useful type at the halt point.

### Claim 2 (depends on 1)

The computer program product in accordance with claim 1, wherein at the halt point, the variable has a null value.

### Claim 3 (depends on 2)

The computer program product in accordance with claim 2, wherein the act of annotating occurs by assigning a value to the variable that is treated as a null value by the executing dynamic language program, but which also includes the annotated information.

### Claim 4 (depends on 1)

The computer program product in accordance with claim 1, wherein at the halt point, the variable has an undefined value.

### Claim 5 (depends on 4)

The computer program product in accordance with claim 4, wherein the act of annotating occurs by assigning a value to the variable that is treated as an undefined value by the executing dynamic language program, but which also includes the annotated information.

### Claim 6 (depends on 1)

The computer program product in accordance with claim 1, wherein the annotated information remains even if the variable is initialized or is not previously defined.

### Claim 7 (depends on 1)

The computer program product in accordance with claim 1, wherein the annotated information is deleted prior to deployment.

### Claim 8 (depends on 1)

The computer program product in accordance with claim 1, wherein the act of accessing type information for at least one variable of the dynamic language program comprises:
an act of acquiring type information from user-supplied comments.

### Claim 9 (depends on 1)

The computer program product in accordance with claim 1, wherein the act of accessing type information for at least one variable of the dynamic language program comprises:
an act of statically analyzing the dynamic language program to arrive at the type information.

### Claim 10

A method for a computing system to facilitate computation of an available symbol set at code locations in a dynamic language program, the method comprising:
an act of the computing system accessing a dynamic language program;
an act of the computing system accessing type information for at least one variable of the dynamic language program;
an act of the computing system annotating the variable with information representing the accessed type information without declaring the variable as being of a particular type;
an act of executing the dynamic language program;
an act of halting execution of the dynamic language program at a halt point in which an available symbol set would be derived based on a value of the variable having a useful type;
an act of determining that the variable does not have a value of a useful type to formulate an available symbol set at the halt point;
an act of accessing the annotated information to determine the type information; and
an act of generating the available symbol set based on the type information even though the variable does not have a value of a useful type at the halt point.

### Claim 11 (depends on 10)

The method in accordance with claim 10, wherein the acts of executing the dynamic language program, halting execution at the halt point, determining that the variable does not have a value of a useful type, accessing the annotated information, and generating the available symbol set are performed by the same computing system that performed the acts of accessing type information, and annotating the variable.

### Claim 12 (depends on 10)

The method in accordance with claim 10, wherein the acts of executing the dynamic language program, halting execution at the halt point, determining that the variable does not have a value of a useful type, accessing the annotated information, and generating the available symbol set are performed by a different computing system that performed the acts of accessing type information, and annotating the variable.

### Claim 13 (depends on 10)

The method in accordance with claim 10, wherein at the halt point, the variable has a null value.

### Claim 14 (depends on 13)

The method in accordance with claim 13, wherein the act of annotating occurs by assigning a value to the variable that is treated as a null value by the executing dynamic language program, but which also includes the annotated information.

### Claim 15 (depends on 10)

The method in accordance with claim 10, wherein at the halt point, the variable has an undefined value.

### Claim 16 (depends on 15)

The method in accordance with claim 15, wherein the act of annotating occurs by assigning a value to the variable that is treated as an undefined value by the executing dynamic language program, but which also includes the annotated information.

### Claim 17 (depends on 10)

The method in accordance with claim 10, wherein the annotated information remains even if the variable is initialized.

### Claim 18 (depends on 10)

The method in accordance with claim 10, wherein the annotated information remains even if the variable is not previously defined.

### Claim 19 (depends on 10)

The method in accordance with claim 10, further comprising:
an act of deleting the annotated information prior to deployment.

### Claim 20

A computer program product comprising one or more computer-readable media having thereon computer-executable instructions that are structured such that, when executed by the one or more processors of a computing system, causes the computing system to perform a method for facilitating computation of an available symbol set at code locations in a dynamic language program, the method comprising:
an act of the computing system accessing a dynamic language program;
an act of accessing type information for a plurality of variables of the dynamic language program;
an act of annotating each of the plurality of variables with information representing the corresponding accessed type information without declaring the corresponding variable as being of a particular type;
an act of executing the dynamic language program;
an act of halting execution of the dynamic language program at a halt point in which an available symbol set would be derived based on a value of a useful type of one of the plurality of variables;
an act of determining that the variable does not have a value of a useful type to formulate an available symbol set at the halt point;
an act of accessing the annotated information for the variable to determine the type information; and
an act of generating an available symbol set based on the type information of the variable even though the variable does not have a value of a useful type at the halt point, but has a null value or an undefined value.
