¿ QUÉ ES UN COMPILADOR?
Un compilador es un traductor que trasforma textos fuentes de lenguaje de alto nivel a lenguajes de bajo nivel. Un compilador típicamente opera en fases, cada una lleva a cabo una tarea sobre el programa fuente.
CARACTERÍSTICAS:
Para cada lenguaje de programación se requiere un compilador separado.
- El compilador traduce todo el programa antes de ejecutarlo.
- Los programas compilados se ejecutan más rápido que los interpretados, debido a que han sido completamente traducidos a lenguaje máquina.
- Informa al usuario de la presencia de errores en el programa fuente.
- Poseen un editor integrado con un sistema de coloreado para los comandos, funciones, variables y demás partes de un programa.
HERRAMIENTAS PARA GENERAR COMPILADORES:
Herramientas tradicionales
- Lex/Yacc
- Pclex
- Pcyacc
- Bison
- Flex
VENTAJAS:
- Generan analizadores eficientes, incluso más que los que se pudiera hacer de manera manual.
- Los analizadores ascendentes reconocen la mayor parte de los lenguajes
DESVENTAJAS:
- Yacc usa herramientas externas para que le provean los tokens necesarios
- Las acciones semánticas asociadas con las producciones de los no terminales de las gramáticas son difíciles de depurar
- Yacc no genera árboles de análisis sintáctico
- Mezcla las especificaciones sintácticas con las semánticas
- Incrementos en la dificultad del trabajo de depuración de puesto que los errores que cometen el fichero de especificación con solo visibles en el analizador generado.
HERRAMIENTAS DE NUEVA GENERACIÓN:
ANTLR
- Se considera el lex/yacc del nuevo milenio.
- Genera árboles sintácticos descendentes.
- Escrito íntegramente en JAVA.
- Genera código en JAVA o C++.
Ventajas
- Buena integración de los analizadores léxicos y sintácticos
- El código generado por ANTLR es más fácil de entender y depurar que el YACC.
- Las especificaciones gramaticales de ANTLR permiten la notación BNF y generan árboles de análisis sintáctico.
Desventajas
- Genera analizadores menos eficientes que los generados por YACC.
- Los ficheros de especificación de ANTLR son muy complejas.
- El proceso de depurado consta de las siguientes fases:
- Escribir el código de acciones.
- Compilar el fichero de especificaciones
- Compilar y ejecutar el programa generado
- Localizar errores del programa
- Corregir errores en el fichero de especificaciones
JAVACC:
- Inicialmente se llamo JACK.
- Similar al ANTLR.
- Analizador ascendente.
Ventajas
- Buena integración y los analizadores léxicos y sintáctico.
- Genera analizadores sintácticos descendentes basados en la gramática.
- Incluye la herramienta JJTREE para generar árboles sintácticos.
Desventajas
- Las mismas que ANTLR
OTRAS HERRAMIENTAS
BYACC/JAVA
- Extensión de YACC para generar código JAVA en vez de C/C++.
- Fichero de especificaciones igual que YACC
- Código y declaraciones de lenguaje escritos en JAVA.
COCO/JAVA
- Generados de compiladores que a partir de la descripción del lenguaje mediante una gramática LL genera un analizador sintáctico y un analizador léxico para dicho lenguaje.
CUP
- Versión LEX/YACC para JAVA (su forma de trabajo es análoga).
JACCIE
- JAVA BASED COMPILER.-Compiler in an Interactive Environment.
- Herramienta educativa que se puede utilizar para visualizar las técnicas de compilación.
- Dos principales componentes: un generador de analizadores léxicos y una variedad de generadores de generadores sintácticos.
JELL
- Es un generador de analizadores sintácticos que genera analizadores descendentes a partir de gramáticas LL.
KITS PARA LA CONSTRUCCIÓN DE COMPILADORES
COKTAIL
Conjunto de herramientas para construir compiladores
- REXàgenerador de analizadores léxicos.
- LALRàgenerador de analizadores sintácticos.
- ELLàgenerador de analizadores sintácticos.
- ASTàgenerador de árboles sintácticos.
- AGàpermite procesar gramáticas atribuidas.
ELI
- Combina una variedad de herramientas estándar para implementar potentes estrategias en la construcción de compiladores.
- Se pueden generar automáticamente implementaciones de lenguajes completos a partir de las especificaciones de la aplicación.
- Contiene librerías de especificaciones reusable.
PCCT
- Escrito inicialmente en C++ para generar compiladores en C++.
- Portado a JAVA y llamado ANTLR.XX
- Consta de 3 herramientas:
- ANTLRàgenerador de analizadores de sintácticos
- DLGàgenerador de analizadores léxicos
- SORCERERàgenerador de árboles sintácticos
"EN EL PRESENTE VÍDEO PODRÁN APRECIAR QUE ES UN COMPILADOR Y COMO FUNCIONA"
CIBERGRAFÍA
- https://www.ecured.cu/Compiladorhttps://www.ecured.cu/Compilador
- https://www.youtube.com/watch?v=5I_0N7S41HQ
- https://www.dlsi.ua.es/asignaturas/pl/downloads/1415/tema1-1x2.pdf
No hay comentarios.:
Publicar un comentario