Tidak, tidak praktis juga. Mesin keadaan terbatas biasanya hanya mengingat satu bagian data: keadaan saat ini.
Aplikasi khas FSM adalah lexing atau parsing. Sebagai contoh, ketika kita melakukan lexing, itu (biasanya) cukup mudah untuk menyandikan tindakan untuk setiap input yang mungkin dalam hal kondisi saat ini, dan nilai input.
Sebagai contoh, kita mungkin memiliki NUMBER keadaan di mana kita membaca angka-angka angka. Jika karakter berikutnya yang kita baca adalah angka, kita tetap dalam status NUMBER. Jika ini spasi atau tab, kami akan mengembalikan digit dan kemudian maju ke kondisi WHITE_SPACE, atau sesuatu dengan urutan itu.
Sekarang, memang benar bahwa dalam FSM tipikal (terutama yang diterapkan dalam perangkat lunak) kita berakhir dengan potongan-potongan yang secara teknis tidak cukup cocok dengan FSM dicampur dengan FSM itu sendiri. Misalnya, ketika kita membaca angka angka, Anda sering akan menyimpan posisi angka pertama, jadi ketika Anda sampai di ujung Anda dapat dengan mudah menghitung nilai angka.
FSM sendiri, memiliki beberapa keterbatasan - tidak memiliki mekanisme penghitungan. Pertimbangkan, misalnya, bahasa yang menggunakan "/ " untuk memulai komentar dan " /" untuk mengakhiri komentar. Lexernya mungkin memiliki status KOMENTAR yang dimasukkan ketika melihat token ' / '. Tidak ada cara pada saat ini (singkat menambahkan negara lain seperti COMMENT2) untuk mendeteksi "/ " lain dan menyadari bahwa itu berurusan dengan komentar bersarang. Sebaliknya, di negara komentar, itu akan diakui */
sebagai menyuruhnya meninggalkan negara komentar, dan apa pun meninggalkannya di negara komentar.
Seperti yang disebutkan, Anda tentu saja dapat menyertakan status COMMENT2 untuk komentar bersarang - dan dalam kondisi tersebut, COMMENT3, dan sebagainya. Namun, pada titik tertentu, Anda akan bosan menambahkan lebih banyak status, dan itu akan menentukan kedalaman bersarang maksimum yang Anda izinkan untuk komentar. Dengan beberapa bentuk parser lain (yaitu, bukan mesin keadaan murni, tetapi sesuatu yang memiliki memori untuk menghitungnya) Anda bisa langsung melacak kedalaman bersarang Anda, sehingga Anda tetap dalam keadaan KOMENTAR sampai Anda mencapai tanda komentar dekat yang menyeimbangkan yang pertama, sehingga penghitung Anda kembali ke 0 dan Anda meninggalkan status KOMENTAR.
Seperti yang saya katakan, ketika Anda menambahkan penghitung seperti itu, apa yang Anda miliki tidak lagi benar-benar FSM. Pada saat yang sama, itu adalah benar-benar cukup dekat - khususnya, cukup dekat bahwa Anda dapat mensimulasikan meja dengan hanya menambahkan lebih banyak negara.
Dalam kasus yang khas, namun, ketika berbicara seseorang tentang menerapkan FSM dalam perangkat lunak, mereka akan tetap cukup "murni". Secara khusus, perangkat lunak akan bereaksi terhadap input saat ini hanya berdasarkan pada kondisi saat ini, dan nilai input itu sendiri. Jika reaksinya tergantung pada banyak hal lain, mereka biasanya tidak akan menyebutnya mesin negara (setidaknya jika mereka tahu apa yang mereka bicarakan).