Visualizador de Autómatas Finitos Deterministas desarrollado para el curso de Lenguajes Formales y de Programación - 2025.
Autor: Alex Ricardo Castañeda Rodríguez
Carné: 202300476
Este proyecto tiene como objetivo leer archivos .lfp
que contienen la descripción de autómatas, analizarlos léxicamente, representarlos gráficamente y generar reportes en HTML.
Visualización del autómata, entrada .lfp
, y acciones de análisis/reportes.
- Carga de archivo con autómatas.
- Análisis léxico e identificación de tokens y errores.
- Renderizado de gráficas SVG usando Graphviz y Apache Batik.
- Soporte para zoom y pan.
- HTML para tokens reconocidos.
- HTML para errores léxicos.
- HashMap con los autómatas cargados.
- Permite múltiples autómatas por archivo.
AFDGraph/
├── assets/ # Recursos gráficos
├── data/
│ ├── input/ # Archivos .lfp de entrada
│ ├── output/ # Archivos SVG generados
│ └── reports/ # Reporte HTML de análisis léxico
├── docs/ # Documentación del proyecto
├── src/
│ ├── main/java/com/afdgraph/
│ │ ├── export/ # Exportación de SVG con Graphviz
│ │ ├── lexer/ # Lexer y parser manual
│ │ ├── models/ # Clases de datos: Token, Automaton, etc.
│ │ ├── report/ # Generador del reporte HTML
│ │ └── ui/ # Interfaz gráfica con Swing
│ └── test/java/com/afdgraph/
│ └── ... # Pruebas unitarias (JUnit)
├── pom.xml # Configuración Maven
├── README.md
AFD1: {
descripcion: "Reconoce números",
estados: [S0, S1],
alfabeto: ["1", "2"],
inicial: S0,
finales: [S1],
transiciones: {
S0 = ("1" -> S1),
S1 = ("2" -> S0)
}
}
⭐ Puedes ver el reporte completo en /data/reports/lexical_report.html
.
- Java 17 o superior
- Graphviz instalado (para generar archivos
.svg
) - Apache Batik (ya integrado en el proyecto)
- Maven (opcional, para empaquetado)
- Clona el repositorio:
git clone https://github.com/ricardious/AFDGraph.git
- Ejecuta
Main.java
desde tu IDE o terminal. - Carga un archivo
.lfp
, selecciona un AFD y grafica.
Proyecto desarrollado de forma individual como parte del curso de LFP 2025.
Inspirado en los principios fundamentales de autómatas finitos deterministas.
No se utilizó ningún generador léxico como ANTLR, JFlex o Lex.
El análisis se realizó con un AFD programado manualmente, carácter por carácter, según lo exigido por el proyecto.