Como usar o Finite Automaton para implementar um scanner

Estou construindo um scanner simples. Suponha que eu tenha os seguintes tokens definidos para o meu idioma:

!, !=, !==, <, <<, {

Agora eu posso especificá-los usando expressões regulares, portanto:

!=?=? | { | <<?

Então eu useihttp://hackingoff.com para criar NFA e DFA. Agora, cada máquina pode determinar se a entrada está no idioma de regexp ou não. Mas meu programa é uma sequência de tokens, não um token:

!!=!<!==<<!{

Minha pergunta écomo devo usar as máquinas para analisar a string em tokens? Estou interessado na abordagem e não na implementação.

questionAnswers(1)

yourAnswerToTheQuestion