Não, praticamente não mesmo. Uma máquina de estados finitos normalmente lembra apenas um dado: seu estado atual.
Uma aplicação típica de um FSM é lexing ou análise. Por exemplo, quando estamos fazendo lexing, é (normalmente) bastante fácil codificar as ações para todas as entradas possíveis em termos de um estado atual e o valor da entrada.
Por exemplo, podemos ter um estado NUMBER no qual estamos lendo os dígitos de um número. Se o próximo caractere que lemos for um dígito, permaneceremos no estado NUMBER. Se for um espaço ou uma guia, retornaremos os dígitos e avançaremos para algum estado WHITE_SPACE, ou algo nesse pedido.
Agora, certamente é verdade que em um FSM típico (especialmente um implementado em software) acabamos com pedaços que tecnicamente não se encaixam perfeitamente em um FSM misturado com o próprio FSM. Por exemplo, quando estamos lendo dígitos de um número, você frequentemente salva a posição do primeiro dígito; assim, ao chegar ao final, pode calcular facilmente o valor do número.
O FSM em si tem algumas limitações - não possui mecanismo de contagem. Considere, por exemplo, um idioma que use "/ " para iniciar um comentário e " /" para finalizar um comentário. Seu lexer provavelmente teria um estado COMMENT em que entrou quando viu um token ' / '. Não há como, neste momento (além de adicionar outro estado como COMMENT2), detectar outro "/ " e perceber que está lidando com um comentário aninhado. Em vez disso, no estado de comentário, ele reconhecerá*/
como dizendo para deixar o estado de comentário e qualquer outra coisa o deixará no estado de comentário.
Como mencionado, você certamente poderia incluir um estado COMMENT2 para um comentário aninhado - e, nesse estado, um estado COMMENT3 e assim por diante. Em algum momento, no entanto, você ficará cansado de adicionar mais estados, e isso determinará a profundidade máxima de aninhamento permitida para comentários. Com alguma outra forma de analisador (ou seja, não é uma máquina de estado puro, mas algo que possui memória para permitir a contagem), você pode rastrear diretamente a profundidade do aninhamento, permanecendo no estado COMMENT até chegar a um token de comentário próximo que equilibra o primeiro, então seu contador volta para 0 e você sai do estado COMMENT.
Como eu disse, no entanto, quando você adiciona um contador como esse, o que você tem não é mais um FSM. Ao mesmo tempo, é realmente muito próximo - especificamente, próximo o suficiente para que você possa simular o contador apenas adicionando mais estados.
No entanto, em um caso típico, quando alguém fala sobre a implementação de um FSM em software, ele o mantém razoavelmente "puro". Em particular, o software reagirá à entrada atual com base apenas no estado atual e no valor da própria entrada. Se a reação depender de quase tudo, eles geralmente não a chamarão de máquina de estado (pelo menos se souberem do que estão falando).