Investigación Documental Sobre Las Herramientas Computacionales Que Existen Para El Diseño de Un...

4

Click here to load reader

description

Investigación Documental Sobre Las Herramientas Computacionales Que Existen Para El Diseño de Un Lenguaje de Programación y de Un Compilador

Transcript of Investigación Documental Sobre Las Herramientas Computacionales Que Existen Para El Diseño de Un...

Page 1: Investigación Documental Sobre Las Herramientas Computacionales Que Existen Para El Diseño de Un Lenguaje de Programación y de Un Compilador

Realizar una investigación documental sobre las herramientas computacionales que existen para el diseño de un lenguaje de programación y de un compilador. Posteriormente, elaborar una reflexión sobre dicha información con la finalidad de participar en este foro. Recuerde que siempre debe indicar las citas y las referencias correspondientes de donde se obtuvo esta información.

Previo a abordar el tema de las herramientas para el diseño de un lenguaje de programación y un compilador hay que comprender el significado de ambos.

Jesús Rodríguez (2003) en su libro de Introducción a la Programación nos da una muy buena explicación del significado de un lenguaje de programación y lo que lo compone.

Cada ordenador entiende un cierto conjunto de instrucciones elementales (el lenguaje maquina), no obstante para facilitar la tarea del programador se dispone también de lenguajes de alto nivel más fáciles de manejar y que no dependen del diseño especifico del ordenador.

Para definir un lenguaje de programación es necesario especificar:

Conjunto de símbolos y palabras clave utilizables Reglas gramaticales para construir sentencias (instrucciones, ordenes) sintáctica y

semánticamente correctas.a) Sintaxis. Conjunto de normas que determinan como escribir las sentencias

del lenguaje.b) Semántica. Interpretación de las sentencias. Indica el significado de las

mismas. (p. 4)

Las reglas gramaticales que se necesitan seguir para la construcción de sentencias computacionales como se nos mencionó previamente son muy importantes a la hora de indicar instrucciones a una computadora ya que ésta trabaja bajo ciertas normas previamente establecidas, es por ello de que se deben respetar las reglas sintácticas y semánticas. Para facilitar el análisis de éstas reglas y que el compilador definido según Sergio Rojas (2005) como “aquel traductor que tiene como entrada una sentencia en lenguaje formal y como salida tiene un fichero ejecutable, es decir, realiza una traducción de un código de alto nivel a código” no tenga problemas para ejecutar las ordenes y sean efectivas de realizar para el procesador.

Las herramientas que podemos utilizar para que estas reglas se respeten y que el lenguaje de programación se convierta en lenguaje maquina por medio del compilador, Alfred Aho, Monica Lam, Rivi Sethi & Jeffrey Ullman (2008) nos las clasifican en su libro Compiladores de manera general de la siguiente forma:

Al igual que el desarrolladores de software, el desarrollador de compiladores puede utilizar para su beneficio entornos de desarrollo de software modernos que contienen herramientas como editores de lenguaje, depuradores, administradores de versiones, profilers, ambientes seguros de pruebas, etcétera. Además de estas herramientas

Page 2: Investigación Documental Sobre Las Herramientas Computacionales Que Existen Para El Diseño de Un Lenguaje de Programación y de Un Compilador

generales se han creado herramientas más especializadas para ayudar a implementar las diversas fases de un compilador, algunas de uso común son:

1. Generadores de analizadores sintácticos (parsers), que producen de manera automática analizadores sintácticos a partir de una descripción gramatical de un lenguaje de programación.

2. Generadores de escáneres, que producen analizadores de léxicos a partir de una descripción de los tokens de un lenguaje utilizando expresiones regulares.

3. Motores de traducción orientados a la sintaxis, que producen colecciones de rutinas para recorrer un árbol de análisis sintáctico y generar código intermedio.

4. Generadores de generadores código, que producen un generador de código a partir de una colección de reglas para traducir cada operación del lenguaje intermedio en el lenguaje máquina para una máquina destino.

5. Motores de análisis de flujos de datos, que facilitan la recopilación de información de cómo se transmiten los valores de una parte de un programa a cada una de las otras partes.

6. Kits (conjuntos), de herramientas para la construcción de compiladores, que proporcionan un conjunto integrado de rutinas para construir varias fases de un compilador. (p. 12)

Por otra parte, Sergio Gálvez (2005) en Traductores y Compiladores nos introduce otra “herramienta” a la que denomina meta compiladores y las define de la siguiente manera.

Un meta compilador es un compilador de compiladores. Se trata de un programa que acepta como entrada la descripción de un lenguaje y produce el compilador de dicho lenguaje. Hoy por hoy no existen meta compiladores completos, pero si parciales en los que se acepta como entrada una gramática de lenguaje y se genera un autómata que reconoce cualquier sentencia de lenguaje. A este autómata podemos añadirle código para completar el resto del compilador. Ejemplos de meta compiladores son Lex, YACC, Flex, BISON, JavaCC, JLex, Cup, PCCTS, Medise, etc.

Los meta compiladores se suelen dividir entre los que pueden trabajar con gramáticas de contexto libre y los que trabajan con gramáticas regulares. Los primeros se dedican a reconocer la sintáis del lenguaje y los segundos trocean los ficheros fuente y lo dividen en palabras. (p. 10).

Este tipo de herramientas son muy útiles en cuando es necesario el diseño y la construcción de un lenguaje de programación, es por ello que Sergio también explica la funcionalidad de manera general de algunas de las herramientas mencionadas previamente.

PCLex es un meta compilador que genera la parte del compilador destinada a reconocer las palabras reservadas.

Page 3: Investigación Documental Sobre Las Herramientas Computacionales Que Existen Para El Diseño de Un Lenguaje de Programación y de Un Compilador

PCYACC es otro meta compilador que genera la parte del compilador que informa sobre si una sentencia del lenguaje es válida o no.

JAVACC es un meta compilador que aúna el reconocimiento de palabras reservadas y la aceptación o rechazo de sentencias de un lenguaje.

PCLex y PCYACC generan código C y admiten descripciones de un lenguaje mediante gramáticas formales, mientras que JAVACC Produce código java y admite descripciones de lenguajes expresadas en notación BNF (Backus – Naur Form). (p. 10).

Estas herramientas han sido bastante utilizadas para la construcción de lenguajes de programación, sobre todo aquellos que son especializados en lenguajes específicos para hardware específico como sistemas embebidos, aunque pueden ser utilizadas para lenguajes más robustos con mucha mayor capacidad de desarrollo. Es indispensable conocer sobre la finalidad de estas herramientas y el entorno en que desempeñan debido a que será útil para el uso posterior en el curso.

Referencias.

Introducción a la programación. Teoría y Práctica. Jesús Javier rodríguez Sala 2003. Página 4.

Alfred Aho, Monica Lam, Rivi Sethi & Jeffrey Ullman (2008). Compiladores: Principios, técnicas y herramientas. (2da Ed.) Pearson. Página 19.

Traductores y Compiladores Con Lex/Yacc, JFlex/Cup Y Javacc. Sergio Gálvez Rojas 2005. Página 3, 10.