12. The method of claim 11 , wherein dynamically expanding the third finite-state automaton based on an input string to be recognized by the third finite-state automaton comprises: inputting the input string; selecting a symbol of the input string; determining, based on the selected symbol, whether expanding of the third finite-state automaton is desirable; and if expanding the third finite-state automaton is desirable, replacing an edge of the third finite-state automaton that is labeled with the selected symbol with one of the at least one second finite-state automaton that contains the selected symbol.
12. The method of claim 11 , wherein dynamically expanding the third finite-state automaton based on an input string to be recognized by the third finite-state automaton comprises: inputting the input string; selecting a symbol of the input string; determining, based on the selected symbol, whether expanding of the third finite-state automaton is desirable; and if expanding the third finite-state automaton is desirable, replacing an edge of the third finite-state automaton that is labeled with the selected symbol with one of the at least one second finite-state automaton that contains the selected symbol. 13. The method of claim 12 , wherein replacing the edge of the third finite-state automaton that is labeled with the selected symbol with one of the at least one second finite-state automaton that contains the selected symbol comprises: modifying that second finite-state automaton into a new automaton that accepts the selected symbol; and substituting that edge with the new automaton.