1. A method of detecting a pattern in a data stream comprising events, the method comprising: receiving, at a processing system, predicate information, the predicate information specifying a predicate associated with each symbol in a set of one or more symbols; receiving, at the processing system, a regular expression specifying a pattern, the regular expression comprising one or more symbols from the set of symbols; constructing an automaton for the pattern; and upon receiving an event in the data stream: determining, based upon the received event, one or more states of the automaton and associated bindings, wherein at least one state in the one or more states has multiple associated bindings, and determining if the pattern is matched due to the received event based upon the one or more states and associated bindings.