# US 2021/0279045 A1 · Integrated development environment for developing and compiling query language schemas for application program interfaces

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

- Number: US 2021/0279045 A1
- Document ID: US20210279045A1
- Status: Published application
- Kind: A1
- Application number: 16/809,993
- Filed: 2020-03-05
- Published: 2021-09-09
- Earliest claimed: 2020-03-05
- Assignees: Intuit Inc.
- Applicants: Intuit Inc.
- Inventors: Samuel Songhea KO; Bhavin Navin SHAH; Houssam FATHALLAH; Ashpak Salim SHAIKH; Varadarajan SRIRAM
- Web page: https://patentgrep.com/patent/US20210279045A1

## CPC

- G06F 8/48: {Incremental compilation (software reuse G06F8/36)}
- G06F 8/33: Intelligent editors
- G06F 8/425: {Lexical analysis}
- G06F 8/427: {Parsing}
- G06F 8/54: Link editing before load time
- G06F 9/44589: {Program code verification, e.g. Java bytecode verification, proof-carrying code (high-level semantic checks G06F8/43; prevention of errors by analysis, debugging or testing of software G06F11/36)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An integrated development environment (IDE) that may provide compile-time validation, and incremental compilation and linking of multiple schema resources for a query language such as e.g., GraphQL.

## Claims

### Claim 1

A computer implemented method of operating an integrated development environment (IDE) on a computing device, features of the IDE being accessible by a user via a user interface running on the computing device and output to a display of the computing device, the IDE being associated with a query language and for developing a query language schema, said method comprising:
performing an incremental compilation and linking process on source code of the query language schema, wherein the source code is incrementally compiled and linked to generate runtime objects; and
performing a runtime compilation validation process, wherein detected errors in the source code stop the compilation and linking process without generating the runtime objects.

### Claim 2 (depends on 1)

The method of claim 1, wherein the runtime compilation validation process comprises:
inputting the source code;
performing a lexical analysis process on the source code;
creating a parse tree on the output from the lexical analysis process;
performing an abstract syntax tree generation process to generate an abstract syntax tree representation of a structure of the syntax of the source code; and
performing a validation process using the abstract syntax tree.

### Claim 3 (depends on 2)

The method of claim 2, wherein the lexical analysis process generates a sequence of tokens from characters within the source code.

### Claim 4 (depends on 1)

The method of claim 1, wherein the incremental compilation and linking process comprises:
performing a first compilation process using source files containing first source code of the query language schema to generate first runtime objects; and
performing a second compilation process using one or more changed source code containing second source code of the query language schema to generate one or more second runtime objects.

### Claim 5 (depends on 4)

The method of claim 4, wherein the first compilation process further comprises:
creating a first resource set map and a first abstract syntax tree;
storing the first resource set map in a first memory; and
storing the first abstract syntax tree in a second memory.

### Claim 6 (depends on 4)

The method of claim 4, wherein the first compilation process further comprises creating a first resource set map and a first abstract syntax tree and the second compilation process further comprises:
inputting the one or more changed source files;
creating a second resource set map;
creating a difference between the first resource set map and second resource set map;
using the difference between the first resource set map and second resource set map to create a modified abstract syntax tree; and
compiling the second source code based on the modified abstract syntax tree.

### Claim 7 (depends on 6)

The method of claim 6, wherein the second compilation process further comprises:
modifying one or more first runtime objects when the difference indicates that the second source code comprises a change to the first source code;
creating one or more second runtime objects when the difference indicates that the second source code comprises a new resource; and
modifying one or more first runtime objects when the difference indicates that the second source code no longer comprises a resource from the first source code.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
performing content assist as the user is updating a source code file;
performing type definition location;
performing syntax highlighting; and
performing cross-referencing.

### Claim 9 (depends on 8)

The method of claim 8, wherein performing content assist further comprises performing an autocomplete process to automatically complete an item being updated by the user as the user is updating the source code.

### Claim 10 (depends on 1)

The method of claim 1, wherein the runtime compilation validation process outputs an error message to the user interface when an error in the source code is detected.

### Claim 11

A system for operating an integrated development environment (IDE), said system comprising:
a computing device, features of the IDE being accessible by a user via a user interface running on the computing device and output to a display of the computing device, the IDE being associated with a query language and for developing a query language schema, said computing device being configured to:
perform an incremental compilation and linking process on source code of the query language schema, wherein the source code is incrementally compiled and linked to generate runtime objects; and
perform a runtime compilation validation process, wherein detected errors in the source code stop the compilation and linking process without generating the runtime objects.

### Claim 12 (depends on 11)

The system of claim 11, wherein the runtime compilation validation process comprises:
inputting the source code;
performing a lexical analysis process on the source code;
creating a parse tree on the output from the lexical analysis process;
performing an abstract syntax tree generation process to generate an abstract syntax tree representation of a structure of the syntax of the source code; and
performing a validation process using the abstract syntax tree.

### Claim 13 (depends on 12)

The system of claim 12, wherein the lexical analysis process generates a sequence of tokens from characters within the source code.

### Claim 14 (depends on 11)

The system of claim 11, wherein the incremental compilation and linking process comprises:
performing a first compilation process using source files containing first source code of the query language schema to generate first runtime objects; and
performing a second compilation process using one or more changed source files containing second source code of the query language schema to generate one or more second runtime objects.

### Claim 15 (depends on 14)

The system of claim 14, wherein the first compilation process further comprises:
creating a first resource set map and a first abstract syntax tree;
storing the first resource set map in a first memory; and
storing the first abstract syntax tree in a second memory.

### Claim 16 (depends on 14)

The system of claim 14, wherein the first compilation process further comprises creating a first resource set map and a first abstract syntax tree and the second compilation process further comprises:
inputting the one or more changed source files;
creating a second resource set map;
creating a difference between the first resource set map and second resource set map;
using the difference between the first resource set map and second resource set map to create a modified abstract syntax tree; and
compiling the second source code based on the modified abstract syntax tree.

### Claim 17 (depends on 16)

The system of claim 16, wherein the second compilation process further comprises:
modifying one or more first runtime objects when the difference indicates that the second source code comprises a change to the first source code;
creating one or more second runtime objects when the difference indicates that the second source code comprises a new resource; and
modifying one or more first runtime objects when the difference indicates that the second source code no longer comprises a resource from the first source code.

### Claim 18 (depends on 11)

The system of claim 11, wherein the computing device is further configured to:
perform content assist as the user is updating a source code file;
perform type definition location;
perform syntax highlighting; and
perform cross-referencing.

### Claim 19 (depends on 18)

The system of claim 18, wherein performing content assist further comprises performing an autocomplete process to automatically complete an item being updated by the user as the user is updating the source code.

### Claim 20 (depends on 11)

The system of claim 11, wherein the runtime compilation validation process outputs an error message to the user interface when an error in the source code is detected.
