Compilador para el lenguaje Little Duck utilizando PLY (Python Lex-Yacc) en Python.
Este proyecto implementa un analizador léxico y sintáctico basado en gramáticas LALR(1) utilizando las librerías:
import ply.lex as lex
import ply.yacc as yaccDesarrollar un compilador capaz de:
- Leer archivos
.txtcon programas escritos en Little Duck. - Reconocer elementos léxicos mediante expresiones regulares.
- Generar un stream de tokens.
- Validar la sintaxis del lenguaje usando una gramática LR.
- Detectar y reportar errores léxicos y sintácticos.
- Recuperarse de errores y continuar el análisis del programa.
- Python 3
- PLY (Python Lex-Yacc)
project/
│
├── compilador.py # Analizador léxico
├── programa.txt #Pruebas
└── README.mdEl compilador leerá archivos .txt que contienen código fuente escrito en Little Duck.
Se utilizarán expresiones regulares para identificar:
- Palabras reservadas
- Identificadores
- Operadores
- Números
- Strings
- Símbolos especiales
El resultado será un token stream generado con PLY.
Se implementará una gramática utilizando ply.yacc.
Las reglas sintácticas se definirán mediante funciones separadas.
El compilador deberá:
- Reportar errores léxicos
- Reportar errores sintácticos
- Mostrar:
- Subcadena infractora
- Línea
- Posición
El parser no debe detenerse tras el primer error.
Se investigarán e implementarán estrategias de recuperación de errores disponibles en PLY, como:
- Uso del token especial
error - Sincronización por delimitadores
- Recuperación parcial del parsing
Documentación oficial: https://www.dabeaz.com/ply/ply.html
Instalar PLY:
pip install plyEjecutar el compilador:
python main.pyEste proyecto busca reforzar conceptos de:
- Compiladores
- Gramáticas LR
- Parsing LALR(1)
- Expresiones regulares
- Manejo de errores
- Construcción de analizadores léxicos y sintácticos
Proyecto académico de compiladores utilizando Python y PLY.