A computing system for processing information communicated via a data stream that contains blocks of data which collectively define a string of data, the system computing comprising: a processor; and memory in communication with the processor, storing instruction code executable by the processor to cause the processor to perform operations that include: generating instances of parsers to form a group of parsers (1000A-1000C), wherein the parsers in the group of parsers are arranged to process the data stream in a pipelined manner, wherein each parser in the group of parsers is associated with a search query, and wherein the group of parsers comprises at least a first parser and a second parser; associating the first parser with a first search query and the second parser with a second search query; controlling the first parser to obtain data from the data stream in blocks and to search the blocks for one or more elements that are associated with the first search query; controlling the second parser to search the obtained blocks for one or more elements that are associated with the second search query; controlling the first parser to repeatedly obtain data from the data stream in blocks until the first parser finishes searching; associating a read-from-stream flag, RS flag, with the second parser, the RS flag defining a false state and a true state; and controlling the second parser to: (i) in response to the RS flag being in the false state, repeatedly obtain the blocks from the first parser, and (ii) in response to the first parser finishing searching and when all of the blocks obtained by the first parser have been searched by the second parser, setting the RS flag to the true state and repeatedly obtaining blocks from the data stream. a processor; and memory in communication with the processor, storing instruction code executable by the processor to cause the processor to perform operations that include: generating instances of parsers to form a group of parsers (1000A-1000C), wherein the parsers in the group of parsers are arranged to process the data stream in a pipelined manner, wherein each parser in the group of parsers is associated with a search query, and wherein the group of parsers comprises at least a first parser and a second parser; associating the first parser with a first search query and the second parser with a second search query; controlling the first parser to obtain data from the data stream in blocks and to search the blocks for one or more elements that are associated with the first search query; controlling the second parser to search the obtained blocks for one or more elements that are associated with the second search query; controlling the first parser to repeatedly obtain data from the data stream in blocks until the first parser finishes searching; associating a read-from-stream flag, RS flag, with the second parser, the RS flag defining a false state and a true state; and controlling the second parser to: (i) in response to the RS flag being in the false state, repeatedly obtain the blocks from the first parser, and (ii) in response to the first parser finishing searching and when all of the blocks obtained by the first parser have been searched by the second parser, setting the RS flag to the true state and repeatedly obtaining blocks from the data stream. generating instances of parsers to form a group of parsers (1000A-1000C), wherein the parsers in the group of parsers are arranged to process the data stream in a pipelined manner, wherein each parser in the group of parsers is associated with a search query, and wherein the group of parsers comprises at least a first parser and a second parser; associating the first parser with a first search query and the second parser with a second search query; controlling the first parser to obtain data from the data stream in blocks and to search the blocks for one or more elements that are associated with the first search query; controlling the second parser to search the obtained blocks for one or more elements that are associated with the second search query; controlling the first parser to repeatedly obtain data from the data stream in blocks until the first parser finishes searching; associating a read-from-stream flag, RS flag, with the second parser, the RS flag defining a false state and a true state; and controlling the second parser to: (i) in response to the RS flag being in the false state, repeatedly obtain the blocks from the first parser, and (ii) in response to the first parser finishing searching and when all of the blocks obtained by the first parser have been searched by the second parser, setting the RS flag to the true state and repeatedly obtaining blocks from the data stream.