IP Library Granted Patent US 8,903,717
Granted Patent B2
US 8,903,717 · App. 14/187,164 · Granted Dec 2, 2014

Method and system for generating a parser and parsing complex data

Inventor: Mark Elliot (Arlington, VA)
Assignee: Palantir Technologies Inc.
G06F17/30595
View Patent ↗
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 8,903,717
App. No.
14/187,164
Granted
Dec 2, 2014
Kind
B2
Abstract

Computer-implemented systems and methods are disclosed for constructing a parser that parses complex data. In some embodiments, a method is provided for receiving a parser definition as an input to a parser generator and generating a parser at least in part from the parser definition. In some embodiments, the generated parser comprises two or more handlers forming a processing pipeline. In some embodiments, the parser receives as input a first string into the processing pipeline. In some embodiments, the parser generates a second string by a first handler and inputs the second string regeneratively into the parsing pipeline, if the first string matches an expression specified for the first handler in the parser definition.

Claims (42)

1. A system for parsing complex data, the system comprising:

a memory device configured to store a set of instructions; and

at least one processor configured to execute the set of instructions to perform the following operations:

input one or more strings into a parsing pipeline within a parser, and

execute, for each inputted string into the parsing pipeline, the following operations:

generate a second string, by a first handler, based in part on a current input string to the parsing pipeline, if the current input string to the parsing pipeline matches a predetermined string of an expression specified for the first handler in a parser definition; and

input the second string, regeneratively, by the first handler, to the parsing pipeline, if the current input string to the parsing pipeline matches a predetermined string of an expression specified for the first handler in the parser definition.

2. The system of claim 1 , wherein the at least one processor is further configured by the set of instructions to perform the following operation as part of the execution:

communicate, by the first handler, as an input string to a second handler, the input string to the parsing pipeline, if the current input string to the parsing pipeline does not match a predetermined string of an expression specified for the first handler in the parser definition.

3. The system of claim 2 , wherein the at least one processor is further configured by the set of instructions to perform the following operations as part of the execution:

generate a third string, by a third handler, based in part on the input string to second handler, if the input string to second handler matches a predetermined string of an expression specified for the second handler in the parser definition; and

input the third string, by the second handler, as an input to another handler, if the input string to second handler matches a predetermined string of an expression specified for the second handler in the parser definition.

4. The system of claim 3 , wherein the at least one processor is further configured by the set of instructions to perform the following operation as part of the execution:

generate an output string from a third handler, by the third handler, if the current input string to the parsing pipeline does not match predetermined strings of expressions specified for handlers other than the third handler in the parser definition.

5. A method for parsing complex data, the method comprising the following operations performed by one or more processors:

inputting one or more strings into a parsing pipeline within a parser; and

executing each inputted string into the parsing pipeline, the executing comprising:

generating a second string, by a first handler, based in part on the current input string to the parsing pipeline, if the current input string to the parsing pipeline matches a predetermined string of an expression specified for the first handler in a parser definition; and

inputting the second string, regeneratively, by the first handler, to the parsing pipeline, if the current input string to the parsing pipeline matches a predetermined string of an expression specified for the first handler in the parser definition.

6. The method of claim 5 , wherein executing each inputted string further comprises:

communicating, by the first handler, as an input string to a second handler, the input string to the parsing pipeline, if the current input string to the parsing pipeline does not match a predetermined string of an expression specified for the first handler in the parser definition.

7. The method of claim 6 , wherein executing each inputted string further comprises:

generating a third string, by a third handler, based in part on the input string to second handler, if the input string to second handler matches a predetermined string of an expression specified for the second handler in the parser definition; and

inputting the third string, by the second handler, as an input to another handler, if the input string to second handler matches a predetermined string of an expression specified for the second handler in the parser definition.

8. The method of claim 7 , wherein executing each inputted string further comprises:

generating an output string from a third handler, by the third handler, if the current input string to the parsing pipeline does not match predetermined strings of expressions specified for handlers other than the third handler in the parser definition.

9. The method of claim 8 , wherein executing each inputted string further comprises:

generating an output string from the parsing pipeline based at least in part on an output string generated by a last handler in the parsing pipeline.

10. A non-transitory computer readable medium that stores a set of instructions that are executable by at least one processor of an electronic device to cause the electronic device to perform a method for parsing complex data, the method comprising:

inputting one or more strings into a parsing pipeline within a parser; and

executing the one or more inputted string into the parsing pipeline, wherein the set of instructions for the executing further comprises instructions executable by the electronic device to cause the electronic device to:

generate a second string, by a first handler, based in part on the current input string to the parsing pipeline, if the current input string to the parsing pipeline matches a predetermined string of an expression specified for the first handler in a parser definition; and

input the second string, regeneratively, by the first handler, to the parsing pipeline, if the current input string to the parsing pipeline matches a predetermined string of an expression specified for the first handler in the parser definition.

11. The non-transitory computer readable medium of claim 10 , wherein the set of instructions for the executing further comprises instructions executable by the electronic device to cause the electronic device to:

communicate, by the first handler, as an input string to a second handler, the input string to the parsing pipeline, if the current input string to the parsing pipeline does not match a predetermined string of an expression specified for the first handler in the parser definition.

12. The non-transitory computer readable medium of claim 11 , wherein the set of instructions for the executing further comprises instructions executable by the electronic device to cause the electronic device to:

generate a third string, by a third handler, based in part on the input string to second handler, if the input string to second handler matches a predetermined string of an expression specified for the second handler in the parser definition; and

input the third string, by the second handler, as an input to another handler, if the input string to second handler matches a predetermined string of an expression specified for the second handler in the parser definition.

13. The non-transitory computer readable medium of claim 12 , wherein the set of instructions for the executing further comprises instructions executable by the electronic device to cause the electronic device to:

generate an output string from a third handler, by the third handler, if the current input string to the parsing pipeline does not match predetermined strings of expressions specified for handlers other than the third handler in the parser definition.

14. The non-transitory computer readable medium of claim 13 , wherein the set of instructions for the executing further comprises instructions executable by the electronic device to cause the electronic device to:

generate an output string from the parsing pipeline based at least in part on an output string generated by a last handler in the parsing pipeline.

Assignments (8)
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 21, 2014
From: ELLIOT, MARK
To: PALANTIR TECHNOLOGIES, INC.
Reel/Frame 032274/0692 →
Continuity (3)
Continuation 14173743 · Feb 5, 2014
Provisional Application 61801432 · Mar 15, 2013
Related Publication 20140280255A1 · Sep 18, 2014