1. A system for detecting a pattern in a data stream comprising events, the system comprising: a memory storing a plurality of instructions; a processor coupled to the memory, the processor configured to execute the plurality of instructions thereby causing the processor to: receive predicate information, the predicate information specifying a predicate associated with each symbol in a set of one or more symbols; receive a regular expression specifying a pattern, the regular expression comprising one or more symbols from the set of symbols; maintain a set of one or more bindings after processing each event received in the data stream, each binding in the set of bindings indicating a degree to which the pattern is matched as a result of the received event, wherein the set of bindings comprises at most N bindings, where N is equal to a number of symbols in the regular expression plus one; and determine if the pattern is matched due to the received event based upon the set of one or more bindings.