No, no prácticamente de todos modos. Una máquina de estados finitos normalmente solo recuerda una pieza de datos: su estado actual.
Una aplicación típica de un FSM es lexing o parsing. Por ejemplo, cuando hacemos lexing, (normalmente) es bastante fácil codificar las acciones para cada entrada posible en términos de un estado actual y el valor de la entrada.
Por ejemplo, podríamos tener un estado NUMBER en el que estamos leyendo los dígitos de un número. Si el siguiente carácter que leemos es un dígito, permanecemos en el estado NUMBER. Si se trata de un espacio o una pestaña, devolveremos los dígitos y luego avanzaremos a un estado WHITE_SPACE, o algo en ese orden.
Ahora, es cierto que en un FSM típico (especialmente uno que está implementado en software) terminamos con partes que técnicamente no se ajustan a un FSM mezclado con el FSM en sí. Por ejemplo, cuando leemos dígitos de un número, con frecuencia va a guardar la posición del primer dígito, de modo que cuando llegue al final pueda calcular fácilmente el valor del número.
El FSM en sí tiene algunas limitaciones: no tiene un mecanismo de conteo. Considere, por ejemplo, un lenguaje que usó "/ " para comenzar un comentario y " /" para finalizar un comentario. Su lexer probablemente tendría un estado COMENTARIO al que ingresó cuando vio un token '/ '. No tiene forma en este punto (salvo agregar otro estado como COMMENT2) para detectar otro "/ " y darse cuenta de que se trata de un comentario anidado. Más bien, en el estado de comentario, reconocerá */
que le dice que deje el estado de comentario, y cualquier otra cosa lo deja en el estado de comentario.
Como se mencionó, ciertamente podría incluir un estado COMMENT2 para un comentario anidado, y en eso, un estado COMMENT3, etc. Sin embargo, en algún momento, te cansarás de agregar más estados, y eso determinará la profundidad máxima de anidación que permites para los comentarios. Con alguna otra forma de analizador (es decir, no una máquina de estado puro, sino algo que tenga algo de memoria para que cuente), puede seguir su profundidad de anidamiento directamente, de modo que permanezca en el estado COMENTARIO hasta llegar a un token de comentario cercano que equilibra el primero, por lo que su contador vuelve a 0 y deja el estado COMENTARIO.
Como dije, sin embargo, cuando agrega un contador como ese, lo que tiene ya no es realmente un FSM. Al mismo tiempo, en realidad está bastante cerca, específicamente, lo suficientemente cerca como para que pueda simular el contador simplemente agregando más estados.
Sin embargo, en un caso típico, cuando alguien habla de implementar un FSM en software, lo mantendrá razonablemente "puro". En particular, el software reaccionará a la entrada actual basándose únicamente en el estado actual y el valor de la entrada en sí. Si la reacción depende de algo más, generalmente no lo llamarán una máquina de estados (al menos si saben de qué están hablando).