Implementación de autómatas finitos en Forth

Fuentes: Finite State Machines in Forth

El artículo describe técnicas para construir autómatas finitos deterministas y no deterministas en el lenguaje de programación Forth, centrándose en una metodología que mantiene una correspondencia uno a uno entre la definición y la tabla de estados del autómata. Frente al enfoque tradicional basado en estructuras IF anidadas —difíciles de leer, depurar y modificar, además de provocar penalizaciones de rendimiento por pérdida de pipeline en los procesadores—, el autor propone sustituir el historial de banderas lógicas por una única variable de estado. Las transiciones se codifican en una tabla donde cada combinación estado-entrada define una acción concreta (eco del carácter al terminal o ignorar) y un estado siguiente. Como ejemplo práctico, la nota desarrolla un validador interactivo de números decimales con signo y punto decimal fijo (al estilo "0.123", ".123", "-1.23"), comparando una versión procedural plagada de condiciones con versiones Forth basadas en máquinas de estados. El texto presenta tres implementaciones progresivas —una "fuerza bruta" con la estructura CASE: ... ;CASE de HS/FORTH, una versión optimizada y otra no determinista— y discute sus respectivas ventajas en claridad, velocidad y portabilidad. Incluye además referencias a herramientas CASE comerciales de la época (Logic Gem, Matrix Layout, COMPEDITOR) y notas de compatibilidad con el estándar ANSI de Forth. La aportación principal es una forma estructurada, legible y eficiente de implementar reconocedores de patrones en Forth, útil en compiladores, controladores y validación de entrada interactiva.