Ні, практично ніяк. Машина з кінцевим станом зазвичай запам'ятовує лише одну частину даних: її поточний стан.
Типовим застосуванням FSM є лексинг або розбір. Наприклад, коли ми робимо лексинг, кодування дій для кожного можливого введення з точки зору поточного стану та значення введення досить (як правило) досить просто.
Наприклад, у нас може бути стан НОМЕРА, в якому ми читаємо цифри числа. Якщо наступним символом, який ми читаємо, є цифра, ми залишаємось у стані НОМЕРА. Якщо це пробіл або вкладка, ми повертаємо цифри, а потім переходимо до певного стану WHITE_SPACE або чогось у цьому порядку.
Тепер, безумовно, вірно, що в типовому FSM (особливо в реалізованому в програмному забезпеченні) ми закінчуємо шматочками та фрагментами, які технічно не зовсім підходять до FSM, змішаного із самим FSM. Наприклад, коли ми читаємо цифри числа, ви часто збираєтеся зберігати позицію першої цифри, тому, добираючись до кінця, ви можете легко обчислити значення числа.
Сама ФДМ має деякі обмеження - у неї немає механізму підрахунку. Розглянемо, наприклад, мову, яка використовувала "/ " для початку коментаря та " /" для завершення коментаря. Його лексер, ймовірно, мав би стан коментаря, який він увійшов, побачивши маркер '/ '. У цей момент немає можливості (крім додавання іншого стану, такого як COMMENT2), щоб виявити інше "/ " і зрозуміти, що він має справу з вкладеним коментарем. Швидше, у стані коментаря, він визнає */
, що говорить йому залишити стан коментаря, а все інше залишить його у стані коментаря.
Як згадувалося, ви, безумовно, можете включити стан COMMENT2 для вкладеного коментаря - і в цьому, стан COMMENT3 тощо. Однак у якийсь момент вам не вистачить додати більше станів, і це визначить максимальну глибину введення, яку ви можете додати до коментарів. За допомогою іншої форми аналізатора (тобто, не чистого стану машини, але щось, що має деяку пам’ять, щоб він міг рахувати), ви можете просто відстежувати глибину гніздування безпосередньо, тому ви залишаєтесь у стані КОМЕНТАРУ, поки не досягнете ознайомлення з тим, врівноважує перший, тож ваш лічильник повертається до 0, і ви залишаєте стан COMMENT.
Як я вже сказав, коли ви додаєте подібний лічильник, те, що у вас є, вже не є дійсно FSM. У той же час, вона є на самому ділі досить близько - в Зокрема, досить близько , що ви можете моделювати лічильник, просто додавши більше держав.
У типовому випадку, однак, коли хто - небудь говорить про реалізацію FSM в програмному забезпеченні, вони будуть тримати його досить «чистий». Зокрема, програмне забезпечення буде реагувати на поточний вхід на основі лише поточного стану та значення самого введення. Якщо реакція залежить від багато чого іншого, вони зазвичай не називатимуть це державною машиною (принаймні, якщо вони знають, про що говорять).