sábado, 8 de diciembre de 2018

COMPILADORES

¿ 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:
  1. Escribir el código de acciones.
  2. Compilar el fichero de especificaciones
  3. Compilar y ejecutar el programa generado
  4. Localizar errores del programa
  5. 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:
  1. ANTLRàgenerador de analizadores de sintácticos
  2. DLGàgenerador de analizadores léxicos
  3. SORCERERàgenerador de árboles sintácticos






"EN  EL PRESENTE VÍDEO PODRÁN APRECIAR QUE ES UN COMPILADOR Y COMO FUNCIONA"




CIBERGRAFÍA




No hay comentarios.:

Publicar un comentario