Non, pas pratiquement de toute façon. Une machine à états finis ne se souvient normalement que d'une seule donnée: son état actuel.
Une application typique d'un FSM est lexing ou l'analyse. Par exemple, lorsque nous faisons de la lexing, il est (normalement) assez facile de coder les actions pour chaque entrée possible en termes d'état actuel et la valeur de l'entrée.
Par exemple, nous pourrions avoir un état NUMBER dans lequel nous lisons les chiffres d'un nombre. Si le caractère suivant que nous lisons est un chiffre, nous restons dans l'état NUMBER. S'il s'agit d'un espace ou d'une tabulation, nous renvoyons les chiffres, puis passons à un état WHITE_SPACE, ou quelque chose dans cet ordre.
Maintenant, il est certainement vrai que dans un FSM typique (en particulier celui qui est implémenté dans un logiciel), nous nous retrouvons avec des morceaux qui, techniquement, ne correspondent pas tout à fait à un FSM mélangé au FSM lui-même. Par exemple, lorsque nous lisons des chiffres d'un nombre, vous allez souvent enregistrer la position du premier chiffre, donc lorsque vous arrivez à la fin, vous pouvez facilement calculer la valeur du nombre.
Le FSM lui-même a certaines limites - il n'a pas de mécanisme de comptage. Considérons, par exemple, une langue qui utilise "/ " pour commencer un commentaire et " /" pour terminer un commentaire. Son lexer aurait probablement un état COMMENTAIRE qu'il est entré lorsqu'il a vu un jeton «/ ». Il n'a aucun moyen à ce stade (à moins d'ajouter un autre état comme COMMENT2) de détecter un autre "/ " et de réaliser qu'il s'agit d'un commentaire imbriqué. Au contraire, dans l'état de commentaire, il reconnaîtra */
comme lui disant de quitter l'état de commentaire, et toute autre chose le laisse dans l'état de commentaire.
Comme mentionné précédemment, vous avez certainement pu inclure un état comment2 pour un commentaire imbriqué - et en ce que l'état de comment3, et ainsi de suite. À un moment donné, cependant, vous allez en avoir assez d'ajouter d'autres états, ce qui déterminera la profondeur d'imbrication maximale que vous autorisez pour les commentaires. Avec une autre forme d'analyseur (c'est-à-dire pas une machine à états purs, mais quelque chose qui a de la mémoire pour la laisser compter), vous pouvez simplement suivre directement votre profondeur d'imbrication, de sorte que vous restez dans l'état COMMENT jusqu'à ce que vous atteigniez un jeton de commentaire proche qui équilibre le premier, donc votre compteur revient à 0 et vous quittez l'état COMMENT.
Comme je l'ai dit, cependant, lorsque vous ajoutez un compteur comme celui-ci, ce que vous avez n'est plus vraiment un FSM. En même temps, il est en fait assez proche - spécifiquement, suffisamment proche pour que vous puissiez simuler le compteur en ajoutant simplement plus d'états.
Dans un cas typique, cependant, lorsque quelqu'un parle d'implémenter un FSM dans un logiciel, il le gardera raisonnablement "pur". En particulier, le logiciel réagira à l'entrée actuelle uniquement en fonction de l'état actuel et de la valeur de l'entrée elle-même. Si la réaction dépend de beaucoup d'autre chose, ils ne l'appelleront généralement pas une machine d'état (du moins s'ils savent de quoi ils parlent).